如何构建 angular.js 应用程序

How to structure an angular.js app

我想知道构建 angular.js 应用程序的最佳方法。我相信所有指令都通过 ajax 请求下载各自的模板。因此,最好将 SPA 的每个不同部分作为一个单独的单元包含在一个指令中,并使用其自己的模板 html 和控制器:

<html>
    <head>
    </head>
    <body>
        <section>
            <directive1></directive1>
        </section>

        <section>
            <directive2></directive2>
        </section>

        <section>
            <directive3></directive3>
        </section>

    </body>

</html>

还是为 DOM 操作保留指令并将所有控制器嵌入主 html 页面更好:

<html>
    <head>
    </head>
    <body ng-app="myapp">
        <section ng-controller="controller1">
            ...
        </section>

        <section ng-controller="controller2">
            ...
        </section>

        <section ng-controller="controller3">
            ...
        </section>

    </body>

</html>

我想知道每种方法在性能、最佳实践等方面的优缺点是什么。 提前致谢。

两种方法几乎相同,因为它们都将完成相同的工作。

  • 方法 1 更容易理解。
  • 方法 1 可以实现代码的可重用性,因为相同的模板可以 用于表示同类模板。
  • 方法 1 实现模块化结构以更微妙的方式表示应用程序。

您是在将苹果与橙子进行比较。控制器调用服务来检索模型并将它们附加到您的 $scope(换句话说,它们初始化范围)。指令是您可以在视图中使用的可重用组件。

这两者并不相互排斥:您可以使用带指令的控制器、不带指令的控制器和不带控制器的指令。

在方法上比较它们是没有意义的。

我会全心全意地建议任何新建项目,您应该尽一切努力避免在您的应用程序中使用 ng-controller

这将避免很多心痛 if/when 您尝试将任何应用程序升级到 AngularJS 2.0 版,无论何时发布。它将与当前版本有很大不同,其中一项更改是将没有 ng-controller

我们发现他们鼓励开发人员走捷径,而不是设计松散耦合的模块化components/directives,我们最终可以得到一个紧密耦合的 n 层控制器层次结构。

鉴于 Angular 2.0

的声明方向,我发现这是一篇非常好的文章,其中包含要考虑的主题

http://teropa.info/blog/2014/10/24/how-ive-improved-my-angular-apps-by-banning-ng-controller.html

在项目开始时设计您会自动达到 ng-controller 的指令可能很困难,但我认为从长远来看这是最好的方法。

鉴于在过去几年中开展的 Angular 项目数量巨大,组织内部将进行许多对话,以评估他们是否能够投入所需的努力以离开1.2-1.3 并重写应用程序以便能够使用 2.0.