如题,最近在折腾 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 |