2015-11-06 108 views
0

假设我有一个目录结构类同以下一个中型AngularJS应用:我应该如何为我的AngularJS项目包含代码文件?

/app 
----app.js 
----index.html 

----/functionalityA 
--------/views 
------------pageA.html 
--------/controllers 
------------ctrlA.js 
------------ctrlB.js 
--------/directives 
------------directiveA.js 
--------/services 
------------serviceA.js 
------------serviceB.js 

----/functionalityB 
--------/views 
------------pageB.html 
--------/controllers 
------------ctrlC.js 
------------ctrlD.js 
--------/directives 
------------directiveB.js 
--------/services 
------------serviceC.js 
------------serviceD.js 

它有许多文件。我应该如何将它们全部包含在我的应用程序中?

一种方法是使用他们所有的<script>标签index.html

<script src="angular.js"></script> 
<script src="app.js"></script> 
<script src="functionalityA/controllers/ctrlA.js"></script> 
<script src="functionalityA/controllers/ctrlB.js"></script> 
<script src="functionalityA/directives/directiveA.js"></script> 
<script src="functionalityA/services/serviceA.js"></script> 
<script src="functionalityA/services/serviceB.js"></script> 
<script src="functionalityB/controllers/ctrlC.js"></script> 
<script src="functionalityB/controllers/ctrlD.js"></script> 
<script src="functionalityB/directives/directiveB.js"></script> 
<script src="functionalityB/services/serviceC.js"></script> 
<script src="functionalityB/services/serviceD.js"></script> 

这是一个可以接受的方法呢?

如果不是,我还可以采取哪些其他方法?

请注意,我的问题是关于理解包含项目.js文件的首选方法。我不问如何构建我的文件。

回答

0

首先 - 你应该根据它们的功能对文件进行分类 - 而不是根据类型。


如果你需要它们的功能,你需要包含你的JS文件。也许只有在需要时才可以包含它们。

您可以使用类似Requre JS这样的库。

或者您可以在动态视图中包含这些脚本标记,并在头中引用JQuery以动态包含它们。您可以使用ng-include

好消息是这些脚本可以包含控制器和指令,如果将它们以您在模块中即时注册的方式进行设置。

myApp.config(function($controllerProvider, $provide) { 
    myApp.controlProvider = $controllerProvider; 
    myApp.serviceProvider = $provide; 
}); 

myApp.serviceProvider.factory('myDynFactory', function(){ 
     return { 
        //Whatever you like 
     } 
}); 

myApp.controlProvider.register('myDynController', [function($scope) { 

    //Whatever you like 
}]); 
0

它不是不正确的包括在不同的脚本标记所有这些文件,但它们将分别创建服务器单独的请求。这不是非常有效,因为每个请求都会有自己的头文件和其他的臃肿文件。但是,如果服务器和浏览器都支持HTTP/2,这不会成为问题。

但是由于HTTP/2仍然是新的并且得不到广泛的支持,所以源文件通常会一起捆绑到一个文件中,或者按需延迟加载。

相关问题