JavaScript 模块化疑问

2014-12-30 15:57:27 +08:00
 pertersonvv

a.js define [b, c, d], function(){} ,
b.js [e, f, g], function(){},
e.js [h, i] , function(){} 包含a.js, requirejs是否会自动加载a b c d e f g h i 7个js文件?

加载7模块,要发送7次http请求,是不是有点多了?
可是把所有代码写在一个文件里面,是不是有点乱?

呵呵,大家是如何看到JS模块化这个问题的?

4149 次点击
所在节点    程序员
32 条回复
datou552211
2014-12-30 16:07:54 +08:00
会,实际上是执行了一遍代码,遇到重复加载的就会跳过
iwege
2014-12-30 16:12:44 +08:00
requirejs 有自己的optimize api,可以将文件合并。当然也可以自己合并。
pepsin
2014-12-30 16:16:41 +08:00
控制好粒度吧。最近看到一堆人鼻屎大的东西都搞个模块,也是惊了。
pertersonvv
2014-12-30 16:25:39 +08:00
@datou552211 合并后文件的文本顺序是否为 h i e f g c d a?
pertersonvv
2014-12-30 16:26:58 +08:00
@iwege 合并后,就一个a.js,其他几个都合并到a.js么?
jasonslyvia
2014-12-30 16:34:53 +08:00
骚年,有个东西叫 browserify,还有个东西叫 webpack,有兴趣的话可以在 server 端处理 js 的 combo,读一下 requirejs 的 config 就好
pertersonvv
2014-12-30 16:40:12 +08:00
@jasonslyvia 在浏览器中跑node模块,太夸张了吧,node依赖一堆的,网络怎么加载,node的文件接口,浏览器能执行?
miser
2014-12-30 16:41:08 +08:00
@pertersonvv 有试过合并吗?
damngood
2014-12-30 16:46:01 +08:00
@pertersonvv browserify 只是保持了 node 的接口, 对于不能在浏览器环境中运行的接口有做相应的 shim
pertersonvv
2014-12-30 16:49:09 +08:00
@damngood shim是装饰器吧,关键是浏览器JS不能读本地文件的啊,用了browserify,浏览器可以读写本地文件?
datou552211
2014-12-30 17:17:27 +08:00
browerify把require的包内容合并了
akfish
2014-12-30 17:20:40 +08:00
lz要是玩玩polymer还不被吓死,连HTML页面都是拆成无数块然后import进来的。
boom11235
2014-12-30 18:00:44 +08:00
前端模块化一直是个麻烦的问题,也有很多相关的解决方案出来,requirejs,seajs,duo,webpack,spm等。模块粒度过细,如果不打包或者服务器做combo,会导致请求过多,性能不好,一般不考虑在线上直接使用加载多个的方案,而combo和打包则需要考虑缓存失效问题,稳定下来的模块或者不怎么更新的第三方模块和经常变动的模块需要分开处理。细化下去,还有各种各样的细节问题,楼主请自行挖掘。
boom11235
2014-12-30 18:02:58 +08:00
楼主不用纠结浏览器JS读写本地文件的问题,browserify没说它提供本地fs的读写模块,请详见文档。browserify提供的模块大多都是在实际应用中在浏览器有使用价值和可能性的模块,而不是全包。
RoshanWu
2014-12-30 18:07:27 +08:00
pertersonvv
2014-12-30 18:10:49 +08:00
@pepsin 粒度怎么划分 才是合理的呢?
pertersonvv
2014-12-30 18:33:57 +08:00
@akfish 这货官网居然需要翻墙:(
kmvan
2014-12-30 18:52:36 +08:00
我也纠结过模块化合并的问题,我用的是 wp, 想要写个 php 合并程序来合并主题的 commonjs 模块。
一直在分析如何依赖和合并的优先级等问题,头都大。 你看我这博客 http://inn-studio.com 就是因为还没合并,init.js 模块文件一堆堆,哎。。。
ianva
2014-12-30 19:08:05 +08:00
如果是 requirejs 的话就 r.js,各种模块管理都有各自的方案
pertersonvv
2014-12-30 19:14:55 +08:00
@kmvan 这个wp主题你自己弄的?

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

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

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

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

© 2021 V2EX