本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/05/21/gulp-with-ng-annotate/
Angular中声明注入依赖的方法有三种
- 数组注解
- $inject属性
- 隐式注释
隐式注释虽然简单,但是在压缩代码的时候会出错,所以一般还是需要选用方法一或者方法二。
样例如下:
module.controller('controller', ['$scope', 'greeter', function($scope, greeter) {
// ...
}]);
var controller = function($scope, greeter) {
// ...
}
controller .$inject = ['$scope', 'greeter'];
module.controller('controller ', controller );
ng-annotate是专门处理这种情况的插件,因为对于注入的处理毕竟是为了程序运行,而不是开发逻辑需要,这种自动化交给插件比较快。
安装插件以后只需要加一个@ngInject就行了。
/* @ngInject */
function Avengers(storageService, avengerService) {
var vm = this;
vm.heroSearch = '';
vm.storeHero = storeHero;
function storeHero() {
var hero = avengerService.find(vm.heroSearch);
storageService.save(hero.name, hero);
}
}
ng-annotate会采用方案二生成需要的东西。
Gulp配置样例如下:
gulp.task('js', ['jshint'], function() {
var source = pkg.paths.js;
return gulp.src(source)
.pipe(sourcemaps.init())
.pipe(concat('all.min.js', {newLine: ';'}))
.pipe(ngAnnotate({
add: true
}))
.pipe(bytediff.start())
.pipe(uglify({mangle: true}))
.pipe(bytediff.stop())
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(pkg.paths.dev));
});
参考文档:
https://docs.angularjs.org/guide/di
http://bguiz.github.io/js-standards/angularjs/minification-and-annotation/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/05/21/gulp-with-ng-annotate/