MVC与minification和require.js捆绑在一起

时间:2014-05-07 20:56:30

标签: javascript asp.net-mvc angularjs requirejs

我正在构建一个MVC应用程序并在其中使用angular和require.js。

我已将我的JS文件定义如下。

第一个JS文件:

define(function (require) {
    'use strict';
     var angular = require('angular');
     var app = angular.module('App');

     app.service('Service1', function () {
     });
}); 

第二个JS文件:

define(function (require) {
    'use strict';
     var angular = require('angular');
     var app = angular.module('App');

     app.service('Service2', function () {
     });
});

在require js配置中,我给出了脚本包的路径,可以看到JS文件被捆绑和缩小并加载。但是我们收到错误“ Service2未定义”。

当我合并这两个文件或从单个文件中删除“ define(function(require)”)时,一切正常。

合并文件:

define(function (require) {
    'use strict';
     var angular = require('angular');
     var app = angular.module('App');

     app.service('Service1', function () {
     });

     app.service('Service2', function () {
     });
});

第一个JS文件:

    'use strict';
     var angular = require('angular');
     var app = angular.module('App');

     app.service('Service1', function () {
     });

第二个JS文件:

    'use strict';
     var angular = require('angular');
     var app = angular.module('App');

     app.service('Service2', function () {
     });

我无法合并上面的文件,因为我有大量的JS文件。

如果我删除“ define(function(require)”,我不能100%确定会产生什么影响。

在我的场景中使用MVC的捆绑和缩小功能的最佳方法是什么?

感谢。

1 个答案:

答案 0 :(得分:1)

传递给define的函数在其他东西需要之前不会运行。所以你的服务2没有定义错误可能是因为你没有明确要求它。

require(['First', 'Second'], function () {
    //Use Service1 and Service2
});