1

目前我正在编写一个 Grunt Build 文件;它使用“usemin”我在 HTML 中创建了 3 个块,这将创建 3 个文件 assets.min.js 、 lib.min.js 等。

<!-- build:js js/assets.min.js --> 
<script type="text/javascript" src="app/assets/js/lib/angular.min.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-cache.min.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-route.min.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-animate.min.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-touch.min.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-cookies.min.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="app/assets/js/lib/jqueryui.min.js"></script>
<script type="text/javascript" src="app/assets/js/lib/bootstrap.min.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/bootstrap-switch.min.js"></script> 
<!-- endbuild -->

这工作正常。但是我面临两个主要问题......

  1. Angular 显示错误“未捕获的错误 [$injector:modulerr]..
  2. 似乎 Usemin 也在再次缩小文件。

我也尝试了第二个选项,只是连接这些文件,即绕过缩小步骤避免 Usemin .. 仍然是同样的错误

请指导

4

2 回答 2

0

Angular 使用一种叫做依赖注入的东西来解决你的参数。Angular 通过名称知道每个对象是什么。

“$scope”将被初始化为一个范围对象,因为它被命名为“$scope”。在 usemin 之后,此变量将被称为其他名称,例如“a”,以节省字节。Angular 不知道“a”是什么并抛出错误。

你可以像这样解决这个问题:

  1. 在此处阅读有关 Angular 应用程序的缩小 http://docs.angularjs.org/tutorial/step_05

  2. 在运行 uglify 之前手动遵循指南或使用ngmin进程。

希望这可以帮助!

于 2014-01-27T22:37:05.343 回答
0

你可以通过两种方式解决这个问题。
1.在usemin块中使用未缩小的文件

<!-- build:js js/assets.min.js -->
<script type="text/javascript" src="app/assets/js/lib/angular.js"></script>
<script type="text/javascript" src="app/assets/js/lib/angular-cache.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-route.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-animate.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-touch.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/angular-cookies.js"></script> 
<script type="text/javascript" src="app/assets/js/lib/jquery-1.10.1.js"></script>
<script type="text/javascript" src="app/assets/js/lib/jqueryui.js"></script>
<script type="text/javascript" src="app/assets/js/lib/bootstrap.js"></script>
<script type="text/javascript" src="app/assets/js/lib/bootstrap-switch.js"></script>
<!-- endbuild -->


2. 使用 grunt task 复制脚本

copy:{
  scripts:{
    files:[{
      expand: true, 
      cwd:'<%= config.app %>',
      dest: '<%= config.tmp %>', src: ['app/assets/js/lib/**/*.min.js']
    }]
  },
}
于 2014-10-21T07:56:34.893 回答