AngularJS结合RequireJS做文件合并压缩的这一个坑

baseUrl:所有的模块(般就是js)都相对于那一个途径存在。

那些坑

本文地址 :http://www.cnblogs.com/lovesong/p/5116355.html

当文件配置好后,就执行命令合并压缩

比如在mian.js里面这么加载模块,在联合时候会发觉第二层的require并不曾被统一到。

PS:简单说法就是,合并压缩可以,变量名无法歪曲(总以为新奇),感觉题目暂时无解。

require([ "COMMON"], function(){
     require([ "angular", "LOGIN" ], function(angular){
           //....
     });
});
({
     baseUrl:"../",
     paths: {
         //...
     },
     shim: {
         //...
     },
     optimize: "uglify2",
     uglify2: {
        mangle: false  //false 不混淆变量名
     },
     findNestedDependencies: true,
     name: "js/main",
     out: "../js/main-built.js"
})
commonModule.controller( "broswerCtrl" ,["$scope" ,"$sce" , function ($scope,$sce){

安装nodejs

2.
或多或少信赖库需要写整个相对路径才能做联合。

3.
联结之后可以运行,加上压缩就不得以。

4.
次之层的require,做统一的时候,是统一不出去。

findNestedDependencies:寻找require()里面的require或define调用的依靠。

r.js配合requirejs模块写法对文件举行合并,压缩,下载地址: https://github.com/jrburke/r.js

optimize:优化脚本文件的办法,有下边5种取值格局。

node r.js -o build.js

可是我的满贯应用就是这样定义,并不曾给它注入错误的机遇。最终在无奈之下,就只好安排mangle:
false,不混淆变量名,这样做后,合并压缩的文书就能科学运用了!!!

正文为原创著作,转载请保留原出处,方便溯源,如有错误地点,谢谢指正。

本人在项目利用了AngularJS框架,用RequireJS做异步模块加载(AMD),在做文件合并压缩时,碰着了有的坑,有些只是釜底抽薪了,但不理解原委。

其一build.js就是r.js使用的配备文件,而main.js就是RequireJS的main文件。在统一压缩时候,build.js文件之中也亟需写paths,而且依旧跟main.js一样,我很想拿到为啥就无法识别main里面的require.config的paths,省得合并的时候还要将paths拷贝过来(我试过build.js里面没有paths,是不可以集合的)。(-_-!!!)

PS:配置属性还有众多,就不一细长说了,有篇作品写得很详细,地址:http://segmentfault.com/a/1190000002403806#articleHeader37

在品种里, 我动用一个叫layer的第三方库(库是以requireJS
define写的),一开头只做开发时候,在paths配置了路线后,使用此库只需要用个简称(define倚重时候)。
但在做统一时候,竟然指示文件不设有(因为平昔拿简称去拼文件地方了),无奈之下只能修改这一个库的应用办法,全体用到到那一个库的都写整个相对路径,这几个时候开发和做联合才没有错。

RequireJS模块的统一压缩仍然相比较简单的,可是境遇AngularJS,在缩减方面就多少问题了,近来没找到如何更好措施。

其一是最惨重问题,最要紧问题,最要紧问题。在文书合并压缩后,使用文件时候,AngularJS运行就不健康了,总是报模块开端化退步,Failed to instantiate module common due
to: Error: [$injector:unpr] Unknown provider:
e,如下图。 图片 1

粗略布置

  • uglify:(默认) 用UglifyJS压缩。
  • uglify2: 用UglifyJS2( 2.1.2+)压缩。
  • closure: 使用Google’s Closure Compiler 简单优化形式压缩文件,
    仅在优化工具使用Java有效。
  • closure.keepLines:跟closure参数一样, 只然则保留换行符。
  • none: 不做缩减。

 

联合准备

配备文件最好写一个build.js,如下:

很要紧的一个点就是,不减价扣能够用,一旦压缩了(用了默认的滑坡),使用就会报错。所以考虑必定某些事物被“压坏”了,网上某些作品都说是需要下面那样写AngularJS
cntroller、directive等,使用的劳务用字符串定义。

下载r.js

这会儿急需在build.js加findNestedDependencies: true, 这时才相会并第二层。

总结 

1.
build.js里面的paths必须跟main.js里面的保持一致。

文本合并压缩基于nodejs,所以先安装nodejs,下载地址: http://blog.nodejs.org/2013/07/25/node-v0-10-15-stable/

此处就讲几个重点特性:

相关文章