vue解构赋值_前端开发es6知识 模块化、解构赋值、字符串模板

项目开发中一些常用的es6知识,主要是为以后分享小程序开发、node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫。

项目开发常用es6介绍1、块级作用域 let const

2、箭头函数及this指向

3、promise、asnyc await语法

4、模块化 module export和import

5、解构赋值、字符串模板

……

Module

Module即模块的意思,在一些小项目中可能用不到这个概念。但是对于一些大型的、复杂的项目尤其在多人协作的情况下几乎是必须的。

在 ES6 之前,最主要的有 CommonJS 和 AMD 两种模块化解决方案。前者用于服务器,后者用于浏览器。ES6 的出现实现了模块功能,而且实现得相当简单完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。

简单的说ES6 模块是通过export命令指定输出的代码,再通过import命令导入

下面我们直接通过代码来演示:

DOCTYPE html

>

<

html

>

<

head lang

=

"en"

>

<

meta charset

=

"UTF-8"

>

<

title

>

title

>

head

>

<

body

>

<

script type

=

"module"

>

//index.html

import

*

as util from

"./js/scrpit.js"

;

//用星号(*)指定一个对象,所有输出值都加载在这个对象上面

util

.

func1

()

//1

util

.

func2

()

//2

console

.

log

(

util

.

a

==

3

)

//true

script

>

body

>

html

>

//script.js

export

function

func1

()

{

console

.

log

(

1

)

}

export

function

func2

()

{

console

.

log

(

2

)

}

export

var

a

=

3

;

可以看到body里面的script标签与我们平常写的稍有不同,加入了type="module"属性,这样浏览器才会知道这是一个 ES6 模块。

当然,模块的导入导出还可以有别的方式:

比如常用的导出模块的两种方式:

//script.js 方式1

export

function

func1

()

{

console

.

log

(

1

)

}

export

function

func2

()

{

console

.

log

(

2

)

}

export

var

a

=

3

;

//script.js 方式2

function

func1

()

{

console

.

log

(

1

)

}

function

func2

()

{

console

.

log

(

2

)

}

var

a

=

3

;

export

{

func1

,

func2

,

a

}

常用的导入模块的两种方式:

///方式1

import

{

func1

,

func2

,

a

}

from

"./js/scrpit.js"

;

func1

()

//1

func2

()

//2

console

.

log

(

a

==

3

)

//true

///方式2

import

*

as util from

"./js/scrpit.js"

;

util

.

func1

()

//1

util

.

func2

()

//2

console

.

log

(

util

.

a

==

3

)

//true

解构赋值

其实在模块的导入中就已经用到了解构赋值。即按照一定模式,从数组和对象中提取值,并对变量进行赋值。

下面列举一些简单的示例,如需深入学习建议大家去学习阮一峰写的es6入门哈

//情景1

let

[

foo

,

[[

bar

],

baz

]]

=

[

1

,

[[

2

],

3

]];

foo

// 1

bar

// 2

baz

// 3

//情景2

let

[

,

,

third

]

=

[

"foo"

,

"bar"

,

"baz"

];

third

// "baz"

//情景3

let

[

x

,

,

y

]

=

[

1

,

2

,

3

];

x

// 1

y

// 3

//情景4

let

[

head

,

...

tail

]

=

[

1

,

2

,

3

,

4

];

head

// 1

tail

// [2, 3, 4]

//情景5

let

[

x

,

y

,

...

z

]

=

[

'a'

];

x

// "a"

y

// undefined

z

// []

如果解构不成功,变量的值就等于undefined。

let

[

foo

]

=

[];

let

[

bar

,

foo

]

=

[

1

];

以上两种情况都属于解构不成功,foo的值都会等于undefined。

另一种情况是不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。

let

[

x

,

y

]

=

[

1

,

2

,

3

];

x

// 1

y

// 2

let

[

a

,

[

b

],

d

]

=

[

1

,

[

2

,

3

],

4

];

a

// 1

b

// 2

d

// 4

上面两个例子,都属于不完全解构,但是可以成功。

如果等号的右边不是数组(或者严格地说,不是可遍历的结构),那么将会报错。

// 报错

let

[

foo

]

=

1

;

let

[

foo

]

=

false

;

let

[

foo

]

=

NaN

;

let

[

foo

]

=

undefined

;

let

[

foo

]

=

null

;

let

[

foo

]

=

{};

解构赋值允许指定默认值。

注意,ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。

let

[

foo

=

true

]

=

[];

foo

// true

let

[

x

,

y

=

'b'

]

=

[

'a'

];

// x='a', y='b'

let

[

x

,

y

=

'b'

]

=

[

'a'

,

undefined

];

// x='a', y='b'

let

[

x

=

1

]

=

[

undefined

];

x

// 1

let

[

x

=

1

]

=

[

null

];

x

// null

//上面代码中,如果一个数组成员是null,默认值就不会生效,因为null不严格等于undefined。

解构不仅可以用于数组,还可以用于对象。

let

{

foo

,

bar

}

=

{

foo

:

"aaa"

,

bar

:

"bbb"

};

foo

// "aaa"

bar

// "bbb"

对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

let

{

bar

,

foo

}

=

{

foo

:

"aaa"

,

bar

:

"bbb"

};

foo

// "aaa"

bar

// "bbb"

let

{

baz

}

=

{

foo

:

"aaa"

,

bar

:

"bbb"

};

baz

// undefined

如果变量名与属性名不一致,必须写成下面这样。

let

{

foo

:

baz

}

=

{

foo

:

'aaa'

,

bar

:

'bbb'

};

baz

// "aaa"

let obj

=

{

first

:

'hello'

,

last

:

'world'

};

let

{

first

:

f

,

last

:

l

}

=

obj

;

f

// 'hello'

l

// 'world'

对象的解构也可以指定默认值。默认值生效的条件是,对象的属性值严格等于undefined。

var

{

x

=

3

}

=

{

x

:

undefined

};

x

// 3

var

{

x

=

3

}

=

{

x

:

null

};

x

// null

模板字符串

传统的 JavaScript 语言,输出模板通常是这样写的:

$

(

'#result'

).

append

(

'There are '

+

basket

.

count

+

' '

+

'items in your basket, '

+

''

+

basket

.

onSale

+

' are on sale!'

);

上面这种写法相当繁琐不方便,ES6 引入了模板字符串解决这个问题。

$

(

'#result'

).

append

(`

There

are

<

b

>

$

{

basket

.

count

}

b

>

items

in your basket

,

<

em

>

$

{

basket

.

onSale

}

em

>

are on sale

!

`);

即用反引号(Tab上面的按键)表示,如果模板字符串中嵌入变量,需要将变量名写在${}之中。这样就不需要使用大量的引号和加号,大大节约了开发时间。

注:在本地浏览器中使用模块化需要配置服务环境,如果使用的是vscode编辑器可以安装Open with live server插件,安装完成后重启编辑器就可以在.html文件上右键选择Open with live server,然后浏览器输入localhost:5500打开,端口号看编辑器最下方提示。如果是Hbuilder编辑器则需要配置一下web服务器,其它编辑器具体的可以百度一下哈。阿门~

做开发十多年的时间,如果大家对于学习编程有很多疑惑,没有思路,不知道如何有效率的学习,可以私信我,我带你起飞,如果需要最新系统的学习教程也可以管我要。做了很多年开发,对于学习方式,如何提高自己的技术有一定的经验,术业有专攻,多跟有经验的人交流学习,对这个行业信息了解的多,职业发展的空间就越大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当云原生遇到混合云:如何实现“求变”与“求稳”的平衡

简介&#xff1a; 多年来&#xff0c;随着云计算技术的蓬勃发展和落地&#xff0c;越来越多的企业选择采用云计算技术来帮助自己快速完成业务数字化转型&#xff0c;以便能更好地适应市场变化&#xff0c;进而赢得更大的市场空间。 作者|郝树伟 Flexera 的《RightScale2021 云…

之前写的 JSX 的条件语句竟然存在那么多 Bug?

作者 | 零一来源 | 前端印象今天的主题是&#xff1a;关于 JSX 的条件语句&#xff0c;你不知道3件事一、&&隐藏大坑在 JSX 里写条件语句&#xff0c;&& 应该是用的最多的了&#xff0c;例如&#xff1a;function Demo () {// ...省略一些代码return (<div&…

如何高效学习 Kubernetes 知识图谱?

简介&#xff1a; Kubernetes 知识图谱遵循云原生人才学习路径搭建课程体系框架&#xff0c;及人才发展路线设置不同阶段&#xff0c;由浅入深&#xff0c;帮助云原生人才学习容器基础、Kuternetes 网络、存储、资源对象、服务发现、应用编排与管理等 Kubernetes 完整技术栈内容…

中科院信工所经验_2021中科院信息工程研究所电子信息专业考研经验指导分享...

一、在计算机如此火热的今天&#xff0c;为什么选择要读研&#xff1f;我是一个乐观主义者&#xff0c;上大学以来我一直庆幸自己在高考结束填志愿的时候选择了计算机专业&#xff0c;更庆幸报考了湖南大学信息科学与工程学院&#xff0c;高考仅仅一分的优势把我送到了最美的学…

极验创始人吴渊:恶意流量威胁新趋势,揭秘网络黑产3大核心本质

记者 | 邓晓娟出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;天下没有免费的午餐&#xff0c;更没有免费的流量。以电商为例&#xff0c;最疯狂的时候&#xff0c;某电商平台单个获客成本接近400元。作为互联网的稀缺资源&#xff0c;流量的成本不断冲击着…

如何将一棵LSM-Tree塞进NVM

简介&#xff1a; 随着非易失内存产品的商业化推广&#xff0c;我们对于其在云原生数据库中大规模推广的潜力越来越有兴趣。X-Engine是阿里云数据库产品事业部PolarDB新型存储引擎团队研发的一个LSM-tree存储引擎&#xff0c;目前在阿里云PolarDB产品上提供对外服务。我们以X-E…

axiosa安装_axios安装指令及数据请求

axios安装指令及数据请求1、axios安装指令&#xff1a;cnpm axios --save在核心文件(main.js)中引入import axios from axiosVue.prototype.$axios sxiosv-for"(item,index) in goods":key"index"style"border:1px solid #999;margin:10px"clic…

计算机模拟数学实验动画,计算机图形学实验-简单动画的实现、三维图形变换.docx...

安徽大学计算机实验教学中心PAGE安徽大学计算机实验教学中心PAGE 1学号 专业 姓名实验日期2018.12.11 教师签字 成绩实验报告【实验名称】简单动画的实现、三维图形变换【实验目的】指定图形运动轨迹&#xff0c;实现物体的移动过程和移动速度控制&#xff1b;(2) 理解并掌握形…

再见了,我的散装研发管理平台;再见了,4台ECS!

简介&#xff1a; 目前云效全家桶的功能相对来说比较适合个人开发或者中小团队的群体&#xff0c;如果你此时正在为搭建这类管理平台做选型&#xff0c;同时预算和人力都捉襟见肘&#xff0c;那么不妨试试云效这个产品&#xff01;一起白嫖一起爽&#xff01;尤其服务器资源在阿…

15拆分成3个不同的自然数_17个数学重点知识点汇总,一篇搞定小升初

更多电子版学习资料请关注公众号&#xff1a;小学资源园地1体积和表面积三角形的面积底高2。公式 S ah2正方形的面积边长边长 公式 S a2长方形的面积长宽 公式 S ab平行四边形的面积底高 公式 S ah梯形的面积(上底下底)高2 公式 S(ab)h2内角和&#xff1a;三角形的内角和180度。…

走进统信软件,读懂国产操作系统新生态建设

回顾国际 2021 操作系统领域发展&#xff0c;有起伏有波澜&#xff1a;开源操作系统 Linux 迎来 30 岁&#xff0c;全球超级计算机 500 强和超过 70% 的智能手机都运行其上&#xff1b;CentOS 突然宣布 CentOS 8 停止维护&#xff0c;不少企业不得不面临迁移难题…… 反观国产…

Serverless 工程实践 | Serverless 应用开发观念的转变

简介&#xff1a; Serverless 架构带来的除了一种新的架构、一种新的编程范式&#xff0c;还包括思路上的转变&#xff0c;尤其是开发过程中的一些思路转变。有人说要把 Serverless 架构看成一种天然的分布式架构&#xff0c;需要用分布式架构的思路去开发 Serverless 应用。诚…

中科院计算机所硕士导师,中科院计算技术研究所研究生导师介绍:毕经平

中科院计算技术研究所研究生导师介绍&#xff1a;毕经平简历:2002年7月于中国科学院计算所获得博士学位&#xff0c;同年9月被破格提拔为计算所副研究员&#xff0c;2008年3月被任命为博士生导师&#xff0c;2009年1月获得卢嘉锡青年人才奖作者佚名次阅读2014-05-15代表论著:1)…

一文总结Java\JDK 17发布的新特性

简介&#xff1a; JDK 17已经于2021年3月16日如期发布。本文介绍JDK 17新特性。JDK 17于2021年9月14日正式发布&#xff08;General-Availability Release&#xff09;。JDK 17将是大多数供应商的长期支持&#xff08;LMS&#xff09;版本。上一个LTS版本是JDK 11。 本文总结了…

bash: 未预期的符号 `( 附近有语法错误_安规群中关于泄漏电流测试、接地符号等相关的6个问题,快来围观大神的回答吧!...

【本文属"世界认证地图"原创&#xff0c;未经允许&#xff0c;请勿转载哦~~~】问题一群员提问&#xff1a;接地这样符合GB4706.1-2005的标准要求吗&#xff1f;图片由群友提供群友解答&#xff1a;接地符号标错地方&#xff0c;应该如下图图片由群友提供专家解答&…

怎么测试服务器的性能,如何测试服务器性能

如何测试稳定性测试已知系统高峰期使用人数、各事务操作频率等。设计综合测试场景&#xff0c;测试时&#xff0c;将每个场景按照一定人数比例一起运行&#xff0c;模拟用户使用数的情况。并监控在测试中&#xff0c;系统各性能指标在这种压力下是否能保持正常数值。事务响应时…

WPF自定义控件的三种方式

简介&#xff1a; 某些场景下&#xff0c;我们确实需要创建新的控件。此时&#xff0c;理解 WPF不同控件的创建方法就显得非常重要。 WPF 提供3个用于创建控件的方法&#xff0c;每个方法都提供不同的灵活度。 WPF控件可以通过数据模型&#xff08;DataTemplate&#xff09;、…

多项“首次”落地 腾讯云数据库助力金融机构国产化

日前&#xff0c;IDC发布了《2021年上半年中国关系型数据库软件市场跟踪报告》&#xff0c;数据显示&#xff0c;我国关系型数据库市场规模迅速增长。2021上半年&#xff0c;中国关系型数据库软件市场规模为11.9亿美元&#xff0c;整体市场同比增长37.2%。IDC预测&#xff0c;2…

庖丁解牛-图解MySQL 8.0优化器查询转换篇

简介&#xff1a; 在《庖丁解牛-图解MySQL 8.0优化器查询解析篇》一文中我们重点介绍了MySQL最新版本8.0.25关于SQL基本元素表、列、函数、聚合、分组、排序等元素的解析、设置和转换过程&#xff0c;本篇我们继续来介绍更为复杂的子查询、分区表和JOIN的复杂转换过程。 作者 |…

5e检索服务器信息,5Eplay易玩网服务器出租常见问题解答(FAQ)

Q1&#xff1a;我什么时间可以租服&#xff1f;A&#xff1a;我们的工作时间是每周一到周五的上午九点到下午六点(节假日除外)&#xff0c;您可以先测试服务器&#xff0c;然后在工作时间联系我们。测试服&#xff1a;[上海电信]: 101.227.68.10:9999 进服密码123 [北京双线]: …