目录
1.ECMAScript 新特性-async 和await
1.1async函数
1.2await函数
1.3补充:
2. ES6模块化
2.1模块化的优点
2.2 ES6 模块化语法
2.3 ES6 模块暴露
2.4ES6 模块导入
const show = async function () {
//返回值是一个promise对象
console.log('hhh');
// 如果返回值是非promise或undefined,表示成功,返回值是成功的值
// return 'lll';
// 返回值是promise对象时
return Promise.resolve('ok')
// return Promise.reject('no')
}
var a = show();
console.log(a);
//1.创建promise对象
const p = new Promise((resolve, reject) => {
resolve('成功'); //用户数据
});
//await 要放在async函数中
async function main() {
let result = await p;
//成功的结果
console.log(result);
}
//调用函数
main()
//1.创建promise对象
const p = new Promise((resolve, reject) => {
// resolve('成功的值');//用户数据
reject('失败啦')
});
//await 要放在async函数中
async function main() {
try {
let result = await p;
//成功的结果
console.log(result);
} catch (i) {
console.log(i);
}
}
//调用函数
main()
模块化就是讲一个大的程序文件,拆分成许多小的文件,然后讲小文件组合起来。
模块功能主要由两个命令构成:export 和 import。
(1)分别暴露:就是在需要暴露的变量或函数名前加上 export关键字。
export let a=10;
export function show(){
console.log('分别暴露');
}
(2)统一暴露:在export{ }内部写入需要暴露的变量名或函数名,中间用逗号隔开。
// 统一暴露
let a = 100;
let fn = function () {
console.log('统一导出');
}
const obj = {
name: 'aaa',
age: 18
}
let arr = [10, 20, 30]
export {
a,
fn,
obj,
arr
}
(3)默认暴露:export default { }在花括号内可以写入任意数据类型的数据,但大部分都是对象。
// 默认暴露 default
let c = 1000;
let show = function () {
console.log('默认暴露222');
}
export default {
// 可以是数字、字符串,但大部分是对象
a: 800,
b: [11, 22, 33, 44],
fn: function () {
console.log('默认暴露');
},
c,
show
}
(1) 通用方法导入: import 变量名 from '路径' (变量名中存的是对象)
import * as m1 from './1.js'
import { a, fn as fn1, obj, arr as arr1} from './2.js';
console.log(arr1);
fn1();
在使用默认暴露时就不能使用上面的通用方法导入了,默认暴露有专门的简便的导入形式。
import m3 from './3.js'
(2)解构方法来导入
import { a, fn , obj, arr } from './2.js';
如果默认暴露想要以解析的方式进行导入操作的话必须要使用别名,因为default相当于一个关键字。所以得使用别名。
import{default as m4}from './3.js';
console.log(m4);
除了对象类型以外,导出的属性对外都是只读的