我正在学习Angular,所以请原谅我的天真...
angular-app示例应用程序中的app.js引用了client / src / commmon /中的各种依赖项,例如services.breadcrumbs。 Angular如何知道从“common”目录中引入这些依赖项?我在这个应用程序中没有看到一些配置吗?
相关代码:
angular.module('app', [
'ngRoute',
'projectsinfo',
'dashboard',
'projects',
'admin',
'services.breadcrumbs',
'services.i18nNotifications',
'services.httpRequestTracker',
'security',
'directives.crud',
'templates.app',
'templates.common']);
答案 0 :(得分:3)
查看https://github.com/angular-app/angular-app/blob/master/client/src/index.html
在那里你会看到以下几行:
<script type="text/javascript" src="/static/jquery.js"></script>
<script type="text/javascript" src="/static/angular.js"></script>
<script type="text/javascript" src="/static/mongolab.js"></script>
<script type="text/javascript" src="/static/bootstrap.js"></script>
<script type="text/javascript" src="/static/<%= grunt.config.get('pkg.name') %>.js"></script>
这是加载所有包的地方。这是由Grunt设置的,Grunt配置为将JavaScript文件连接在一起并创建实际提供的文件。您应该查看Grunt配置文件(https://github.com/angular-app/angular-app/blob/master/client/gruntFile.js)以了解如何配置它来执行此操作。我还不太了解Grunt,但是如果你知道要查看什么,你可以找到用于连接各种文件集的配置,然后将这些文件放在上面引用的文件名下的分发目录中。
答案 1 :(得分:0)
Angular没有依赖加载器(还)。
从第一个开始加载所有脚本。作为捆绑脚本,多个<script>
标签或由另一个脚本加载器手动引导
如果我要创建一个有角度的应用程序并希望使用上面的代码,我将不得不写
angular.module("myOwnApp", ["app"])
现在我的应用程序是您的依赖 你的应用程序取决于ngRoute,proj ...所以我必须以某种方式加载你的所有模块
答案 2 :(得分:0)
这是我理解的
简单地说,当你致电:
angular.module('app',[
'ngRoute',
'projectsinfo'
]
angular将知道您创建了一个模块app
,其依赖关系为ngRoute
和projectsinfo
。
因此,当启动app
时,它将从$injector
请求这两个依赖项,它负责模块依赖性。
因此,当$injector
被要求提供这两个模块时,它只是通过名称来寻找它们,例如模块POOL,$provide
。
简单地说,当你定义一个模块
时angular.module('projectsinfo',[])
它实际上只是将一个名为'projectsinfo'
的工厂函数放入POOL中。 $ injector将从中寻找模块。
关于common
derectory,因为你在一开始就加载angular.js,所以无论你在module
定义一个模块,它们都会转到同一个池
答案 3 :(得分:0)
在您的示例中,未从client / src / commmon加载services.breadcrumbs。 client / source / common中的脚本将加载到浏览器中。在浏览器加载时,脚本将自己添加到角度运行时(例如angular.module('service.breadcrumbs',[...]))。将模块添加到角度运行时后,可供其他角度模块使用。