Javascript - 创建可导出的动态代码

Javascript - Create exportable dynamic code

您好,非常感谢任何帮助或类似问题的链接,因为我已经做了一些研究,但不确定这里的最正确路径。

我真的不知道如何准确解释我想要什么所以我画了这张图可能有助于解释一下:

目前我已将所有内容写入 1 个文件,并希望使其更加模块化,以便其他人可以使用系统对象等编写自己的“策略”。

这里的主要目标是我可以在一个地方更改所有系统代码,因为我有很多策略,如果我想更新系统代码以添加更多结果等。我需要在许多文件中更改它.

我可以看到一个很好的比较是 npm 模块 testcafe。下载后,您在代码中的使用方式与此类似:

import testcafe

test(testName, => { all the code you want to run is here and you have many 
objects and functions provided from testcafe you can use})

我的猜测是实现这个也许我需要全局 classes,也许是一个 class 调用的策略,它里面是所有对象、函数、for 循环、日志结果等..

我担心的事情:

  1. 如何将用户定义的全局变量集成到策略中
  2. 如何做到当用户在那里输入时 IDE 他们不会因为他们定义的全局变量以及存在于系统代码之外的函数和对象而出现红色错误。

这都是相当高的水平,我不是在寻找确切的代码来键入以解决所有问题(当然会很好 :) ),而是在寻找我应该研究的指针、想法和路径。非常感谢任何帮助!

不要从系统文件导入的用户文件中导出某些内容。使用 dependency inversion 并且只有用户代码依赖于系统代码。由于用户代码无论如何都是应用程序的入口点,所以这很容易。

在系统代码文件中,导出一个以策略作为参数并运行主循环的函数。无需“导入”任何东西。

// system.js
import … from 'environment';

/* declarations */
export function utility() { … }

/* the loop */
export function run(strategy) {
  let … // more declarations
  for (…) {
    …
    step = strategy(newValues)
    …
  }
  console.log(results);
}
// userFile.js
import { utility, run } from 'system';

let … // globals
run((…) => {
  … // use globals, loop arguments and imported utilities
});