es6模块化 es7 8新特性

es6模块化

模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来

模块化的好处
  • 防止命名冲突
  • 代码复用
  • 高维护性
模块化规范产品
  • CommonJS => NodeJS、Browserify
  • AMD => requireJS
  • CMD => seaJS

ES6模块化语法

模块功能主要由两个命令构成:export和import

  • export命令用于规定模块的对外接口
  • import命令用于输入其他模块提供的功能

引入模块

1. 通用的导入方式
<script type="module">
    // 引入module.js模块内容
    import * as m1 from "./module.js";
    console.log(m1);
</script>
// 这个需要在服务器打开才行噢

在这里插入图片描述

2. 解构赋值形式
import { school, teach } from "./module.js";
import { school as guigu, findJob } from "./module2.js";
import { default as m3 } from "./module3.js";
// console.log(school, teach);
// console.log(guigu, findJob);
console.log(m3);
3. 简便形式
  • 针对默认暴露
import m3 from "./module3.js";
console.log(m3);

暴露方式

1. 分别暴露
export let school = 'pink';

export function teach() {
    console.log('be able');
}
2. 统一暴露
let school = 'pink';
function findJob() {
    console.log('find job');
}
//
export { school, findJob };
3. 默认暴露
export default {
    school: 'pink',
    change: function () {
        console.log('change');
    }
}

浏览器模块化方式2

// app.js文件
// 入口文件

// 模块引入
import * as m1 from "./module.js";
import * as m2 from "./module2.js";
import * as m3 from "./module3.js";

console.log(m1);
console.log(m2);
console.log(m3);
<script src="./app.js" type="module"></script>
ES6模块化引入NPM包
// a安装jquery包 npm i jquery
import $ from 'jquery'; // const $ = require('jquery');
$('body').css('backgroundcolor', pink);

ES7新特性

  • Array.prototype.includes

    includes方法用来检测数组中是否包含某个元素,返回布尔类型值

  • 【**】 功能与Math.pow结果相同

ES8新特性

async和await两种语法结合可以让异步代码像同步代码一样

1. async函数
  • async函数的返回值是promise对象

  • promise对象的结果由async函数执行的返回值决定的

// async 函数
async function fn() {
    // 返回一个字符串
    // return 'shangguigu';
    // 返回的对象不是一个Promise对象,则返回一个成功的promise
    W
    // 抛出错误
    // throw new Error('wrong');
    
    // 返回的结果是一个promise对象
    return new Promise((resolve, reject) => {
        reject('失败');
    })
}
const result = fn();
console.log(result);
2. await表达式
  • await必须写在asyna函数中
  • await右侧的表达式一般为promise对象
  • await返回的是promise成功的值
  • await的promise失败了,就会抛出异常,需要通过try…catch捕获处理
// 创建promise对象
const p = new Promise((resolve, reject) => {
    // resolve('success');
    reject("wrong");
})
// await 要放在async函数中
async function main() {
    try {
        let result = await p;
        console.log(result);
    } catch (e) {
        console.log(e);
    }
}
main();
3. async和await结合读取文件
  • 发送ajax请求

    function sendAJAX(url) {
        return new Promise((resolve, reject) => {
            // 1. 创建对象
            const x = new XMLHttpRequest();
            // 2. 初始化
            x.open('GET', url)
            // 3. 发送
            x.send();
            // 4. 事件绑定
            x.onreadystatechange = function () {
                if (x.readyState === 4) {
                    if (x.status >= 200 && x.status < 300) {
                        resolve(x.response);
                    } else {
                        reject(x.status);
                    }
                }
            }
        })
    }
    
    • 发送AJAX请求
async function main() {
    await sendAJAX("http://api.apiopen.top/getJoke");
    // 返回结果是promise
}
main();
4. Object.values和Object.entries
  • Object.values
  • Object.entries
const school = {
    name: 'pink',
    cities: ['beijing', 'shanghai', 'shenzhen'],
    xueke: ['前端', 'java']
}
// 获取对象所有的键
console.log(Object.keys(school));
// 获取对象所有的值
console.log(Object.values(school));
// 获取对象所有的键值
console.log(Object.entries(school));

输出结果:

在这里插入图片描述

5. getOwnPropertyDescriptors
// 对象属性的描述对象
console.log(Object.getOwnPropertyDescriptors(school));

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值