如何在一个JS文件中导入其他JS文件?

前端开发 2026-07-09

我在TwinCAT HMI TE2000的 HtmlHosts中编写JS脚本,文件越来越大。我目前为每个HtmlHost都有一个脚本,但现在我要做一个画布绘图器,它已经变得太大。有没有办法把像drawGrid这样的函数放到另一个文件里,只在主文件中调用redrawCanvas函数?

我用以下代码来测试这个设置,但收效甚微:

  • 我的内容区域:

```html

`` *mainTest.js`:

```js // Keep these lines for a best effort IntelliSense in the editor. /// if (!window.testScriptInitialized) { (function setTestScript(){ const testDivId document.getElementById('testDivId');

  if (!testDivId ){
    setTimeout(setTestScript, 100);
    console.log('HtmlHost not initialized, setting timeout');
    return;
  }
  console.log('HtmlHost initialized, running setTestScript');
  import {
    testvarWriter
  } from './testvarFunction.js'
  testvarWriter();
  console.log(testvar1, testvar2);

  window.testScriptInitialized= true;
  console.log('setTestScript completed');

})(); } `` *testvarFunction.js`:

```js // Keep these lines for a best effort IntelliSense in the editor. ///

export function testvarWriter() { const testvar1 = 'hello, i a testvar1'; const testvar2 = 'itsa me, testvar2'; } ```

这是我的控制台日志:

VM41047 mainTest.js:36 Uncaught SyntaxError: Cannot use import statement outside a module (at VM41047 mainTest.js:36:9)
testvarFunction.js:5 Uncaught SyntaxError: Unexpected token 'export' (at testvarFunction.js:5:1)
mainTest.js:36 Uncaught SyntaxError: Unexpected token '{' (at mainTest.js:36:16)

我发现的唯一办法就是寄希望辅助文件在主文件之前加载,但我并不把这算作一个解决方案。 有没有其他解决方案,或者我可以尝试的思路?

解决方案

我通过以下操作解决了:

window.testvarWriter = function () {
    return {
        testvar1: 'hello, i am testvar1',
        testvar2: 'itsa me, testvar2'
    };
};
const vars = window.testvarWriter();
        console.log(vars);

这绕过了看起来被TwinCAT HMI工程阻止的任何导出/导入函数。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章