Minifying Angular应用时产生的问题
一、产生的问题
如果你正在进行AngularJS的项目开发,生产时Minified JS文件有没有遇到下面问题:
angular.module("myApp", [])
.controller("mainController", function($scope) {
$scope.message = "Hello, Benjamin!";
});
在这个例子中,Angular解析后知道它需要使用$scope依赖,下面我们看看最小化的情况:
angular.module("myApp",[]).controller("mainController",function(a){a.message="Hello, Benjamin!";});
Minified后$scope被最小化成了变量a,此时Angular无法去解析声明的依赖。因此会报错。
二、解决方式
那么如何解决这个问题呢?下面是一些解决方式,如果你有其它好的解决方式,欢迎留言。
方式一:显示声明依赖注入
var mainController = function($scope) {
$scope.message = "Hello, Benjamin!";
};
angular.module("myApp", [])
.controller("mainController", mainController);
mainController['$inject'] = ['$scope'];
Minified
var mainController=function(a){a.message="Hello, Benjamin!";};angular.module("myApp",[]).controller("mainController",mainController);mainController["$inject"]=["$scope"];
方式二:内嵌式依赖
angular.module("myApp", [])
.controller("mainController", ['$scope', '$http', function($scope, $http) {
$scope.message = "Hello, Benjamin!";
}]);
Minified
angular.module("myApp",[]).controller("mainController",["$scope","$http",function(a,b){a.message="Hello, Benjamin!";}]);
这种方式,在使用模块化时需要我们有好的编码习惯。
方式三:使用ng-annotate
关于ng-annotate的详细信息请戳这里,常使用在NodeJS环境。 Install:
$ npm install -g ng-annotate
Using:
$ ng-annotate OPTIONS <file>
使用时,我们可以结合Gulp、Grunt等自动化工具使用,提高开发效率。
三、方式对比
对比以上方式,个人比较偏向方式二,但是如果项目(自动化)生产中已经产生此问题,可配合gulp,Grunt自动化工具使用解决问题则较为方便。
转载声明:
本文标题:Minifying Angular应用时产生的问题
本文链接:http://www.zuojj.com/archives/1069.html,转载请注明转自Benjamin-专注前端开发和用户体验
Minifying Angular应用时产生的问题的更多相关文章
- 在Xshell 运行angular 项目时,找不到node-sass模块,安装node-sass模块时,又出现权限问题
情景再现: 运行时的报错找不到node-sass模块 接着安装node-sass模块出现权限问题 解决方法:既然是权限问题,那么就给项目添加权限指令,在npm前面添加# sudo ,命令如下: 这样就 ...
- Angular移除不必要的$watch之性能优化
双向绑定是Angular的核心概念之一,它给我们带来了思维方式的转变:不再是DOM驱动,而是以Model为核心,在View中写上声明式标签.然后,Angular就会在后台默默的同步View的变化到Mo ...
- Angular通过XHR加载模板而限制使用file://(解决方案)
编写angular项目时,遇到此困难: angular.js:12011 XMLHttpRequest cannot load file:///E:/angular/imooc/chapter2/bo ...
- 为什么angularjs使用ui-router时要使用html5Mode?
为什么我们要在使用angular ui-router时要使用html5Mode=true这个呢? 在angular中,你在访问链接时,可能访问的链接为"#/link". 如果你设置 ...
- [Angularjs]angular ng-repeat与js特效加载先后导致的问题
写在前面 最近在项目中遇到这样的一个前端的bug,在ng-repeat中绑定的图片,有一个晃动的特效,在手机端浏览的时候,图片有时候会正常展示,有时就展示不出来.当时猜测是因为angularjs与特效 ...
- 示例可重用的web component方式组织angular应用模块
在online web应用中,经常有这样的需求,能够让用户通过浏览器来输入代码,同时能够根据不同的代码来做语法高亮.大家已知有很多相应的javascript库来实现语法高亮的功能,比如codemirr ...
- quora 中有关angular与emberjs的精彩辩论
原贴地址,要注册才能看,这里只有国人翻译的一部分内容 本文源自于Quora网站的一个问题,作者称最近一直在为一个新的Rails项目寻找一个JavaScript框架,通过筛选,最终纠结于Angular. ...
- Angular.js vs Ember.js
Angular.js 拥抱 HTML/CSS Misko Hevery(Angular.js的开发者之一)回答了这一问题,他的主要观点如下: 在HTML中加入太多逻辑不是好做法.Angular.js只 ...
- jqueryui autocomplete的使用与angular配合的小坑
刚开始在做搜索联想功能时,使用了jquery.autocomplete.js插件,当并不理想,首先插件老旧,也只适合老版的jquery.其次在数组中只能联想到首字母一样的数据,比如[12,23,222 ...
随机推荐
- c++学习笔记——字面值常量类
字面值常量类:数据成员都是字面值类型的聚合类是字面值常量类.如果一个类不是聚合类,但是它符合一下要求,则它也是个字面值常量类: 1.数据成员都必须是字面值类型. 2.类必须至少含有一个constexp ...
- hdu 1797 靠谱的算法应该是最大生成树,但是本人用最大流做的
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 22294 Accepted: ...
- B站运维团队成长的血泪史
胡凯,bilibili运维负责人,曾经就职于金山软件.金山网络.猎豹移动,负责运维相关工作.Bilibili是国内最大的年轻人潮流文化娱乐社区,银河系知名弹幕视频分享UGC平台. 95后二次元新人 ...
- ZERO 笔试
1.大多考到了 计算机网络 tcpip 和 操作系统 多线程的知识 直接 懵逼 2. 考到了 递归的全排列 #include<iostream> using namespace s ...
- PHP--目录处理
__file___ dirname(): dirname()与__file__的组合:dirname(__file__)
- Scrum会议(Beta版本)
组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...
- poj 3841 Double Queue (AVL树入门)
/****************************************************************** 题目: Double Queue(poj 3481) 链接: h ...
- zlib快速编译脚本
zlib允许使用IDE编译生成dll以及静态库,高版本写一个脚本就能轻松的一键编译生成静态/动态lib以及dll文件 以下是一句话编译批处理脚本 nmake -f win32\Makefile.msc ...
- MySQL-->基础-->001-->MySQL基本操作
一.MySQL安装 卸载mysql 第一步 sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-ser ...
- 揭开HTTP网络协议神秘面纱系列(二)
HTTP报文内的HTTP信息 HTTP协议交互的信息被称为HTTP报文,请求端的HTTP报文叫做请求报文,响应端的叫做响应报文. HTTP为了提升传输速率,其在传输数据时,按照数据原样进行压缩传输,相 ...