加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Angular 2中实现插件架构/插件系统/可插拔框架

发布时间:2020-12-17 07:42:07 所属栏目:安全 来源:网络整理
导读:我想在Angular 2应用程序中实现一个可插拔(plug-in)框架. (我开发这个可插拔框架的具体用例是我需要开发一个微型内容管理系统,由于这里不一定详细阐述的一些原因,Angular 2非常适合该系统的大部分需求.) 通过可插拔框架(或插件架构),我特别指的是允许第三方
我想在Angular 2应用程序中实现一个可插拔(plug-in)框架.

(我开发这个可插拔框架的具体用例是我需要开发一个微型内容管理系统,由于这里不一定详细阐述的一些原因,Angular 2非常适合该系统的大部分需求.)

通过可插拔框架(或插件架构),我特别指的是允许第三方开发人员通过使用可插拔组件创建或扩展主应用程序的功能的系统,而无需直接访问或了解主应用程序的源代码或内部工作.

可插拔框架的示例包括诸如WordPress或Drupal之类的常见内容管理系统.

理想情况(与Drupal一样)将是简单的将这些可插拔组件(或插件)放入文件夹中,让应用程序自动检测它们,并让它们只是神奇地“工作”.

我正在努力确定以下五个问题的答案.

>实用性:Angular 2应用程序的插件框架是否也是实用的? (到目前为止,我还没有发现任何实际的方法来创建具有Angular2的真正可插拔框架.)
>预期的挑战:在为Angular 2应用程序实现插件框架时可能遇到什么挑战?
>实施策略:为角度2应用程序实现插件框架可以采用什么具体的技术或策略?
>最佳实践:为Angular 2应用程序实现插件系统的最佳实践是什么?
>替代技术:如果插件框架在Angular 2应用程序中不实用,那么相当相当的技术(例如React)可能适用于现代Web应用程序?

一般来说,使用角度2是非常可取的,因为:

>这是非常快的
>它具有相对较小的占用空间(在AOT和树状抖动之后),并且占地面积继续缩小
它消耗的带宽很小(初始加载后)
它具有很高的功能
>它与许多最好和最新的Web技术(如TypeScript和Observables)很好地兼容
由Google支持,未来可能会得到支持和增强

我非常喜欢在当前的项目中使用Angular 2.如果我能使用Angular 2,我也将使用Angular-CLI和Angular Universal(用于服务器端渲染).

这是我的想法,到目前为止,关于上面的问题.请检查并提供您的反馈和启示.

> Angular 2应用程序消耗包 – 但这并不一定等于允许应用程序中的插件.其他系统(例如Drupal)中的插件可以通过将插件文件夹删除到公共模块目录中而被自动“系统”拾取.在Angular 2中,一个包(作为插件可能是)通常通过npm安装,添加到package.json,然后手动导入应用程序 – 如在app.module中.这比删除文件夹的Drupal方法要复杂得多,使系统自动检测包.安装插件越复杂,人们就越不可能使用它们.如果Angular 2有一种自动检测和安装插件的方法会更好.我非常有兴趣找到一种方法,允许非开发人员安装Angular 2应用程序并安装任何选定的插件,而无需了解所有应用程序的架构.
>通常,提供可插拔架构的好处之一是,第三方开发人员非常容易扩展系统的功能.显然,这些开发人员将不会熟悉他们正在插入的应用程序的代码的所有复杂性.一旦开发了插件,其他更少的技术用户可以简单地安装应用程序和任何选定的插件.然而,角度2是相对复杂的,并且具有非常漫长的学习曲线.为了进一步复杂化,大多数生产角度2应用程序还使用Angular-CLI,Angular Universal和WebPack.正在实现插件的人可能至少需要掌握一些基本知识,了解所有这些如何融合在一起,以及对ScriptScript的强大的工作知识以及对NodeJS的合理熟悉.知识要求如此极端,没有第三方会想要开发一个插件?
>大多数插件可能具有一些服务器端组件(例如用于存储/检索插件相关数据)以及某些客户端输出.特别(强烈)Angular 2不鼓励开发人员在运行时注入自己的模板,因为这会带来严重的安全隐患.为了处理插件可能适应的许多类型的输出(例如,图形的显示),似乎允许用户创建以另一种形式注入到响应流中的内容.我不知道如何可以适应这种需要,而不需要刻画细分角色2的安全机制.
>大多数生产的Angular 2应用程序都是使用Ahead(Ahead)时间(AOT)编译进行预编译的. (可能都应该是.)我不确定如何将插件添加到(或与其一起编译)应用程序.最好的情况将涉及从主应用程序分开编译插件.但是,我不确定如何使这项工作.后备可能是使用任何附加的插件重新编译整个应用程序,但是对于只需要安装应用程序(在自己的服务器上)以及任何选定的插件的管理用户,这会使事情复杂化一些.
>在Angular 2应用程序中,特别是预编译的应用程序,单个错误或冲突的代码可能会破坏整个应用程序. Angular 2应用程序并不总是最简单的调试.不良行为的插件的应用可能会导致非常不愉快的经历.我目前不知道如何优雅地处理不良行为的插件.

请分享你的想法和想法.提前谢谢了.

示例应用程序与工作插件系统(感谢Gijs创建 github回购!) https://github.com/PacktPublishing/Mastering-Angular-2-Components/tree/master/angular-2-components-chapter-10基于电子书 Mastering Angular 2 Components

>插件架构来扩展核心应用程序组件
>文件插件系统(只需添加插件目录/文件,而不需要编辑任何核心配置文件或需要重新编译您的应用程序!)
>加载并动态使用插件
>建立一个基本的插件管理器来激活/禁用插件

干杯,尼克拉斯

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读