gpt4 book ai didi

node.js - 如何模块化 AngularJS 应用程序/插件

转载 作者:IT老高 更新时间:2023-10-28 23:01:49 26 4
gpt4 key购买 nike

关于从 Grails(REST-API、AngularJS 的一部分、MongoDB、Tomcat、Spock、几个插件)迁移到 Node.js + Angular.js,我有几个(软件)架构问题。我可能要解释一下 Grails 项目拳头的结构,所以我们开始吧:

有一个主要的 Grails 应用程序(在几个其他应用程序旁边),它建立在几个插件之上。这些插件中的每一个都能够自行执行——这意味着它有自己的 UI、单独的模板、服务、 Controller 、路由、测试等。它还托管在不同的存储库中。这是由 Grails 插件机制完成的。好处是更少的测试工作、更少的编译时间、模块化、单一职责等等。

但是,编译和测试的时间仍然太昂贵。我也不喜欢 API 提供部分模板/ View 的事实。我希望后端 API“只是作为后端 API”,而前端“只是作为前端”。因此每个 AngularJS 应用程序/插件都会提供自己的 View 、路由、服务等。但它们也可能依赖于其他插件。

所以我想要达到的效果如下:

  • 一个主要的 AngularJS 应用程序,它包括几个插件(一个插件可以是报告生成器、留言簿或其他任何东西,它指的是应用程序的单个独立部分,或者具有特定的路由,或者只是一小部分页)。
  • 每个插件都必须是一个独立的 AngularJS 应用程序(可能在开发过程中通过 grunt 等执行)。这样 UI 开发人员就不需要启动整个后端应用程序,而且我们可以只使用 JavaScript 运行功能测试
  • 仅通过 REST 进行通信,前端必须从 API 检索所有数据
  • 每个插件都必须是可独立测试的
  • 插件可能需要其他插件才能工作
  • 主要的 index.html(和 app.js?)可能由 Nginx 服务器提供,与后端 (API) 的其余部分解耦

虽然我脑子里有一个具体的画面,但我正在苦苦思考如何设置这个架构。

在 Grails 中,插件机制以某种方式将插件相关设置(如 URL 映射、依赖项等)合并到包含/注入(inject)它们的主应用程序中——这也是我希望使用 AngularJS 实现的目标。所以:

  • AngularJS 有一些相同的机制吗?
  • 如何将每个插件的路由提供/合并到主应用程序中?
  • 如何声明应用程序和插件依赖项?
  • 哪些工具可能对构建过程有用?
  • 如何建立插件资源(css/less 文件、 View 、服务等)的惰性检索?
  • 阻止应用程序在启动时提供插件的所有资源(我猜路由在启动时是必需的)

由于这不仅仅是一个如何做这个或那个的问题,如果我遗漏了重要部分或某些部分不够清楚,我请原谅。只要问我,我会深入回答每个问题。

最佳答案

**此答案不完整**

在深入研究之前,我想确保我理解你。

这是一个加载器模块的快速实现,用于管理延迟加载(插件、供应商 Assets 、管理内容等)。

这有帮助吗?

angular.module('Bizcoin.loader')
.service('Loader', Loader);

function Loader($injector, $ocLazyLoad, User) {
var Loader = {
load: load,
get: get,
plugins: {},
flags: {}
};

init();

return Loader;

function init() {
load('vendors');
if (userIsAdmin)
load('admin');
}

function load(plugin) {
Loader.plugins[plugin] = Loader[plugin] || $ocLazyLoad.load('path/to/'+plugin+'.js');
return Loader.plugins[plugin].then(setFlag);

function setFlag() {
return Loader.flags[plugin] = true;
}
}

function get(plugin) {
return load(plugin).then(function() {
return $injector.get(plugin);
});
}

}

关于node.js - 如何模块化 AngularJS 应用程序/插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21339314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com