JavaScript中是否有类似于CSS中的@import的东西允许你在一个JavaScript文件中包含另一个JavaScript文件?有哪几种方式?
旧版本的JavaScript没有import、include或require,因此开发了许多不同的方法来解决这个问题。但是从2015年(ES6)开始,JavaScript就有了在Node中导入模块的ES6模块标准。,大多数现代浏览器也支持它。为了与旧浏览器兼容,可以使用构建和/或转换工具。
1、ES6模块从v8.5开始,在Node.js中就支持ECMAScript (ES6)模块,并带有—experimental-modules标志,所有涉及的文件都必须有.mjs扩展名。
// module.mjs
export function hello() {
return "Hello";
}// main.mjs
import { hello } from 'module';
// or './module'
let val = hello();
// val is "Hello";
2、浏览器中的ECMAScript模块自Safari 10.1、Chrome 61、Firefox 60和Edge 16以来,浏览器一直支持直接加载ECMAScript模块(不需要Webpack之类的工具)。
<
script type="module">
import { hello } from './hello.mjs';
hello('world');
<
/script>// hello.mjs
export function hello(text) {
const div = document.createElement('div');
div.textContent = `Hello ${text}`;
document.body.appendChild(div);
}
3、浏览器动态导入
<
script type="module">
import('hello.mjs').then(module => {
module.hello('world');
});
<
/script>
4、Node.js require【如何在一个JavaScript文件中包含另一个JavaScript文件(有哪几种方式?)】老式的模块导入方式,在Node中仍被广泛使用module.exports/require。
// mymodule.js
module.exports = {
hello: function() {
return "Hello";
}
}
// server.js
const myModule = require('./mymodule');
let val = myModule.hello();
// val is "Hello"
推荐阅读
- 热门前端开发面试题及答案汇总(一)(HTML经典面试题和答案分析)
- event.preventDefault() vs. return false这两种调用方式有什么区别()
- 如何在JavaScript中实现复制到剪贴板(如何原生实现,有第三方库吗?)
- 如何重新随机化或者重新排序JavaScript的数组元素()
- JavaScript如何将现有的回调API转为promise(有示范实例吗?)
- PHP | Ds Vector __construct()函数用法介绍
- JavaScript中的箭头函数用法指南
- Scala中的变量用法介绍
- Python 将标签添加到Kivy窗口