简化angular1依赖注入

来源:互联网 发布:新开淘宝每天流量100人 编辑:程序博客网 时间:2024/06/05 02:32

相对于主要写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    }])
  • 标准的行业注入方式,压缩完以后正常使用,肯定是妥妥的,但是随着项目的越来越大,后期维护的成本大大的增加了(行业注入要求变量一一对应),看起来也很不美观

下面推荐几种解决方法

  1. ng-annotate-loader(适用webpack)

    安装方法

    npm install –save-dev ng-annotate-loader

    使用方法(webpack.config.js)

        module: {      loaders: [        {          test: /src.*\.js$/,          use: [{ loader: 'ng-annotate-loader' }],        }      ]    }
  2. ng-annotate(全局安装)

    安装方法

    npm install -g ng-annotate
    mac下需要sudo权限

    使用方法

        angular.module("MyMod").controller("MyCtrl", ["$scope", "$timeout", function($scope, $timeout) {            "ngInject";         ...      }]);
  3. gulp-ng-annotate(适用gulp)

    安装方法

    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'));    });