位置: 编程技术 - 正文

小心!AngularJS结合RequireJS做文件合并压缩的那些坑(angularjs常用总结)

编辑:rootadmin

推荐整理分享小心!AngularJS结合RequireJS做文件合并压缩的那些坑(angularjs常用总结),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:angularjs2,angular.min.js,angular.json详解,angular script,angularjs1.5,angularjs1.5,angularjs常用总结,angularjs常用总结,内容如对您有帮助,希望把文章链接给更多的朋友!

在项目使用了AngularJS框架,用RequireJS做异步模块加载(AMD),在做文件合并压缩时,遇到了一些坑,有些只是解决了,但不明白原因。

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

这个build.js就是r.js使用的配置文件,而main.js就是RequireJS的main文件。在合并压缩时候,build.js文件里面也需要写paths,而且还是跟main.js一样,我很奇怪为什么就不能识别main里面的require.config的paths,省得合并的时候还要将paths拷贝过来(我试过build.js里面没有paths,是不能合并的)。(-_-!!!)

2. 某些依赖库需要写整个相对路径才能做合并。

在项目里, 我使用一个叫layer的第三方库(库是以requireJS define写的),一开始只做开发时候,在paths配置了路径后,使用此库只需要用个简称(define依赖时候)。 但在做合并时候,竟然提示文件不存在(因为直接拿简称去拼文件地址了),无奈之下只能修改这个库的使用办法,全部使用到这个库的都写整个相对路径,这个时候开发和做合并才没有错。

3. 合并之后可以运行,加上压缩就不可以。

这个是最严重问题,最严重问题,最严重问题。在文件合并压缩后,使用文件时候,AngularJS运行就不正常了,总是报模块初始化失败,Failed to instantiate module common due to: Error: [$injector:unpr] Unknown provider: e,如下图。

很关键的一个点就是,不压缩可以用,一旦压缩了(用了默认的压缩),使用就会报错。所以思考必定某些东西被“压坏”了,网上某些文章都说是需要下面这样写AngularJS cntroller、directive等,使用的服务用字符串定义。

可是我的整个应用就是这样定义,并没有给它注入错误的机会。最后在无奈之下,就只能配置mangle: false,不混淆变量名,这样做后,合并压缩的文件就能正确使用了!!!

PS:简单说法就是,合并压缩可以,变量名不能混淆(总觉得怪怪的),感觉问题暂时无解。

4. 第二层的require,做合并的时候,是合并不出来。

小心!AngularJS结合RequireJS做文件合并压缩的那些坑(angularjs常用总结)

例如在mian.js里面这样加载模块,在合并时候会发现第二层的require并没有被合并到。

这时需要在build.js加findNestedDependencies: true, 这时才会合并第二层。

合并准备

1、安装nodejs

文件合并压缩基于nodejs,所以先安装nodejs。

2、下载r.js

r.js配合requirejs模块写法对文件进行合并,压缩。

简单配置

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

这里就讲几个关键属性:

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

optimize:优化脚本文件的方式,有下面5种取值方式。

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

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

PS:配置属性还有很多,就不一细细说了。当文件配置好后,就执行命令合并压缩

总结

RequireJS模块的合并压缩还是比较简单的,但是遇到AngularJS,在压缩方面就有些问题了,目前没找到什么更好办法。

标签: angularjs常用总结

本文链接地址:https://www.jiuchutong.com/biancheng/383761.html 转载请保留说明!

上一篇:javascript跑马灯抽奖实例讲解(前端跑马灯实现)

下一篇:实例讲解js验证表单项是否为空的方法(js验证正整数)

  • 房产税应该怎么申报
  • 经营所得预缴申报时间
  • 会计记账凭证如何填制
  • 滴滴的普票可以抵税吗
  • 会计准则体系包括会计制度吗
  • 没有达到起征点的工资忘计申报个税,可以税前扣除吗
  • 已出库未开票未收款会计分录
  • 设定受益计划会计处理案例
  • 房地产企业购入用于建造商品房的土地使用权
  • 一般纳税人企业所得税政策最新2023税率
  • 公司出售厂房的增值税允许抵扣吗
  • 票据权利的概念与性质
  • 对外支付类型
  • 财务软件中摊销怎么做账
  • 其他综合收益是什么类科目
  • 应付供货单位的货款属于什么会计科目
  • 汇兑损益减少怎么记账
  • 以前年度损益调整编码
  • 小规模企业税务简易注销
  • 工会经费使用具体办法
  • 天猫魔投安装教程
  • 周转材料属于什么科目
  • win10系统如何开启蓝牙
  • awk命令怎么用
  • 补充医疗保险是六险吗
  • 年终奖发放管理制度
  • excel2019冻结
  • 增值税留抵退税账务处理
  • lstm多对多
  • PHP:image_type_to_extension()的用法_GD库图像处理函数
  • PHP:file_put_contents()的用法_Filesystem函数
  • 员工报销电话费缴纳个税
  • 浏览器并发请求队列数量怎么设置
  • 结转损益类收入的分录
  • thinkphp assign函数
  • element - - - - - 你不知道的loading使用方式
  • 2023新版拳击航母
  • [九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)
  • 数学建模 比赛
  • 稳岗补贴什么时候到账
  • 线程池中的一个线程执行完一个任务后
  • 公司借款方式
  • 年终奖影响社保缴费基数吗
  • 固定资产清理是三栏式还是多栏式
  • 去年的电费能查到吗
  • 固定资产折旧会影响净利润吗
  • 固定资产盘点怎么做
  • 不同企业可以开专票吗
  • 上缴非税收入的税种
  • 员工的提成
  • 小公司没有财务软件怎么手工记账
  • 进项税额转出如何申报
  • 事业单位有奖励吗
  • 以前年度多计提了费用
  • 费用报销票据规范要求
  • 会计中的材料采购是什么意思
  • 固定资产折旧残值率的最新规定2021
  • 管家婆记账可以都有凭证做吗?
  • 分公司开票总公司付款可以吗
  • 确定固定资产的标准
  • 工程发票可以作废吗
  • 记账凭证分为哪几类,应具备哪些主要内容
  • mysql alter table修改表命令整理
  • innodb_trx表
  • xp电脑显示屏显示不全
  • centos开机自动运行
  • WeatherEye.exe - WeatherEye 是什么进程
  • svchosl.exe - svchosl是什么进程 有什么作用
  • linux分区方案lvm
  • win8.1开机慢
  • opengl矩形
  • 贝塞尔曲线pr怎么用
  • js设计模式有什么用
  • 深入python3
  • js中的json
  • javascript入门基础
  • javascript文档对象
  • 税盘上怎么查每个月一共开了多少金额
  • 金融商品转让都包括什么
  • 公司外购设备对外投资账务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设