AngularJS中的模块究竟是什么?

时间:2015-11-06 14:35:06

标签: javascript angularjs javascript-framework

我在 AngularJS 中绝对是新手,我发现在尝试理解它是如何实现MVC模式时遇到了一些困难。

所以我首先怀疑这个例子中我有2个文件:

1) index.htm

<!DOCTYPE html>
<html lang="en-us" ng-app="angularApp">
    <head>
        <title>Introduction to AngularJS</title>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <meta charset="UTF-8">

        <!-- load bootstrap and fontawesome via CDN -->
        <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
        <style>
            html, body
            {
                font-size: 1.1em;
            }
        </style>

        <!-- load angular via CDN -->
        <script src="//code.angularjs.org/1.3.0-rc.1/angular.min.js"></script>
        <script src="app.js"></script>
    </head>
    <body>

        <header>
            <nav class="navbar navbar-default">
            <div class="container">
                <div class="navbar-header">
                    <a class="navbar-brand" href="/">AngularJS</a>
                </div>

                <ul class="nav navbar-nav navbar-right">
                    <li><a href="#"><i class="fa fa-home"></i> Home</a></li>
                </ul>
            </div>
            </nav>
        </header>

        <div class="container">

            <!-- This div and its content is the view associated to the 'mainController': -->
            <div ng-controller="mainController">

                <h1>Hello world!</h1>

            </div>

        </div>

    </body>
</html>

2) app.js 档案:

/* MODULE: one signgle object in the global namespace.
           Everything indise the element having ng-app="angularApp" custom attribute is connected to the angularApp variable into the
           global namespace
*/
var angularApp = angular.module('angularApp', []);

// CONTROLLERS
angularApp.controller('mainController', ['$scope', function ($scope) {

}]);

我发现在尝试确定谁是模型,谁是控制器以及谁是 VIEW 时遇到了一些困难。

因此,在我看来,了解html标记上定义的 ng-app =&#34; angularApp&#34; 属性:

<html lang="en-us" ng-app="angularApp">

将整个 index.htm 页面绑定到 angularApp 变量

var angularApp = angular.module('angularApp', []);

那么究竟代表 angularApp 变量的是什么?它是Angular 模块吗?什么是Angular中的模块?

3 个答案:

答案 0 :(得分:2)

你应该真正阅读https://docs.angularjs.org/guide。还有一个非常好的教程可以回答您的所有问题https://docs.angularjs.org/tutorial

最终,我发现没有办法绕过它。 AngularJs是一个复杂的框架,它有一个陡峭的学习曲线。

<html lang="en-us" ng-app="angularApp">表示<html>代码的内容由angularApp app控制,但index.html不是view,您可能会想到这一点。您应该将view视为directive附带的模板(即Angular组件)。

快速回顾一下Angular概念:https://docs.angularjs.org/guide/concepts

  

模块 - 应用程序不同部分的容器,包括   控制器,服务,过滤器,配置的指令   注射器

     

查看 - 用户看到的内容(DOM)

     

控制器 - 视图背后的业务逻辑

答案 1 :(得分:2)

来自angularjs.org文档

  

什么是模块?您可以将模块视为一个容器   您应用的不同部分 - 控制器,服务,过滤器,   指令等

     

为什么呢?大多数应用程序都有一个实例化和连线的主要方法   将应用程序的不同部分放在一起。

     

Angular应用程序没有主要方法。相反,模块是声明性的   指定应该如何引导应用程序。有几个   这种方法的优点:

     

声明性过程更容易理解。你可以打包代码   作为可重复使用的模块。模块可以按任何顺序加载(甚至可以加载   并行)因为模块延迟执行。单元测试只需要   加载相关模块,使它们保持快速。端到端测试可以使用   模块覆盖配置。

据说模块是你应用程序中的应用程序..在你的模块中你可以拥有控制器和模型..

答案 2 :(得分:1)

要理解Angularjs,你不能只停留在MVC模式中,使用angular可以使用此模式,但它更多MV *,模型视图无论你需要什么。

因此变量angularApp包含angularApp模块及其所有依赖项,控制器,提供程序,服务等...,模块可以是它所属的部分或整个应用程序。