本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: 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/