位置: 编程技术 - 正文

小心!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验证正整数)

  • 个人所得税退税是什么意思?
  • 建筑企业差额征税如何开票
  • 新公司什么时候开始建账
  • 购买土地的契税怎么计算
  • 税务师财务与会计难不难
  • 安置残疾人税收优惠
  • 申请高新时需要几个项目
  • 企业所得税完税凭证在哪里打印
  • 提供洒水车服务税率
  • 企业报税盘入账应该记入哪个科目
  • 丢失支票补救措施
  • 二手设备进口海关
  • 单位出租厂房如何开票
  • 个体户国税定额开发票60000元地税要交多少钱?
  • 超市开发票要交百分之几的税?
  • 酒店怎么缴纳增值税费用
  • 退股支付的现金流量表怎么填
  • 同一个单位,应收应付都有,怎么调账
  • 购进材料再销售怎么会计分录
  • 简易征收发票认证了之后怎么处理
  • 外汇汇兑损益怎么做账
  • 营业收入存入银行分录
  • 如何解决电脑无法定位程序输入点
  • 关闭guest账户
  • 关联交易认定标准税务
  • 税率抵扣计算公式
  • 公司内部收据能做凭证吗
  • 预付账款可以为负吗
  • 检验费用会计分录
  • Win11 Build 22449.1000更新里哪些内容?Win11 Build 22449更新介绍与安装方法
  • 利息股息红利个税计算表
  • regsvr32 shmedia.dll
  • 解决办法总比困难多
  • vue如何配置环境变量
  • 增值税减免税的征管规定有哪些
  • 可抵扣增值税有哪些
  • 固定资产明细账登记
  • 业务招待费调增后仍然亏损
  • 注册公司时的注册资金
  • 折旧与摊销会计分录
  • reset fields
  • des算法加密解密过程
  • vue全局组件和局部组件
  • 解决什么情况
  • python闭包主要解决什么问题
  • 本期应纳税额是怎么算
  • 购买工程物资是什么费用
  • EOFError:EOF when reading a line
  • 年终奖怎么计算个税
  • 其他权益工具投资
  • 存货成本核算方法的多久变更
  • 邮电通信企业业务收入包括哪些内容?
  • 公司转让商铺应交什么税
  • 房地产公司活动方案
  • 本期无销项税额,勾选抵扣的进项税填在哪里
  • 调研费属于什么会计科目
  • 口罩属于哪个科目 会计
  • 企业法人从公司怎么拿钱
  • 哪些项目的进项可以抵扣
  • 去年的物业费今年收到了可以确认收入吗
  • 息税前利润是什么税之前
  • 建账时应取得哪些资料
  • mysql数据库优化方案
  • mysql 5.7.18 winx64 免安装 配置方法
  • win7怎么彻底删除文件
  • Ubuntu 14.04/14.10如何安装记账软件HomeBank?
  • guardhp.exe是什么意思
  • mac os固件下载
  • win8.1应用商店无法打开
  • Win7电脑开机桌面黑屏只有鼠标
  • WIN10系统中读卡器驱动的正确安装程序
  • linux命令行怎么用
  • linux下忘记mysql密码的几种找回方法(推荐)
  • cocos预加载
  • 手把手教你把币从交易所提到钱包
  • unity的gui
  • jQuery 获取跨域XML(RSS)数据的相关总结分析
  • 怎么在开票系统导出开票明细
  • 餐饮企业需要缴纳哪些税
  • 通州税务短信
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设