动态地从文件中读取额外的javascript代码

动态地从文件中读取额外的javascript代码,javascript,node.js,typescript,Javascript,Node.js,Typescript,我希望在nodejs中创建一个应用程序,它可以通过单独的javascript文件进行扩展。 我的想法是创建一个应用程序,它有一个GUI,您可以在其中键入命令,但命令是在源结构中不包含的单独文件中定义的,因此用户可以创建自己的命令,使其基本上是可扩展的。对于任何使用过它的人来说,这和2008年firefox的Ubiquity插件是一样的 我已经使用Rhino在java中实现了这一点,但是Rhino无法处理异步调用,我希望命令能够调用API 我的问题是,在node js应用程序中,你是否可以有一行代

我希望在nodejs中创建一个应用程序,它可以通过单独的javascript文件进行扩展。 我的想法是创建一个应用程序,它有一个GUI,您可以在其中键入命令,但命令是在源结构中不包含的单独文件中定义的,因此用户可以创建自己的命令,使其基本上是可扩展的。对于任何使用过它的人来说,这和2008年firefox的Ubiquity插件是一样的

我已经使用Rhino在java中实现了这一点,但是Rhino无法处理异步调用,我希望命令能够调用API

我的问题是,在node js应用程序中,你是否可以有一行代码来实现

let externalObject = read(file.js);    // contains the definition for SomeObject;
let foo = new externalObject.SomeObject();
foo.someFunctionFromFileJs();
您可以在加载器函数中使用
require()
,并加载扩展。但是,这必须在服务器端进行。该函数可以由某个API端点触发,将模块加载到服务器上,也许其他端点允许与它进行交互

index.js

/。。。
常量加载扩展=()=>{
常量扩展=要求('./扩展');
返回扩展;
}
myExtension=loadExtension();
log(myExtension.add(2,5))//产出:7
log(myExtension.multiply(2,5))//产出:10
extension.js

constadd=(a,b)=>a+b;
常数乘法=(a,b)=>a*b;
module.exports={add,multiply}

如果您已经知道文件位置,可以使用
require
。而不是
loadExtension
,只需执行
const myExtension=require('./extension')