CommonJS 和 ES6 模块化

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"
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值