如何在一个JS文件中导入其他JS文件?
我在TwinCAT HMI TE2000的 HtmlHosts中编写JS脚本,文件越来越大。我目前为每个HtmlHost都有一个脚本,但现在我要做一个画布绘图器,它已经变得太大。有没有办法把像drawGrid这样的函数放到另一个文件里,只在主文件中调用redrawCanvas函数?
我用以下代码来测试这个设置,但收效甚微:
- 我的内容区域:
```html
``
*mainTest.js`:
```js
// Keep these lines for a best effort IntelliSense in the editor.
///
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工程阻止的任何导出/导入函数。