1.(ECMAScript)基本介绍及环境搭建

1. 重点提炼

  • ES新特性与旧语法对比说明,理解新特性优势
  • 新语法的应用场景
  • ES开发脚手架,开箱即用

2. 引言

image-20201110213318732

image-20201110213352065

image-20201110213408180

学会框架 ≠ \neq = 掌握前端

无论使用哪种方式(框架)写代码(盖房子),es实际就是砖头,在项目中必不可少。

image-20201110213651399

ES每年都会出一个版本。 => es新特性,及语法的升级。

image-20201110214058704


3. es环境

es新特性兼容性可能不是太好。

image-20201110230504364

通过转译 =>

image-20201110230634609

配置了脚手架工具直接生成转译后的代码 => es5

image-20210112212228310


4. 环境搭建

首先需要安装node,需要npm来安装包。

npm安装较慢 => NRM,可选择下载最快的源

image-20201110232042740

nrm ls当前可下载的源

* 代表当前的源
image-20210112212814070

nrm test => 测试哪个源快?

image-20210112212910796

nrm use => 切换源

image-20210112212933704

nrm current => 查看当前使用的源

image-20210112212958775

也可增加自定义的源,如公司的源

增加定制源: nrm add custom01 http://192.168.1.100:6666

删除源:nrm del custom01


5. 构建开发环境

安装

首页

注意:这是小迪自己构建webpack环境,如有问题,大家可留有。

image-20210112203844243

Windows:npm install xd-es-cli -g

Mac:sudo npm install xd-es-cli -g

初始化

cd进入到要初始化项目的文件夹

初始化命令:xd-es-cli init => 输入项目名称

初始化项目 => 英文

image-20201118135316584

进入项目 cd es-demo

安装依赖:npm install

image-20210112210435056

启动项目:npm run start

image-20210112210506636

image-20201118143002947

帮助查看命令列表 =>

image-20210112210618073

static下的文件并不会被webpack进行打包编译,而是复制到我们的生成环境中。


通过几个案例,来对比ES6+语法新特性的魅力所在。

6. 案例1:可选链

读取一个被连接对象的深层次的属性的值 => ?.

const user = {
    address: {
        street: 'xx街道',
        getNum() {
            return '80号'
        }
    }
}

ES5语法:

const street = user && user.address && user.address.street
const num = user && user.address && user.address.getNum && user.address.getNum()

ES6+语法:

const street = user?.address?.street
const num = user?.address?.getNum?.()

7. 案例2:消除魔术字符串

魔术字符串指的是在代码之中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。风格良好的代码,应该尽量消除魔术字符串,改由含义清晰的变量代替。

魔术字符串容易写错 => Symbol类型数据去解决

ES5语法:

function getArea(shape) {
    let area = 0
    switch (shape) {
        case 'Triangle':
            area = 1
            break
        case 'Circle':
            area = 2
            break
    }
    return area
}
getArea('Triangle')

ES6+语法:

const shapeType = {
    triangle: Symbol(),
    circle: Symbol()
}
function getArea(shape) {
    let area = 0
    switch (shape) {
        case shapeType.triangle:
            area = 1
            break
        case shapeType.circle:
            area = 2
            break
    }
    return area
}
getArea(shapeType.triangle)

8. 案例3:将类数组转化为数组

const arrayLike = document.querySelectorAll('.item')

ES5语法

Array.prototype.slice.call(arrayLike)

ES6+语法

Array.from(arrayLike)

9. 案例4:优雅的异步操作与解构赋值

ES5语法

如果回调层层依赖,就会变成回调地狱。

function getData (url) {
    ajax(url, function (res) {
        var data = res.data
        this.list = data
    })
}

ES6+语法

async function getData (url) {
    const { data } = await axios.get(url)
    this.list = data
}


(后续待补充)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值