CommonJS
index.js
// 导入
// 方式一:直接导入
// const student = require('./student')
// const school = require('./school')
// console.log(student)
// console.log(school)
// 方式二:解构导入
const { name, slogan, getTel } = require('./school')
// 方式三:解构导入+重命名
const { name: stuName, motto, getTel: stuGetTel } = require('./student')
console.log(name)
console.log(slogan)
console.log(getTel)
console.log(stuName)
console.log(motto)
console.log(stuGetTel)
// 该文件使用 require() 引入文件,只能在 nodejs 环境中执行,
// 不能在浏览器中使用,不过可以借助 browserify 打包成新的可供浏览器识别的js文件
// 使用:
// 1、下载安装 browserify =》 npm i browserify -g
// 2、编译 index.js 输入为 build.js =》 browserify index.js -o build.js
// 3、页面中引入使用 =》 <script src='./build.js'></script>
// commomjs 是社区模块化规范,是node环境的模块化规范,可以通过工具编译支持浏览器
school.js
const name = '清华'
const slogan = '知识改变命运'
function getTel() {
return '0372-6688999'
}
function getCities() {
return ['北京', '上海', '广州', '深圳']
}
// 导出方式一:module.exports = value
module.exports = { name, slogan, getTel }
// 导出方式二:exports.key = value
// exports.name = name
// exports.motto = motto
// exports.getTel = getTel
student.js
const name = '章三'
const motto = '好好学习'
function getTel() {
return '0372-7788999'
}
function getCities() {
return ['北京', '上海', '广州', '深圳']
}
// 导出方式一:module.exports = value
module.exports = { name, motto, getTel }
// 导出方式二:exports.key = value
// exports.name = name
// exports.motto = motto
// exports.getTel = getTel
ES6 模块化
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- type="module" 将 js 模块化引入,js 中的变量不在全局上面 -->
<script type="module" src="./index.js"></script>
<button id="btn">动态导入</button>
</body>
</html>
index.js
// 导入
// 方式一:导入全部(通用)
// import * as student from './student.js'
// console.log(student)
// 方式二:命名导入(对应导出方式:分别导出、统一导出)
// import { name as stuName, motto as stuMotto, getCities } from './student.js'
// console.log(stuName, stuMotto, getCities)
// 方式三:默认导入
// import student from './student.js'
// console.log(student) // {age: 19, getTel: ƒ}
// 方式四:命名导入和默认导入可以混合使用
// import getTel, { motto, getCities } from './student.js'
// console.log(getTel())
// console.log(motto)
// console.log(getCities())
// 方式五:动态导入
// document.querySelector('#btn').onclick = async () => {
// const stu = await import('./student.js')
// console.log(stu) // 将 student.js 中所有导出的内容都导入了进来
// }
// 方式六:import 可以不接受任何数据
import './template.js'
student.js
// 分别导出
export const name = '章三'
const age = 19
const motto = '好好学习'
function getTel() {
return '0372-7788999'
}
function getCities() {
return ['北京', '上海', '广州', '深圳']
}
// 默认导出
// export default {
// age, getTel
// }
export default getTel
// 全部(统一)导出
export {
motto, getCities
}
// 以上三种方式导出的内容为:
/*{
default: {getTel }
getCities
motto,
name
}
*/
template.js
console.log(Math.random())
package.json
{
"type": "module"
}