NodeJS 插件系统开发

helsonlin
helsonlin
发布于 2025-01-07 / 10 阅读
0
0

NodeJS 插件系统开发

最新ffandown 项目有需求需要支持平台直播的下载,那么就涉及到直播平台真实的地址的解析。

如果在项目内直接实现的话,那么就会面临:插件的每次维护需要单独发版本的问题。这个不要现实也不太友好,就像之前开源的抖音视频下载一样,每次都需要单独去 abog。而且动不动就挂了。

如果做插件系统呢?有什么好处?

  1. 插件每个人都可以开发,开发者可以不仅限作者

  2. 插件的维护不需要依赖主项目发版本

  3. 插件的多少可以由使用者自己确定,更加的灵活

那么怎么做呢?

直接看代码: makeParser 就是转换 js 文本为 class 类的函数。

这里定义DemoJsCodeclass 的好处就是可以在原型上挂载常用的一些工具库,方便插件的开发。

// DemoJsCode 为 js函数的字符串
const DemoJsCode = "class Parser {init () {console.log('12')}}";
const makeParser = (jsCode) => {
    const Parser = new Function(`return ${jsCode}`)();
    const parser = new Parser();
    return parser;
};


makeParser(DemoJsCode).init(); // output: 12

为什么不用eval 呢或者 exec?

evalexec 都回面临一个问题:无法提供常用的库,而且 exec 执行的话需要提供 node 的环境才行。


评论