[爬坑]关于angularJS的controller文件压缩的问题

39 篇文章 0 订阅

前言

独自摸索最大的麻烦就是遇到奇怪的问题,比如我一下午都在爬一个坑,就是angularJS的controller文件用gulp打包压缩后网页上一直报错。期初还以为是angularJS的版本问题,傻逼比地翻墙去下载各种版本的angular.min.js文件,结果一个个试过去还是没把问题解决。最后还是无意中发现controller文件未打包前没有报错,而打包后就报“Unknown provider: eProvider <- e”错误,恍然大悟!

解决办法

方法一

controller一般书写时按照简写的格式:

angular.module("MyMod").controller("MyCtrl", function($scope, $timeout) {  });

但是压缩js会破快AngularJS文件所需的依赖注入,以至于无法工作,因此压缩前你需要将代码手动修改为下面的形式:

angular.module("MyMod").controller("MyCtrl", ["$scope", "$timeout", function($scope,$timeout) { }]);

方法二

简单介绍下ng-annotate这个项目,它会自动帮你做这件事^_^,这个项目正好提供了gulp的插件。

gulp配置文件:

var gulp = require('gulp');  
var ngAnnotate = require('gulp-ng-annotate');  
var gutil = require('gulp-util');  
var bower = require('bower');  
var uglify = require('gulp-uglify');  
var concat = require('gulp-concat');  
var minifyCss = require('gulp-minify-css');  
var rename = require('gulp-rename');  
var sh = require('shelljs');  
var ngmin = require('gulp-ngmin');  //没错,就是她了。别忘了先用npm下载到node_modules目录然后添加到package.json里
var stripDebug = require('gulp-strip-debug');  

gulp.task('minify', function() {  
    return gulp.src(['js/appService.js','js/app.js']) //注意,此处特意如此,避免顺序导致的问题
        .pipe(ngAnnotate())
        .pipe(ngmin({dynamic: false}))  
        .pipe(stripDebug())  
        .pipe(uglify({outSourceMap: false}))  
        .pipe(concat('all.min.js'))  
        .pipe(gulp.dest('js/'))  
});   

@参考 小刀 《使用gulp压缩合并AngularJS项目中js》

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值