缩小Angular不更新模板?

时间:2017-05-30 13:01:20

标签: javascript angularjs aem minify

角度发展相当新,请耐心等待。 我碰巧正在为AEM 6.2开发组件,使用angular使用gulp通过在gulpfile中执行以下操作来缩小所有组件的js:

var uglify = require('gulp-uglify');
var pump = require('pump');
var gp_concat = require('gulp-concat');
var gp_rename = require('gulp-rename');
var gp_ignore = require('gulp-ignore');
var gp_htmlmin = require('gulp-htmlmin');
var templates = require('gulp-angular-templatecache');

var paths = require('../paths');
var utils = require('../utils');

var base = [
  paths.APP,
  paths.ETC,
  paths.DESIGN
];

gulp.task('minify', function () {
  var filesToInclude = ['**/app/components/**/*.js '];
  var excludeCondition = '**/*.spec*.js'
  return gulp.src(filesToInclude)
    .pipe(gp_ignore.exclude(excludeCondition))
    .pipe(gp_concat('all.concat.js'))
    .pipe(gulp.dest('dist'))
    .pipe(gp_rename('all.min.js'))
    .pipe(plugins.ngAnnotate())
    .pipe(uglify())
    .pipe(gulp.dest('dist'));
});

现在js的缩小是完美的。但是,在模板(即每个组件的html)中,对控制器的引用不使用缩小名称。例如,代替缩小的控制器名称,它仍然使用原始控制器名称:

<section data-ng-controller="MyController as mc" ng-cloak>
  <div class="mc-name">
    Hi, {{mc.userName}}
  </div>
</section>

同样,我对角度很新,所以我不确定模板和控制器是如何以缩小知道更新所有引用的方式链接的。有人可以帮我解释一下我所缺少的东西吗?谢谢!

2 个答案:

答案 0 :(得分:1)

我在AEM6.1中有一个类似的问题,从内存中它与缩小IE的竞争版本有关:YUI Compressor。我伸展自己的记忆,但我相信YUI Compressor的6.1版本已经过时了。我记得它在6.2中更新了,但我仍然怀疑它可能与你的角度缩小竞争,可能是最新的。基本上,你试图缩小两次,可能还有不同版本的YUI Compressor。

现在你可以在AEM中关闭缩小,只需运行Angular缩小(理论上),但我不建议这样做,因为这意味着任何AEM clientLib都不会缩小。

或者,不要使用角度编译器缩小,允许AEM为您进行缩小。我认为这就是我当时所做的。虽然我记得在某些时候通过adobe daycare获得了一个修补程序,但我无法确定,这是几年前的事情。

答案 1 :(得分:1)

请尝试使用带有vm和注入器语法的控制器

`rmToolkit.controller('QuestionsCtrl', QuestionsCtrl);
 QuestionsCtrl.$inject = ['$scope', '$rootScope', '$stateParams', '$state','Data_Service'];
 function QuestionsCtrl($scope, $rootScope,) {
   var vm = this;
}`

希望这种语法能解决缩小问题