Node.js 如何从 TypeScript 调用来自其他文件的 JS 函数
How to call from TypeScript a JS function from other file in Node.js
我在 Node.js
上有 运行 的 TypeScript
TypeScript 代码将通过 http 获取几个 js 文件(我们称它们为 'fileA.js'、'fileB.js' 等等)
每个文件都有一个名为 'Foo(inputparam)' 的函数。所有获取的 JS 文件的函数名称和参数数量将相同。
如何从 TypeScript 调用这个函数?
备注:
- 我无法在编译时将这些 JS 文件嵌入到 node.js。
- 我可以更改 JS 文件的内容(我正在创建它们,但它们应该在与 TS 分开的地方创建)。
- 我可以将 JavaScript 文件更改为 TypeScript 文件,如果它更易于使用的话。
- TypeScript 在获取之前无法知道 JS 文件的名称。 Node.js 将是一个静态应用程序,而 JS 文件列表将在运行时更改
您首先需要将新的 js 文件附加到 html:
const script = document.createElement('script')
script.innerHTML = '...your js content...';
document.body.appendChild(script);
之后,这些功能将在 window 上下文中可用:
(<any>window).yourFunctionName('parameters');
// or
(<any>window)[funcName](params);
请注意:如果您不信任脚本源 (!),这可能非常不安全。
[编辑] 我看多了“node.js”部分:
// pass your loaded script to eval:
eval('function foo(param) {console.log(param)}')
// function becomes available in global scope:
global['foo']('param')
我在 Node.js
上有 运行 的 TypeScriptTypeScript 代码将通过 http 获取几个 js 文件(我们称它们为 'fileA.js'、'fileB.js' 等等)
每个文件都有一个名为 'Foo(inputparam)' 的函数。所有获取的 JS 文件的函数名称和参数数量将相同。
如何从 TypeScript 调用这个函数?
备注:
- 我无法在编译时将这些 JS 文件嵌入到 node.js。
- 我可以更改 JS 文件的内容(我正在创建它们,但它们应该在与 TS 分开的地方创建)。
- 我可以将 JavaScript 文件更改为 TypeScript 文件,如果它更易于使用的话。
- TypeScript 在获取之前无法知道 JS 文件的名称。 Node.js 将是一个静态应用程序,而 JS 文件列表将在运行时更改
您首先需要将新的 js 文件附加到 html:
const script = document.createElement('script')
script.innerHTML = '...your js content...';
document.body.appendChild(script);
之后,这些功能将在 window 上下文中可用:
(<any>window).yourFunctionName('parameters');
// or
(<any>window)[funcName](params);
请注意:如果您不信任脚本源 (!),这可能非常不安全。
[编辑] 我看多了“node.js”部分:
// pass your loaded script to eval:
eval('function foo(param) {console.log(param)}')
// function becomes available in global scope:
global['foo']('param')