编写 JavaScript 使用哪些模块化管理工具?

2016-02-16 17:11:29 +08:00
 NicholasNC

如题,最近在折腾 js 的模块化开发,看了SeaJSRequireJS

但是这两种工具各说各有理,想听听大家对这两种工具的评价

- 这两个的适用空间有分别有哪些?

- AMD 标准和 CMD 标准的差异

- 除了这两个之外,还有没有其它常用的模块化开发工具?

5138 次点击
所在节点    JavaScript
20 条回复
plqws
2016-02-16 17:19:57 +08:00
现在比较流行的是 CommonJS Module ,其实还是 `var foo = require('foo');`
至于在浏览器上运行的话,一般是用 Browserify 或者 WebPack 将程序代码和所有依赖封装成单个 js
另外都 2016 年了,应该去拥抱一下 ES6+ 了: `import { foo, bar } from 'foo';`,配合 Babel.js 和上面提到的两个封装工具就能写出现代的 Web 端 JS 了。
Jaylee
2016-02-16 17:30:13 +08:00
CMD 推崇依赖就近,可以把依赖写进代码的任意一行。

AMD 是依赖前置的,在解析和执行当前模块之前,必须指明当前模块所依赖的模块。
chemzqm
2016-02-16 18:17:20 +08:00
webpack 可以支持 CMD AMD es6 , SeaJS 搞了一堆自己的 API ,一般应用并没啥用。
sodatea
2016-02-16 19:00:29 +08:00
看一下这个 Slides 吧 http://huangxuan.me/2015/07/09/js-module-7day/
另,[玉伯: SeaJS 已死]( https://github.com/seajs/seajs/issues/1605#issuecomment-149220246)

现在用 Webpack 就好,选用 CommonJS 或者 ES2015 module 然后打包

前端基础知识可以看那些经典书籍经典文章,但是介绍前端工具的嘛,就算是两年前的文章也很有可能过时了
glasslion
2016-02-16 19:56:04 +08:00
webpack + es6 风格的 module
zxgngl
2016-02-16 20:43:41 +08:00
建议用 TypeScript 的 module 。
NicholasNC
2016-02-16 21:54:06 +08:00
谢谢各位的宝贵建议,
看来前端的技术更新速度确实很快,在下刚自学不久,之前有接触过一下 requireJS,今天偶然碰到了 SeaJS,还以为很新鲜,就研究了一下.
看来走前端之路要时刻关注前线.
Wangxf
2016-02-16 22:04:18 +08:00
现在很多公司主力 requirejs ,可以了解下 webpack
NicholasNC
2016-02-16 22:20:55 +08:00
@Wangxf 是的,现在跟的一个项目用的是 requireJS,
打算先深入研究 requireJS,个人认为只要有能掌握一项,其它新的技术也应该大同小异,
有了基础,上手会比较容易.
个人拙见,还望指正.
zhuangzhuang1988
2016-02-16 23:02:02 +08:00
typescript + webpack ..
yuetsh
2016-02-17 00:07:39 +08:00
用 typescript 吧
yunkou
2016-02-17 01:44:17 +08:00
webpack + 1
Niphor
2016-02-17 08:38:05 +08:00
seajs 我感觉是自己搞死自己的,原则上之前是可以和 requirejs 拼一下的,接着去除了 shim 不支持 cmd 各种削减功能,搞得 js 还得自己加 script 标签,自己搞打包,虽然可能内部有支持用得起来,但是大众用的太痛苦了。

然后现在都 webpack 了,但是 webpack 一直说自己不是 module loader ,然后 CDN 资源很难引入,搞得又有人搞了个轮子 $script

我就想问下大家,要是我要 require 比如 百度地图 JS 版,我该怎么用 webpack 打包?
求不用 $script 不用 script 标签的
morethansean
2016-02-17 09:08:10 +08:00
@Niphor 直接用 script 或者 $script 会给你带来什么负担?以及你个人期望最好的方式是什么?
Niphor
2016-02-17 09:26:03 +08:00
@morethansean
这边撇开 SPA 不谈,只说一些传统页面

比如要用 百度地图 JS 版,因为不开源只能用 URL 引用,而且链接带 key

用 requirejs 或者 seajs 的时候 起码只要配置下 config ,然后再 require 就行了

用 webpack ,要么必须每个页面,写个 script ,假如要换个 key ,那么得遍历搜索一番,另外百度地图也有自己的开源 lib 库,依赖就只能靠 script 标签顺序来保证 直接回到原始社会

$script 则是没办法的产物,有 require , require.ensure 但是没卵用,只能自己再造个$script

最期望的当然是 webpack 能支持,或者能有插件支持。
minggeJS
2016-02-17 11:05:51 +08:00
SeaJS 和 RequireJS 是不错的,但你要清楚一点,是别人的框架在 AMD , CMD

好像先前一位群员说自己的 PHP 程序是 MVC ,我就问他,你用什么框架,他说用 TP 框架,我就来一句,是 TP 就 MVC ,不是你在 MVC ,你站在肩膀头上不腰痛吗!

----------------------minggeJS 之父回复
RaymondYip
2016-02-17 15:02:39 +08:00
webpack + es6 吧
caiya21
2016-02-17 16:01:11 +08:00
webpack/rollup es6
hpoenixf
2016-02-18 09:49:52 +08:00
webpack,browserify
yolio2003
2016-02-24 11:00:22 +08:00
百度的 esl

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/256889

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX