如题,最近在折腾 js 的模块化开发,看了SeaJS和RequireJS
但是这两种工具各说各有理,想听听大家对这两种工具的评价
- 这两个的适用空间有分别有哪些?
- AMD 标准和 CMD 标准的差异
- 除了这两个之外,还有没有其它常用的模块化开发工具?
1
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 了。 |
2
Jaylee 2016-02-16 17:30:13 +08:00
CMD 推崇依赖就近,可以把依赖写进代码的任意一行。
AMD 是依赖前置的,在解析和执行当前模块之前,必须指明当前模块所依赖的模块。 |
3
chemzqm 2016-02-16 18:17:20 +08:00
webpack 可以支持 CMD AMD es6 , SeaJS 搞了一堆自己的 API ,一般应用并没啥用。
|
4
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 然后打包 前端基础知识可以看那些经典书籍经典文章,但是介绍前端工具的嘛,就算是两年前的文章也很有可能过时了 |
5
glasslion 2016-02-16 19:56:04 +08:00
webpack + es6 风格的 module
|
6
zxgngl 2016-02-16 20:43:41 +08:00
建议用 TypeScript 的 module 。
|
7
NicholasNC OP 谢谢各位的宝贵建议,
看来前端的技术更新速度确实很快,在下刚自学不久,之前有接触过一下 requireJS,今天偶然碰到了 SeaJS,还以为很新鲜,就研究了一下. 看来走前端之路要时刻关注前线. |
8
Wangxf 2016-02-16 22:04:18 +08:00 via iPhone
现在很多公司主力 requirejs ,可以了解下 webpack
|
9
NicholasNC OP @Wangxf 是的,现在跟的一个项目用的是 requireJS,
打算先深入研究 requireJS,个人认为只要有能掌握一项,其它新的技术也应该大同小异, 有了基础,上手会比较容易. 个人拙见,还望指正. |
10
zhuangzhuang1988 2016-02-16 23:02:02 +08:00
typescript + webpack ..
|
11
yuetsh 2016-02-17 00:07:39 +08:00
用 typescript 吧
|
12
yunkou 2016-02-17 01:44:17 +08:00
webpack + 1
|
13
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 标签的 |
14
morethansean 2016-02-17 09:08:10 +08:00
@Niphor 直接用 script 或者 $script 会给你带来什么负担?以及你个人期望最好的方式是什么?
|
15
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 能支持,或者能有插件支持。 |
16
minggeJS 2016-02-17 11:05:51 +08:00
SeaJS 和 RequireJS 是不错的,但你要清楚一点,是别人的框架在 AMD , CMD
好像先前一位群员说自己的 PHP 程序是 MVC ,我就问他,你用什么框架,他说用 TP 框架,我就来一句,是 TP 就 MVC ,不是你在 MVC ,你站在肩膀头上不腰痛吗! ----------------------minggeJS 之父回复 |
17
RaymondYip 2016-02-17 15:02:39 +08:00
webpack + es6 吧
|
18
caiya21 2016-02-17 16:01:11 +08:00
webpack/rollup es6
|
19
hpoenixf 2016-02-18 09:49:52 +08:00
webpack,browserify
|
20
yolio2003 2016-02-24 11:00:22 +08:00
百度的 esl
|