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 · 5109 次点击
    这是一个创建于 3207 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,最近在折腾 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   ·   实用小工具   ·   1080 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:26 · PVG 03:26 · LAX 11:26 · JFK 14:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.