2

因此,目前我有一个 SPA,其中包含基于可以(由用户)安装的“插件”的不同功能。这个应用程序目前主要是 TypeScript,输出的 JS 文件(没有 loader 的 es5 语法)只是通过 script 标签包含在 SPA 登陆页面中。这已经足够好了,但现在不行了。对于某些用户来说,脚本的数量很大,所以我计划对插件进行 webpack(TS -> ES6 -> Babel -> Webpack Bundle),但是我可以看到一种方法来轻松加载某些代码或某些用户。

所以主 app.ts 看起来像这样

module MyApp {
  export class App() {
  }

  export Plugins {
    export class PageEditor extends Plugin { ... }
  }
}
window['MyApp'] = MyApp;

并说 TicketPlugin.ts 看起来像这样

module MyApp {
  export Plugins {
    export class TicketManager extends Plugin { ... }
  }
}

现在要生成菜单,我只需这样做:

var MenuItems = Object.keys(MyApp.Plugins).map(p=>MyApp.Plugins[p].menuItem());

现在我遇到的主要问题

恢复功能的明显方法是使每个插件成为入口点,然后为每个所需的插件包含一个脚本标记(但这对我现在的位置没有任何改进)。

理想情况下,我想打包插件,将它们输出到单独的文件中,然后服务器可以根据当前用户需要的插件将它们连接到包中。但是我看不到让这些文件运行以注册自己的方法,无论是使用另一个类/组件还是作为全局。

我已经看到了 webpack 处理 jQuery 插件的方式,但是在 webpack 应用程序之前,你必须知道你计划加载哪些 jquery 插件,并需要它们。

4

0 回答 0