angular-app如何引用其依赖项?

时间:2014-02-12 00:31:00

标签: javascript angularjs

我正在学习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']);

4 个答案:

答案 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,其依赖关系为ngRouteprojectsinfo。 因此,当启动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',[...]))。将模块添加到角度运行时后,可供其他角度模块使用。