在一个非常基本的Angular应用程序中我们有
<head>...
<script src="app.js"></script>
<script src="maincontroller.js"></script>
应用程序定义应用程序模块,然后控制器挂起应用程序app.controller(“MainController ..”)如果两个脚本的顺序相反,应用程序将抛出错误“应用程序未定义”。< / p>
是否有解决此加载顺序依赖关系的方法?我担心随着它变得越来越复杂,我将获得脚本顺序依赖。也许我可能也想加载我的脚本异步。
谢谢。
答案 0 :(得分:3)
例如,请参阅此plunker:http://plnkr.co/edit/kqVqTHxl4tc6mIV5bDbQ
我在自己的文件SomeService
中定义了svc.js
。我在app.js
中定义了模块和主控制器。即使MainController
依赖于“稍后加载”的服务,依赖关系也会被计算出来并注入。您应该担心的是:首先放置模块定义。
另外:不要将应用程序存储在名为app
的全局变量中,而是使用带有模块名称的angular.module
来检索对它的引用:
angular.module('SomeModuleName').controller(...)
任何类型的全局变量通常都不是一个好习惯。
答案 1 :(得分:2)
请使用Angular and Browserify或Angular and RequireJS。 Browserify和RequireJS是模块加载器,允许您在index.html中保留1个脚本引用。
Browserify基于构建步骤,将所有JS捆绑到1个文件中。
RequireJS是一个异步模块定义(AMD)加载器,可以异步加载文件。