如何将大型 AngularJS 项目拆分为模块

2023-11-22

我来自 Backbone 和 JavascriptMVC 的世界。但我真的很想切换到 AngularJS。到目前为止,我有一个大问题阻止我转变。

我创建单页应用程序。假设它包含一个选项卡模块、一个文件上传模块和一个文件列表模块。

我在 Backbone 中要做的就是将每个模块拆分为独立模块 有自己的视图模板、视图控制器等。这样,我就可以在我的应用程序中的多个位置使用该模块。这些模块除了自身之外不知道任何事情。

在 AngularJS 中如何处理这个问题?是否可以为每个模块创建一个 angular.module(例如选项卡模块)?

我觉得他们在文档中讲述了如何在模块内创建多个控制器。但这听起来不像我需要的。或者我在这里误解了一些主要概念?

编辑: 我还做了一些研究。看起来指令就是我正在寻找的。而 AngularJS 中的模块代表整个 Web 应用程序。因此,“组件”和“模块”名称的混合让我感到困惑。

我现在走在正确的道路上吗?


您绝对可以定义模块,并将模块包含在应用程序级别,然后通过依赖项注入,您允许控制器使用它们所需的内容。

我有一个我正在开发的用于学习 Angular 的小型应用程序的概念证明示例(它非常脏,而且是我的游乐场):

http://plnkr.co/edit/1jGqaB00OznAUpyPZVT3

我的应用程序定义如下所示:

angular.module('myApp', ['ngResource','ui.bootstrap', 'myApp.services', 'myApp.servicesMovie', 'myApp.servicesSearch', 'myApp.servicesUtils', 'myApp.servicesMovieList'])

您可以看到我在我的应用程序中包含了一堆不同的模块,然后是一个从服务模块获取一些服务的控制器示例:

function SearchCtrl($scope,  $rootScope, $route, $timeout, $routeParams, $location, SearchService, MovieListService) { etc }

这是模块的定义之一(也及其依赖项):

angular.module('myApp.servicesMovieList', ['myApp.services'])

关于模板,您可以定义它们并将它们包含在您的路由值中:

$routeProvider.when('/view1', {templateUrl: 'view1.html', controller: ViewCtrl});
    $routeProvider.when('/movie/:id', {templateUrl: 'movie-detail.html', controller: MovieCtrl, resolve: MovieCtrl.resolve});
    $routeProvider.when('/search/:q/:p', {templateUrl: 'movie-search.html', controller: SearchCtrl});
    $routeProvider.when('/searchlist/:url/:p', {templateUrl: 'movie-search.html', controller: SearchCtrl});
    $routeProvider.otherwise({redirectTo: '/view1'});

  }])

或者当然你可以打电话给他们ng-include

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将大型 AngularJS 项目拆分为模块 的相关文章

随机推荐

  • 检测 GitHub 提交的 IP 地址

    我是一些公司 github 存储库的所有者 最近 我们一直怀疑一名开发人员可能通过借用的 github 身份寻求外包帮助 许多凌晨 4 点批量提交 github com 上有没有办法确定提交者的源 IP 地址 在流量页面上 我可以根据独特克
  • 如何修复 EF Core 迁移“证书链由不受信任的机构颁发”

    连接字符串 Data Source
  • 如何最好地告诉 CMake 在哪里可以找到 dll

    我有一个简单的项目结构 源自令人惊叹的教程 https rix0r nl blog 2015 08 13 cmake guide 它看起来如下 src CMakeLists txt mylib include mylib mylibclas
  • 从 Android 应用程序打开本机浏览器

    我有一部安装了多个浏览器的 Android 手机 我可能会或可能不会将浏览器设置为默认值 所以 我的问题是 从我的应用程序中 如何仅在NATIVE安卓浏览器 有没有办法知道是否有浏览器设置为默认浏览器 从我的应用程序中 如何仅在 NATIV
  • 这是使用 History.js 的正确方法吗?

    我能够使用三个链接来组合一个简化的完整 History js 示例 从整个页面加载内容片段 而无需更新页面 同时更新浏览器历史记录 这是相关的代码片段 完整的工作示例在这里http jsfiddle net PT7qx show a hre
  • .NET MAUI 应用程序上 iOS 上覆盖表单元素的键盘

    我正在将我的 Xamarin 应用程序转换为 NET MAUI 看起来像
  • 如何在sequelize中实现多对多关联

    我有两个表 书籍和文章 它们之间具有多对多关系 连接表是 BookArticles 模型 books js module exports function sequelize DataTypes return Food sequelize
  • 根据外部架构文件验证 Jackson 的 JSON 架构合规性

    我想使用杰克逊图书馆 https github com FasterXML jackson 来处理 Java 中的 JSON 文件 这些文件由 JSON 模式文件描述 现在 我想验证解析的 JSON 是否符合由其自身解析的 JSON 模式文
  • 将元素添加到具有间隙数字键的数组以形成索引数组/列表

    我有一个像这样的数组 array 0 gt Apple 2 gt Orange 5 gt Pear 8 gt Pear 有没有办法用默认值 例如 空字符串或null 我想将新元素插入到数组中的以下键 1 3 4 6 7 我的结果应该是 0
  • Scala 错误处理:尝试还是选择?

    给定 UserService 中的一个方法 update 这里处理错误 异常的最佳方法是什么 选项A def update Try User 这样 我需要定义我的自定义例外并在需要时将它们扔到函数体内 这些异常大多数是业务错误 例如 use
  • 使用静态用户登录 Flask 总是会产生 401-未经授权

    我正在尝试构建一个超级简单的网络应用程序供我自己使用 我将是唯一的用户 所以我觉得不需要涉及数据库来进行用户管理 我正在尝试使用烧瓶登录 但即使我打电话给login user成功了 在重定向到带有以下内容的页面后 我仍然遇到 401 未经授
  • 如何在 TypeScript 中声明仅包含对象而不包含函数的类型

    在 TypeScript 中是否可以以某种方式定义一个类型 使其只包含对象而不包含函数 Example type T name string any How to modify this to only accepts objects co
  • Python如何在处理完类对象后释放其内存?

    I use None 关键字删除类对象 class demo class members obj demo some processing obj None 通过使用None 内存会被释放吗 我找到del也可以用于删除类对象 或者我应该使用
  • javascript 帮助中的概率?

    抱歉 我是 JS 新手 似乎无法弄清楚 我该如何做概率 我完全不知道 但我想做点什么 100 的机会 也许 0 7 的机会执行函数e 和 30 的机会执行函数d 等等 它们将精确地加起来 100 每个函数都有不同的函数 但我还没有弄清楚如何
  • 模拟实体框架数据库

    我正在使用实体框架 4 是否可以使用一些随机数据从模式自动创建一些 MOCK 数据库 在整数的位置 放置整数 在字符串的位置 放置一些 GUID 或其他 这对我调试我的应用程序有很大帮助 谢谢你 詹姆斯 我发现这个很棒的工具与 EF 4 一
  • DotNetOpenAuth 获取 Facebook 电子邮件地址

    我有以下代码 它获取名字 姓氏 我意识到电子邮件是扩展权限 但我需要修改什么才能请求扩展权限 如何通过以下方式获取经过身份验证的 Facebook 用户的电子邮件DotNetOpenAuth fbClient new FacebookCli
  • 是否可以配置 UITableView 以允许多重选择?

    对于iPhone 是否可以配置UITableView以允许多重选择 我尝试过覆盖 setSelected animated 对于每个 UITableViewCell 但尝试捏造所需的行为是很棘手的 因为很难将真正的取消选择与 UITable
  • PHP7.1 json_encode() 浮点问题

    这不是一个问题 因为它更多的是一个意识 我更新了一个使用的应用程序json encode 到 PHP7 1 1 我发现浮点数有时会扩展到 17 位数字的问题 根据文档 PHP 7 1 x开始使用serialize precision而不是编
  • Android,如何在旋转设备时不破坏活动?

    我有一个仅在纵向模式下工作的应用程序 并且我已在清单文件中将每个活动的方向更改为纵向 但是当我旋转设备时 活动会再次重新创建 如何才能不破坏活动呢 For API 12 及以下 add android configChanges orien
  • 如何将大型 AngularJS 项目拆分为模块

    我来自 Backbone 和 JavascriptMVC 的世界 但我真的很想切换到 AngularJS 到目前为止 我有一个大问题阻止我转变 我创建单页应用程序 假设它包含一个选项卡模块 一个文件上传模块和一个文件列表模块 我在 Back