Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS:“;“深”;应用程序vs.“;“宽”;应用AKA许多组件/指令与许多控制器_Angularjs_Angularjs Directive_Angularjs Scope_Angularjs Ng Repeat - Fatal编程技术网

AngularJS:“;“深”;应用程序vs.“;“宽”;应用AKA许多组件/指令与许多控制器

AngularJS:“;“深”;应用程序vs.“;“宽”;应用AKA许多组件/指令与许多控制器,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-repeat,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Repeat,哪一个更好:将应用程序拆分为多个不同的指令/组件,还是拆分为多个不同的控制器 将应用程序拆分为许多不同的指令/组件将创建一个“深度”应用程序。“深层”应用程序中有更多的文件,但本质上更模块化。优点:在团队环境中工作,两个人的努力相互碰撞的可能性较小(导致痛苦的合并)。在项目之间共享代码很容易。缺点:如果你想调查一个问题,你必须遵循一系列的代码才能到达你需要的地方。示例:无线电指令存在问题。您必须首先转到模板,找出无线电指令可能在哪个组件中,查看其中的指令定义,然后最后转到指令文件 极端的例子:想

哪一个更好:将应用程序拆分为多个不同的指令/组件,还是拆分为多个不同的控制器

将应用程序拆分为许多不同的指令/组件将创建一个“深度”应用程序。“深层”应用程序中有更多的文件,但本质上更模块化。优点:在团队环境中工作,两个人的努力相互碰撞的可能性较小(导致痛苦的合并)。在项目之间共享代码很容易。缺点:如果你想调查一个问题,你必须遵循一系列的代码才能到达你需要的地方。示例:无线电指令存在问题。您必须首先转到模板,找出无线电指令可能在哪个组件中,查看其中的指令定义,然后最后转到指令文件

极端的例子:想象一个有10个问题的表格。每个问题都是一个指令。表单本身是一个组件。表单加载到可视节中,该节是一个组件。组成页面的各个部分将加载到模板中。如果您是该项目的新手,并且表单问题7存在问题,则必须从模板向下“挖掘”以找到指令

将应用程序拆分为多个不同的控制器将创建一个“宽”应用程序。“广泛”应用程序中的文件较少,但每个控制器负责模板的一个方面。优点:您可以轻松地查看模板并找到定义的所有内容。每个责任区由一名控制员接管。缺点:在团队环境中,多人将在同一个文件中工作。与项目共享代码更为复杂

极端的例子:想象一个有10个问题的表格。每个问题都有一个控制器(用于验证)。表单有一个控制器(用于检查所有问题是否有效)。表单驻留在具有控制器的节中。如果您是该项目的新手,并且表单问题7存在问题,则必须找到控制该问题的控制器

那么你认为哪一个更好,为什么?“深度”应用程序还是“广泛”应用程序

词汇(据我所知,请随时更正)

  • 指令:由HTML模板和javascript指令文件组成。您可以将DOM操作逻辑放在这里,或者放在任何其他复杂的逻辑中。示例:下拉列表、日期选择器、jQueryUI中的任何内容

  • 组件:一段用于抽象共性的可重用代码。你可以在视觉上做到这一点;想象一个漫画书的页面。有许多框架被排水沟隔开。每个框架都是一个组件,用来存放一件艺术品

  • 模板:汇集所有部分、组件和指令。模板将以角度渲染到视图中

  • 部分:一段静态HTML,用于拉入模板

  • 视图:模板的编译版本。在angular编译该视图之前,该视图不存在

我投票支持“深度”变体。代码重用是一件非常重要的事情

您必须首先转到模板,找出所需的组件 无线电指令可能在

为什么??只需查看指令的名称并打开相应的文件。当您可以通过指令、控制器或服务的名称找到任何必要的文件时,请创建可预测的文件夹结构

例如,您的指令名为
acme radio
,其中
acme
是您的供应商前缀,因此文件应该位于文件夹
vendor/acme/directives/radio.js

其他指令是某些应用程序的专用指令,名为
acme appName radio
-文件应位于
appName/directives/radio.js


这只是一个粗略的例子。

一个宽泛的问题,但你能解释一下可预测的文件夹结构吗?目前我正在使用angular seed作为我的文件夹结构。@AndrewAllbright非常“holywar”-可回答的问题:)以下是我在Yeoman存储库中的一个长讨论线程中的观点:到目前为止阅读得非常棒。太糟糕了,没有一个约曼发电机用于ngBoilerplate…(还)!我喜欢将代码组织到功能区域的想法。不幸的是,我必须将遗留代码转换成这个新的目录结构,这需要大量的工作。也就是说,从长远来看,我认为这是值得做的。我感谢您的帮助,并将继续阅读您提供的资料:)