今天开始和大家一起系统的学习ES6+,每天3分钟,用一把斗地主的时间,重学ES6+,前面我们介绍了模块化的历史,今天介绍模块化处理方案
// 1.第一种方式: export 声明语句
export const name = "why"
export const age = 18
export function foo() {
console.log("foo function")
}
export class Person {
}
// 2.第二种方式: export 导出 和 声明分开
const name = "why"
const age = 18
function foo() {
console.log("foo function")
}
export {
name,
age,
foo
}
// 3.第三种方式: 第二种导出时起别名
export {
name as fName,
age as fAge,
foo as fFoo
}
// 1.导入方式一: 普通的导入
import { name, age, foo } from "./foo.js"
import { fName, fAge, fFoo } from './foo.js'
// 2.导入方式二: 起别名
import { name as fName, age as fAge, foo as fFoo } from './foo.js'
// 3.导入方式三: 将导出的所有内容放到一个标识符中
import * as foo from './foo.js'
console.log(foo.name)
console.log(foo.age)
foo.foo()
const name = "main"
console.log(name)
console.log(age)
import { add, sub } from './math.js'
import { timeFormat, priceFormat } from './format.js'
export {
add,
sub,
timeFormat,
priceFormat
}
const name = "why"
const age = 18
const foo = "foo value"
// 1.默认导出的方式一:
export {
// named export
name,
// age as default,
// foo as default
}
// 2.默认导出的方式二: 常见
export default foo
// 注意: 默认导出只能有一个
// import { name, age, foo } from './foo.js'
// console.log(name)
// import函数返回的结果是一个Promise
import("./foo.js").then(res => {
console.log("res:", res.name)
})
console.log("后续的代码都是不会运行的~")
// ES11新增的特性
// meta属性本身也是一个对象: { url: "当前模块所在的路径" }
console.log(import.meta)
// foo.js
let name = "why"
let age = 18
setTimeout(() => {
name = "kobe"
age = 40
}, 100)
export {
name,
age
}
// main.js
import { name, age } from './foo.js'
console.log(name, age)
setTimeout(() => {
console.log(name, age)
}, 2000)
// index.html
<html lang="en"><head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script src="./main.js" type="module"></script>
</body></html>
执行结果为:why 18
阅读量:2014
点赞量:0
收藏量:0