相对于主要写angular来说,所有的控制器就要添加注入需要用到的方法和模块。
先看开发过程的写法
app.controller('appCtrl',function($scope,$rootScope,$q,$window){
//$scope $rootScope $q $window
})
- 开发的时候美滋滋,测试也没有问题,但是如果压缩混淆上线,所有的变量的都会被改成单个字符,直接导致代码不能用
再看官方推荐写法
app.controller('appCtrl',['$scope','$rootScope','$q','$window',function($scope,$rootScope,$q,$window){
//$scope $rootScope $q $window
}])
- 标准的行业注入方式,压缩完以后正常使用,肯定是妥妥的,但是随着项目的越来越大,后期维护的成本大大的增加了(行业注入要求变量一一对应),看起来也很不美观
下面推荐几种解决方法
-
安装方法
npm install –save-dev ng-annotate-loader
使用方法(webpack.config.js)
module: { loaders: [ { test: /src.*\.js$/, use: [{ loader: 'ng-annotate-loader' }], } ] }
-
安装方法
npm install -g ng-annotate
mac下需要sudo权限使用方法
angular.module("MyMod").controller("MyCtrl", ["$scope", "$timeout", function($scope, $timeout) { "ngInject"; ... }]);
-
安装方法
npm install –save-dev gulp-ng-annotate
使用方法(gulp.config)
var gulp = require('gulp'); var ngAnnotate = require('gulp-ng-annotate'); gulp.task('default', function () { return gulp.src('src/app.js') .pipe(ngAnnotate()) .pipe(gulp.dest('dist')); });