Angularjs-单个和多个ng应用程序?

Angularjs-单个和多个ng应用程序?,angularjs,Angularjs,我正在开发一个网络应用程序。它由Spring从控制器返回到数据库。目前,我使用SpringMVC控制器的get方法来处理页面导航,以访问页面 我计划使用angular JS来完成我的UI工作。我查阅了一些关于如何做到这一点的例子,这些都很好,但我不确定有什么 ng应用程序 1-我应该每个应用程序使用一个,还是每个页面使用一个,或者这无关紧要 2-如果我什么时候决定不重要 我看到一些例子在html标签上使用它,还有一些例子在DIV中使用它,但我不确定如何确定这一点,可能是因为对框架缺乏了解。 每个

我正在开发一个网络应用程序。它由Spring从控制器返回到数据库。目前,我使用SpringMVC控制器的get方法来处理页面导航,以访问页面

我计划使用angular JS来完成我的UI工作。我查阅了一些关于如何做到这一点的例子,这些都很好,但我不确定有什么

ng应用程序

1-我应该每个应用程序使用一个,还是每个页面使用一个,或者这无关紧要

2-如果我什么时候决定不重要

我看到一些例子在html标签上使用它,还有一些例子在DIV中使用它,但我不确定如何确定这一点,可能是因为对框架缺乏了解。

每个HTML只能自动引导一个AngularJS应用程序 文件。文档中找到的第一个
ngApp
将用于定义 作为应用程序自动引导的根元素。运行多个 HTML文档中的应用程序必须手动引导它们 改用angular.bootstrap。AngularJS应用程序不能被删除 相互嵌套

您可以定义多个模块,这些模块之间可能存在依赖关系

angular.module('Core', []);
angular.module('Module1', ['Core']);
angular.module('Module2', ['Core']);
在每页上使用适当的模块。 你应该有多少个模块?这取决于您的应用程序有多复杂以及您希望如何构造它

所以,是的,如果你刚开始用angular,我会说不要太在意这个。将所有内容放在一个模块中,然后重构。关于角度,还有其他更棘手的部分,你应该关注

另外,你可能想看看这个

编辑

需要明确的是,我们的想法是使用一个
ng应用程序
,并根据您的站点区域选择适当的模块来引导应用程序(如果您正在构建一个单页应用程序,而您应该只有一个模块负责引导应用程序,则不适用)

1-我应该为每个应用程序使用一个,还是为每个页面使用一个,或者这无关紧要? 不,不要每页使用应用程序,angular需要时间来引导整个应用程序,而且在服务器上运行时,编写ng应用程序甚至没有意义,这里是关于这一点的,单独维护每个应用程序将非常困难
将每个逻辑分离到它自己的模块中,但仍然有一个启动程序/引导程序

2-如果我什么时候决定不重要? 这很重要

一些提示
  • Angular具有良好的可扩展性,当应用程序完成后,在一段时间后,您决定添加新的内容,这非常容易
  • 通过使用多个模块,你们可以将应用程序分成小块,所以当某个模块出现故障时,你们肯定知道是哪个模块导致了故障
  • 在服务器端MVC框架中使用angular确实很痛苦,尽管这是可能的,但我不建议这样做。我的意思是,不要使用jsp或thymrleaf,只使用spring的REST(更好的RESTful,易于使用$resource)api
  • 编写测试虽然是javascript,但编写测试可以让您对应用程序部件/模块充满信心。拥有高测试覆盖率就像是一个老板
  • 不要相信你可以开始做伟大的应用,你必须阅读angular,观看教程,阅读文章/博客/stackoverflow。它有许多陷阱和奇怪的学习曲线,但它是值得的

如果您没有第二个应用程序的源代码,您也可以将页面拆分为2个应用程序,并将每个应用程序合并为一个应用程序,因为您的主应用程序不必等待第二个应用程序完成加载。第二个应用程序大多只是一个附加的任何方式

有这么多的服务/工厂、模块/控制器,我还没有看到任何专业页面使用多个ng应用程序,这很有意义。每次加载一个应用程序都需要很长的时间,一个页面中只有两个简单的应用程序,加载一个小页面可能需要30秒以上,而使用多个模块和服务可以在10秒钟内完成。(我故意限制网络以测试其速度)。上帝知道如果这两个都很复杂,需要多长时间

更新:


使用angular UI的UI路由解决了这个加载问题(时间减少到原来的20%),并且它还帮助将页面拆分为2个应用程序,就像我在开始时所说的,不需要将页面拆分为2个。但仍然没有看到任何关于这种做法的好例子,特别是手持设备,这只会使页面更加复杂。

我在示例中看到ng app=“myApp”成为模块声明(var app=angular.module('myApp',[]);)。所以我选择角交换应用程序和模块,还是我错了?还有,也许我不明白,但你对第一个问题的回答与你的第二个要点相矛盾。你说“永远不要每页使用应用程序”,但也说“使用多个模块让我们把应用程序分成小块”。单个应用程序,但多个模块
angular.module('myApp',['m1','m2','m3')
@Deshoder:我想他指的是单一引导点(就像java中的main方法一样),你应该使用“myApp”作为主模块(
ng app=“myApp”
),但就像在java中一样,你不会将所有代码放在一个类中,不是吗?这就是为什么您还应该创建其他模块,并将它们指定为主模块的依赖项module@StefanBaiu这是一个很好的解释。现在,它让ng应用程序变得更加清晰:)那么,如果你将模块视为类,那么控制器如何适应这种类比?顺便说一句,很好的解释据猜测,是你的结束语要求就这个话题发送电子邮件。否则,这似乎是一个很好的答案:答案应该是独立的,而不是明确要求讨论或提出新问题。