require了依赖文件,可怎么对每个页面的js单独合并呢?如果是针对页面合并,那不是存在重复加载问题了?


请问我这样的情况改怎么办呢?我采用了requirejs和grunt对项目进行管理。每个页面一个js,require了依赖项,但这样请求数就非常多。用grunt打包目前只是按文件夹分类,把一个文件夹的js打包合并到一起,这样requirejs的作用就不存在了,还是整体的引入了不需要的东西。如果按页面打包,那整个项目又有很多重复的引用,依赖项都是重复的,就不存在按需加载了。

grunt requirejs

问题学生玉子 9 years, 4 months ago

不知道nginx的mod_concat模块对你这个有没有帮助。

mod_concat模块由淘宝开发,目前已经包含在tengine中,并且淘宝已经在使用这个nginx模块。不过塔暂时没有包含在nginx中。这个模块类似于apache中的modconcat。如果需要使用它,需要使用两个"?"问号.
来个范例:
http://example.com/??style1.css,style2.css,foo/style3.css
以上将原先3个请求合并为1个请求
如果你担心文件被用户的浏览器缓存而没有及时更新,你依旧可以带上一个版本号的参数,如下:
http://example.com/??style1.css,style2.css,foo/style3.css?v=102234

参考链接:
http://www.ttlsa.com/nginx/nginx-modules-concat/

其实,我也写过模块加载的东东
https://github.com/donghanji/pm
就考虑过在模块管理里面实现对于js文件的合并处理,不过最近没什么时间来处理这个,所以有这个想法也一直没有实现。
模块管理是前端处理的,文件合并返回是服务器端合并了返回的,所以二者不会存在冲突。
我在处理模块管理的过程中,也提供了一个coms的设置的,可以将多个模块进行合并,但是这个在实际使用中没有多大的实际意义。
还有一点就是我的模块管理,pm框架和require,seajs的实现方式是不一样的,感兴趣的话可以了解一下。
打算抽个时间,将plugins,modules部分重新整理一下,还有就是处理移动端相关的也打算开源上去。

戦場ヶ原玖依 answered 9 years, 4 months ago

Your Answer