项目组织和命名约定

2024-05-27

这在某种程度上是后续每个模块组件重复模块名称 https://stackoverflow.com/questions/25005897/repeating-module-name-for-each-module-component问题。

我们决定遵循中的建议Angular 应用程序结构的最佳实践建议 https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub博客文章 Angular 项目组织和命名约定,同时构建一个用于测量连接质量的小型内部应用程序。

这就是我们目前所拥有的:

$ tree -L 1
.
├── app-config-service.js
├── app-config-service_test.js
├── app-connection-service.js
├── app-connection-service_test.js
├── app-controller.js
├── app-controller_test.js
├── app-countdown-directive.js
├── app-countdown-directive_test.js
├── app-footer-directive.js
├── app-footer-directive_test.js
├── app-footer-service.js
├── app-footer-service_test.js
├── app-math-service.js
├── app-math-service_test.js
├── app-stats-directive.js
├── app-stats-directive_test.js
├── app-status-directive.js
├── app-status-directive_test.js
├── app-status-service.js
├── app-status-service_test.js
├── app-time-directive.js
├── app-time-directive_test.js
├── app.css
├── app.js
├── bower_components
├── config.json
├── countdown.html
├── footer.html
├── img
├── index.html
├── ping
├── stats.html
└── status.html

正如您所看到的,有几个指令、服务、部分、单个控制器、模块声明文件以及与主题文件无关的配置和特定于应用程序的配置。这确实变成了一堆乱七八糟的文件,并且不太可读且易于使用。

这可能是因为我们只有一个模块并把所有东西都放在里面。

是否可以使用良好的旧的面向组件的方法并为它们提供特殊的目录services, controllers, directives and partials对于这样一个简单的应用程序?这是否意味着新的“按功能组织”方法仅适用于重要的大型应用程序?


你说你决定“按照中的建议进行操作Angular 应用程序结构的最佳实践建议 https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub博客文章”,不过你好像没跟上……


根据推荐的方法,每个组件/功能应该位于其自己的目录中(在components目录)。

由于所指出的原因吉尔伯曼 https://stackoverflow.com/questions/25769920/project-organization-and-naming-conventions#answer-25778519并且在上述内容中也有详细说明博客文章 https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub以及在每个模块组件重复模块名称 https://stackoverflow.com/questions/25005897/repeating-module-name-for-each-module-component,按功能组织目录更有意义(例如foo-feature 目录包含与该功能相关的所有指令、服务、控制器、部分等)而不是按类型组织(例如一个目录中的所有控制器,另一个目录中的所有服务)等。


无论如何,以上所有内容都是指南(更多的是一种思维方式),而不是可以决定将每个文件放置在何处的精确配方或确定性算法(例如是否会有一个components/lib/目录,服务将进入功能的目录还是在components/common/目录等)。
您需要了解准则(以及试图实现的目的/需求)并制定适合您团队风格的惯例。

有时您不确定将文件放在哪里。您可以与团队进行辩论,做出决定并遵循该决定。 这是完全正常的(尤其是一开始),但你会发现随着时间的推移,这种情况会越来越少。


也就是说,我希望您的目录和文件结构更像这样(对哪些服务可能更通用/更像实用程序做出一些假设):

app/
|___ app.css
|___ app.js
|___ app-controller.js
|___ app-controller_test.js
|___ bower_components
|___ config.json
|___ index.html
|
|___ components/
|    |___ common/ or util/
|    |    |___ config-service.js
|    |    |___ config-service_test.js
|    |    |___ connection-service.js
|    |    |___ connection-service_test.js
|    |    |___ math-service.js
|    |    |___ math-service_test.js
|    |
|    |___ countdown/
|    |    |___ countdown.html
|    |    |___ countdown-directive.js
|    |    |___ countdown-directive_test.js
|    | 
|    |___ footer/
|    |    |___ footer.html
|    |    |___ footer-directive.js
|    |    |___ footer-directive_test.js
|    |    |___ footer-service.js
|    |    |___ footer-service_test.js
|    |
|    |___ img/
|    |    |___ ...
|    |
|    |___ stats/
|    |    |___ stats.html
|    |    |___ stats-directive.js
|    |    |___ stats-directive_test.js
|    | 
|    |___ status/
|    |    |___ status.html
|    |    |___ status-directive.js
|    |    |___ status-directive_test.js
|    |    |___ status-service.js
|    |    |___ status-service_test.js
|    |
|    |___ time/
|         |___ time-directive.js
|         |___ time-directive_test.js
|
|___ misc/
     |___ ping
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目组织和命名约定 的相关文章

随机推荐

  • 从字符串变量导入模块

    我需要从内存变量导入 JavaScript 模块 我知道这可以使用SystemJS and Webpack 但我找不到一个好的工作示例或文档 文档主要讨论 js 文件的动态导入 基本上我需要像下面这样导入模块 let moduleData
  • 获取 ddSlick 下拉列表中所选

    当前返回未定义 注释行中应该包含什么内容来提醒当前的值 1 2 3 或 4
  • Selenium - 如何使用控制台、脚本和网络打开萤火虫

    我已经设置了一个自定义的 firefox 配置文件并在 selenium RC 启动时加载它 该配置文件已安装 firebug 当我使用该配置文件手动启动 firefox 时 firebug 处于活动状态 但是 当 selenium 启动该
  • 将属性名称作为字符串传递到方法中 .NET

    我正在将 LINQ to SQL 用于 NET MVC 应用程序 在我的数据库中 我有一堆包含 Y 或 N 值的列 我正在尝试编写一个通用方法 该方法将返回数据库中的所有记录columnName Y 到目前为止我已经得到了这个 public
  • 如何在 PHP Laravel 5 中配置 Amazon SES SMTP?

    我已将 Amazon SES 集成到 PHP Laravel5 项目中 但我在发送电子邮件时遇到了麻烦 因为我收到此错误 Swift TransportException in AbstractSmtpTransport php line
  • 检查图像是否为灰度的可靠方法

    我目前正在研究一个用例 我需要确定上传的图像是灰度还是 RGB 我找到了几种方法来识别这一点 但不确定它们是否可靠并且可以共同使用来确认图像是否为灰度 第 1 部分 使用 Raster 读取图像并获取 NumberDataElements
  • 目标路径已存在且不是空目录

    我克隆了一个 git 存储库 但不小心弄乱了 所以我重新克隆并显示消息 目标路径已存在且不是空目录 我尝试过删除 Mac 中带有目标路径名称的文件夹 但没有成功 我对编码非常陌生 因此我们将不胜感激 对于根文件夹 以及任何其他文件夹 对于那
  • 为什么 C++ 映射类型参数在使用 [] 时需要空构造函数?

    也可以看看C 标准列表和默认构造类型 https stackoverflow com questions 695372 c standard list and default constructible types 这不是一个主要问题 只是
  • 编写 PHP SQL 更新语句的最佳方法

    我有这个 PHP SQL 语句 updateCategory UPDATE category SET name name description description parent parent active active WHERE i
  • 使用 jquery datepicker 选择所选日期的周数

    我有以下代码用于选择日期 然后将其转换为周数 calendar datepicker showWeek true onSelect function dateText inst dateFormat Week Number datepick
  • TextField 中的 NSAttributedString 在单击时更改/重置

    我正在跟进THIS https developer apple com library mac qa qa1487 index html来自苹果的指南 但它并没有真正正常工作 基本上 我试图通过自定义 WindowController 类向
  • Java 中的 LRU 缓存实现

    我看过下面的代码 我认为addElement方法的实现中有一个无用的while循环 它永远不应该有比 size 1 更多的元素 因为已经有一个写锁 那么为什么 addElement 方法会删除元素直到它达到这个条件 真的 while con
  • 在 Recyclerview 中,如何通过单击和不单击始终突出显示一个适配器项目

    在这里 我单击该项目来更改项目背景和颜色 我已将单击的项目值存储在数据库中 并更改布局颜色和文本颜色 并重新创建适配器并在刷新时再次显示列表 但是当我得到它的位置时 布局颜色没有改变 请始终显示处理背景项颜色集的正确路径 public cl
  • UITableview Commit EditingStyle 具有多个按钮? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 UITableview 提交编辑样式中添加多个按钮 我需要显示一个带有删除按钮的更多按钮 由于无法使用公共API 所以你可以更好地
  • 有没有办法编写一个匹配除文件夹中的文件之外的所有文件的全局模式?

    我需要编写一个文件 glob 它将匹配除特定文件夹中包含的文件之外的所有文件 例如 除了高级文件夹中包含的文件之外的所有文件 foo 我已经到达以下区域 foo 然而 这个 glob 似乎与 Ruby 中的任何文件都不匹配File fnma
  • jQuery Mobile 和 PhoneGap 中的身份验证

    我有一个使用 jQuery Mobile 和 PHP CodeIgniter 框架 构建的 Web 应用程序 现在我正在尝试制作它的 PhoneGap 版本 以使其可以作为独立应用程序进行分发 但是 PHP Web 应用程序 版本使用 Io
  • 自动用 if/else 替换条件运算符?

    特定的 JS 解析器 不在我的控制范围内 不理解嵌套条件运算符语法 如下所示 return num 1 condition condition something something 因此 我想使用 if else 块替换文件中的所有条件运
  • 如何从具有函数依赖关系的类型类中获取和使用依赖类型?

    如何从具有函数依赖关系的类型类中获取和使用依赖类型 为了澄清并给出我最近的尝试的一个例子 从我正在编写的实际代码中最小化 class Identifiable a b a gt b where if you know a you know
  • 连接多个 HLS 主播放列表

    DASH 清单提供了 周期 的概念 用于在单个清单中连接多个剪辑 每个剪辑都有自己的轨道信息 是否有类似的功能允许在一种 master master 播放列表文件中连接多个主播放列表文件 简短的回答 不 不在主播放列表级别 我猜想 HLS
  • 项目组织和命名约定

    这在某种程度上是后续每个模块组件重复模块名称 https stackoverflow com questions 25005897 repeating module name for each module component问题 我们决定