编写 Javascript 使用哪些模块化管理工具? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
NicholasNC
V2EX    Javascript

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

  •  
  •   NicholasNC 2016-02-16 17:11:29 +08:00 5498 次点击
    这是一个创建于 3526 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    - AMD 标准和 CMD 标准的差异

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

    20 条回复    2016-02-24 11:00:22 +08:00
    plqws
        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 了。
    Jaylee
        2
    Jaylee  
       2016-02-16 17:30:13 +08:00
    CMD 推崇依赖就近,可以把依赖写进代码的任意一行。

    AMD 是依赖前置的,在解析和执行当前模块之前,必须指明当前模块所依赖的模块。
    chemzqm
        3
    chemzqm  
       2016-02-16 18:17:20 +08:00
    webpack 可以支持 CMD AMD es6 , SeaJS 搞了一堆自己的 API ,一般应用并没啥用。
    sodatea
        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 然后打包

    前端基础知识可以看那些经典书籍经典文章,但是介绍前端工具的嘛,就算是两年前的文章也很有可能过时了
    glasslion
        5
    glasslion  
       2016-02-16 19:56:04 +08:00
    webpack + es6 风格的 module
    zxgngl
        6
    zxgngl  
       2016-02-16 20:43:41 +08:00
    建议用 TypeScript 的 module 。
    NicholasNC
        7
    NicholasNC  
    OP
       2016-02-16 21:54:06 +08:00
    谢谢各位的宝贵建议,
    看来前端的技术更新速度确实很快,在下刚自学不久,之前有接触过一下 requireJS,今天偶然碰到了 SeaJS,还以为很新鲜,就研究了一下.
    看来走前端之路要时刻关注前线.
    Wangxf
        8
    Wangxf  
       2016-02-16 22:04:18 +08:00 via iPhone
    现在很多公司主力 requirejs ,可以了解下 webpack
    NicholasNC
        9
    NicholasNC  
    OP
       2016-02-16 22:20:55 +08:00
    @Wangxf 是的,现在跟的一个项目用的是 requireJS,
    打算先深入研究 requireJS,个人认为只要有能掌握一项,其它新的技术也应该大同小异,
    有了基础,上手会比较容易.
    个人拙见,还望指正.
    zhuangzhuang1988
        10
    zhuangzhuang1988  
       2016-02-16 23:02:02 +08:00
    typescript + webpack ..
    yuetsh
        11
    yuetsh  
       2016-02-17 00:07:39 +08:00
    用 typescript 吧
    yunkou
        12
    yunkou  
       2016-02-17 01:44:17 +08:00
    webpack + 1
    Niphor
        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 标签的
    morethansean
        14
    morethansean  
       2016-02-17 09:08:10 +08:00
    @Niphor 直接用 script 或者 $script 会给你带来什么负担?以及你个人期望最好的方式是什么?
    Niphor
        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 能支持,或者能有插件支持。
    minggeJS
        16
    minggeJS  
       2016-02-17 11:05:51 +08:00
    SeaJS 和 RequireJS 是不错的,但你要清楚一点,是别人的框架在 AMD , CMD

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

    ----------------------minggeJS 之父回复
    RaymondYip
        17
    RaymondYip  
       2016-02-17 15:02:39 +08:00
    webpack + es6 吧
    caiya21
        18
    caiya21  
       2016-02-17 16:01:11 +08:00
    webpack/rollup es6
    hpoenixf
        19
    hpoenixf  
       2016-02-18 09:49:52 +08:00
    webpack,browserify
    yolio2003
        20
    yolio2003  
       2016-02-24 11:00:22 +08:00
    百度的 esl
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2817 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 13:31 PVG 21:31 LAX 06:31 JFK 09:31
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86