AngularJS压缩JS技巧分析


Posted in Javascript onNovember 08, 2016

本文实例讲述了AngularJS压缩JS的操作技巧。分享给大家供大家参考,具体如下:

大多数web项目在发布时候都会对js代码进行压缩,目的是为了减少js文件的大小,节省一点流量。

它的原理很简单,就是对参数及部分变量名和函数进行重命名。

但是这种工作方式在AngularJS的应用中会有例外。

由于AngularJS的依赖注入是根据参数名进行注入的,显然,对参数进行重命名会破坏这个机制。

如果不进行特殊处理,进行压缩(minify)之后,在执行时将会出现这样的错误

Unknow provider: aProvider<-a

对于这种错误的官方解释是:找不到依赖的服务

也就是说这种依赖注入会出现错误。

好在AngularJS内置了一种标准机制来处理这个问题.

最简单也最常见的方式就是用数组代替函数。如:

.controller('RegisterCtrl', ['$scope', '$interval', '$timeout', function ($scope, $interval, $timeout) {
  //do something
}]);

数组的最后一个元素始终是一个函数,而前面几个参数都是字符串,和这个函数中的参数一一对应。

另一种形式便是所谓的Annotation方式。

var objCtrl = function($scope, $timeout, $interval){
  // do something
}
//给objCtrl函数增加一个$inject属性,它是一个数组,定义了需要被注入的对象
objCtrl.$inject = ['$scope', '$interval', '$timeout'];

这里的依赖注入形式不仅限于Controller,一切需要DI(依赖注入的directive、factory、services等)都可以采用这两种方式。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
javascript英文日期(有时间)选择器
May 02 Javascript
JS操作图片(增,删,改) 例子
Apr 17 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
Jun 05 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
jQuery统计指定子元素数量的方法
Mar 17 Javascript
js获取url传值的方法
Dec 18 Javascript
说说如何使用Vuex进行状态管理(小结)
Apr 14 Javascript
使用vue制作滑动标签
Sep 21 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
Jun 01 Javascript
Vue文本模糊匹配功能如何实现
Jul 30 Javascript
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
Ajax异步刷新功能及简单案例
Nov 20 Javascript
jQuery的Read()方法代替原生JS详解
Nov 08 #Javascript
bootstrap fileinput完整实例分享
Nov 08 #Javascript
AngularJS动态加载模块和依赖的方法分析
Nov 08 #Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 #Javascript
Javascript数组循环遍历之forEach详解
Nov 07 #Javascript
关于webuploader插件使用过程遇到的小问题
Nov 07 #Javascript
jQuery webuploader分片上传大文件
Nov 07 #Javascript
You might like
最小化数据传输――在客户端存储数据
2006/10/09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
Node.js文件操作详解
2014/08/16 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
python实现人人网登录示例分享
2014/01/19 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
zooplus波兰:在线宠物店
2019/07/21 全球购物
十岁生日同学答谢词
2014/01/19 职场文书
渡河少年教学反思
2014/02/12 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
交通文明倡议书
2014/05/16 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
《迟到》教学反思
2016/02/24 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
Mysql中存储引擎的区别及比较
2021/06/04 MySQL
图文详解matlab原始处理图像几何变换
2021/07/09 Python
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技