Web前端模块化开发教程全套ppt课件最全电子教案完整版教学教程整套全书课件ppt_第1页
Web前端模块化开发教程全套ppt课件最全电子教案完整版教学教程整套全书课件ppt_第2页
Web前端模块化开发教程全套ppt课件最全电子教案完整版教学教程整套全书课件ppt_第3页
Web前端模块化开发教程全套ppt课件最全电子教案完整版教学教程整套全书课件ppt_第4页
Web前端模块化开发教程全套ppt课件最全电子教案完整版教学教程整套全书课件ppt_第5页
已阅读5页,还剩1014页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 ES6基础Web前端模块化开发教程(ES6+Node.js+Webpack)学习目标/Target 了解ES6的概念,能够对ES6有一个初步的认识 掌握let和const关键字的使用,能够选择合适的关键字声明变量 掌握解构赋值的使用,能够实现数组或对象的解构赋值 掌握箭头函数的使用,能够正确使用this关键字 掌握剩余参数的使用,能够正确获取剩余参数学习目标/Target 掌握扩展运算符的使用,能够实现数组合并,以及将伪数组转换为真正的数组 掌握模板字符串的使用,能够实现变量解析、换行和调用函数等操作 掌握ES6内置对象扩展的使用,能够实现数组和字符串的处理 掌握Set数据结构和Sym

2、bol的基本使用,能够实现数据的操作章节概述/ SummaryECMAScript是由ECMA国际标准化组织制定的一项脚本语言的标准化规范,ES6表示ECMAScript规范的第6版,它的正式名称为ECMAScript 2015,这个版本中新增了很多实用的语法规范。近几年,ECMAScript的更新速度很快,每年都会发布一个新版本。本章将详细讲解ES6常用的语法规范。目录/Contents010203初识ES6let和const关键字解构赋值0405箭头函数剩余参数目录/Contents060708扩展运算符模板字符串ES6的内置对象扩展0910Set数据结构初识Symbol初识ES61.1

3、先定一个小目标!了解ES6的概念,能够对ES6有一个初步的认识初识ES6初识ES6ES6的目标是使JavaScript语言可以适应更复杂的应用,实现代码库之间的共享,并迭代维护新版本,成为企业级开发语言。ECMAScript和JavaScript语言,两者之间存在的关系。简单来说,ECMAScript是JavaScript语言的国际标准,JavaScript是实现ECMAScript标准的脚本语言。ES6历史发展初识ES62011年,ECMA国际标准化组织在发布ECMAScript 5.1版本之后,就开始着手制定第6版规范。存在的问题:这个版本引入的语法功能太多,而且制定过程当中,还有很多组织

4、和个人不断提交新功能。很明显,在一个版本中不可能包含所有的要引入的新功能,这些功能要被发布在不同的版本中。解决方法:标准的制定者决定在每年的6月份发布一次新标准,并且使用年份作为版本号。初识ES6年份版本简称2015年6月ECMAScript 2015ES62016年6月ECMAScript 2016ES72017年6月ECMAScript 2017ES82018年6月ECMAScript 2018ES92019年6月ECMAScript 2019ES102020年6月ECMAScript 2020ES11ECMAScript各版本的发布时间let和const关键字1.2 先定一个小目标!掌握

5、let关键字,能够正确使用let关键字声明变量1.2.1 let关键字1.2.1 let关键字let是ES6中新增的用于声明变量的关键字。在ES6之前,我们使用var关键字来声明变量。与var关键字相比,let关键字有一些新的特性。let关键字的新的特性: let关键字声明的变量只在所处的块级作用域有效。 let关键字声明的变量不存在变量提升。 let关键字声明的变量具有暂时性死区特性。1. let关键字声明的变量只在所处的块级作用域有效 if (true) let a = 10; console.log(a);/ 输出结果:10 console.log(a);/ 报错,a未定义1.2.1 l

6、et关键字第1个好处:防止代码块内层变量覆盖外层变量 for (let i = 0; i 2; i+) console.log(i);/ 报错,i未定义1.2.1 let关键字第2个好处:防止循环变量变成全局变量1. let关键字声明的变量只在所处的块级作用域有效1.2.1 let关键字在使用var关键字声明变量时,变量可以先使用再声明,这种现象就是变量提升。但一般的编程习惯,变量应该在声明之后才可以使用。在ES6中,变量的使用规范更加严格,使用let关键字声明的变量只能在声明之后才可以使用,否则就会报错。2. let关键字声明的变量不存在变量提升 console.log(a);/ 报错,a未

7、初始化 let a = 10; 1.2.1 let关键字不存在变量提升的代码演示2. let关键字声明的变量不存在变量提升1.2.1 let关键字使用let关键字声明的变量具有暂时性死区特性。这是因为let关键字声明的变量不存在变量提升,其作用域都是块级作用域,在块级作用域内使用let关键字声明的变量会被整体绑定在这个块级作用域中形成封闭区域,不再受外部代码影响。所以在块级作用域内,使用let关键字声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”。3. let关键字声明的变量具有暂时性死区 var num = 10; if (true) console.log(num);/ 报

8、错,无法在初始化之前访问num let num = 20; 1.2.1 let关键字暂时性死区的代码演示3. let关键字声明的变量具有暂时性死区 先定一个小目标!掌握const关键字,能够利用const关键字声明常量1.2.2 const关键字1.2.2 const关键字const是ES6中新增的用于声明常量的关键字。所谓常量就是值(内存地址)不能变化的量。const关键字声明的常量的特点: const关键字声明的常量具有块级作用域。 const关键字声明常量时必须赋值。 const关键字声明常量并赋值后常量的值不能修改。1. const关键字声明的常量具有块级作用域 if (true) c

9、onst a = 10; console.log(a);/ 输出结果:10 console.log(a);/ 报错,a未定义1.2.2 const关键字演示const关键字声明的常量块级作用域效果2. const关键字声明常量时必须赋值1.2.2 const关键字演示const关键字声明常量时不赋值的情况 const PI;/ 报错,常量PI未赋值 const PI = 3.14; PI = 100;/ 报错,无法对常量赋值3. const关键字声明常量并赋值后常量的值不能修改1.2.2 const关键字(1)对于基本数据类型(如数值、字符串),一旦赋值,值就不可修改。 const ary =

10、 100, 200; ary0 = a; ary1 = b; console.log(ary); / 可以更改数组内部的值,结果为a, b ary = a, b; / 报错,无法对常量赋值1.2.2 const关键字(2)对于复杂数据类型(如数组、对象),虽然不能重新赋值,但是可以更改内部的值。3. const关键字声明常量并赋值后常量的值不能修改 先定一个小目标!了解let、const、var关键字之间的区别,能够说出3点区别1.2.3 let、const、var关键字之间的区别1.2.3 let、const、var关键字之间的区别使用var关键字声明的变量,其作用域为该语句所在的函数内,且

11、存在变量提升现象。使用let关键字声明的变量和使用const关键字声明的常量都具有块级作用域。变量的作用域范围不同使用var关键字声明的变量存在变量提升,可以先使用再声明。使用let关键字声明的变量和const关键字声明的常量不存在变量提升功能,只能先声明再使用。变量提升使用var关键字和let关键字声明的变量,可以更改变量的值,但使用const关键字声明的常量,不能更改常量值对应的内存地址。值是否可以更改let、const、var关键字之间的区别1.2.3 let、const、var关键字之间的区别在编写程序的过程中,如果要存储的数据不需要更改,建议使用const关键字,如函数的定义、 值或

12、数学公式中一些恒定不变的值。由于使用const声明的常量,其值不能更改,且JavaScript解析引擎不需要实时监控值的变化,所以使用const关键字要比let关键字效率更高。解构赋值1.3 先定一个小目标!掌握数组的解构赋值,能够对数组进行解构赋值操作1.3.1 数组的解构赋值1.3.1 数组的解构赋值解构表示对数据结构进行分解,赋值指变量的赋值。在ES6中,允许按照一一对应的方式,从数组或对象中提取值,然后将提取出来的值赋给变量。解构赋值的优点是它可以让编写的代码简洁易读,语义更加清晰,并且可以方便地从数组或对象中提取值。1.3.1 数组的解构赋值数组的解构赋值,就是将数组中的值提取出来,

13、然后赋值给另外的变量。 let a, b, c = 1, 2, 3; console.log(a);/ 输出结果:1 console.log(b);/ 输出结果:2 console.log(c);/ 输出结果:3变量的数量和数组中值的数量相一致的情况1.3.1 数组的解构赋值 let a, b, c, d = 1, 2, 3; console.log(a);/ 输出结果:1 console.log(b);/ 输出结果:2 console.log(c);/ 输出结果:3 console.log(d);/ 输出结果:undefined变量的数量和数组中值的数量不一致的情况 先定一个小目标!掌握对象

14、的解构赋值,能够为对象进行解构赋值操作1.3.2 对象的解构赋值1.3.2 对象的解构赋值对象解构允许使用变量的名字匹配对象中属性,如果匹配成功就将对象中属性的值赋值给变量。 let person = name: zhangsan, age: 20 ; let name, age = person;/ 解构赋值 console.log(name);/ 输出结果:zhangsan console.log(age);/ 输出结果:20对象解构的示例代码变量的名字具体被解构的对象1.3.2 对象的解构赋值使用另外一种形式去实现对象的解构赋值,该形式支持变量的名字和对象中属性的名字不一样的情况,等号左

15、边的大括号代表对象解构。 let person = name: zhangsan, age: 20, sex: 男 ; let name: myName = person; console.log(myName);/ zhangsan对象解构的另一种形式属性名:变量名具体被解构的对象箭头函数1.4 先定一个小目标!熟悉箭头函数的语法,能够正确写出箭头函数1.4.1 箭头函数的语法1.4.1 箭头函数的语法箭头函数是ES6中新增的函数,它用于简化函数的定义语法,有自己的特殊语法,接收一定数量的参数,并在其封闭的作用域的上下文(即定义它们的函数或其他代码)中操作。() = 箭头函数基本语法ES6中

16、,箭头函数的基本语法1.4.1 箭头函数的语法箭头函数以小括号开头,在小括号中可以放置参数。小括号的后面要跟着箭头(=),箭头后面要写一个大括号来表示函数体,这是箭头函数的固定语法。箭头函数调用:因为箭头函数没有名字,我们通常的做法是把箭头函数赋值给一个变量,变量名就是函数名,然后通过变量名去调用函数即可。 const fn = () = console.log(123);/ 输出结果:123 ; fn();/ 函数调用定义没有参数的箭头函数1.4.1 箭头函数的语法 先定一个小目标!熟悉箭头函数的特点,能够说出箭头函数的具体特点1.4.2 箭头函数的特点1.4.2 箭头函数的特点consts

17、um=(num1,num2)=num1+num2; / 等价于/ constsum=(num1,num2)=/ returnnum1+num2;/ ;constresult=sum(10,20); /使用result接收sum()函数执行的结果console.log(result); /在控制台输出result值,结果为30计算两个数值相加的结果特点1: 省略大括号在箭头函数中,如果函数体中只有一句代码,且代码的执行结果就是函数的返回值,此时可以省略函数体大括号。1.4.2 箭头函数的特点 / 传统的函数定义方式 / function fn(v) / return v; / / ES6中函数定

18、义方式 const fn = v = v;只有一个参数的函数定义方式特点2: 省略参数外部的小括号在箭头函数中,如果参数只有一个,可以省略参数外部的小括号。1.4.2 箭头函数的特点 const fn = v = alert(v); ; fn(20);示例代码定义带有一个参数的函数,并在浏览器的弹出框中弹出参数值。特点2: 省略参数外部的小括号 先定一个小目标!掌握箭头函数中的this关键字,能够在箭头函数中正确使用this关键字1.4.3 箭头函数中的this关键字1.4.3 箭头函数中的this关键字ES6前,JavaScript的this关键字指向的对象是在运行时基于函数的执行环境绑定的

19、,在全局函数中,this指向的是window;当函数被作为某个对象的方法调用时,this就指向那个对象。ES6中,箭头函数不绑定this关键字,它没有自己的this关键字,如果在箭头函数中使用this关键字,那么this关键字指向的是箭头函数定义位置的上下文this。也就是说,箭头函数被定义在哪,箭头函数中的this就指向谁。1.4.3 箭头函数中的this关键字箭头函数解决了this执行环境所造成的一些问题,如解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout()和setInterval()中使用this所造成的问题。constobj=name:zha

20、ngsan;functionfn()console.log(this);/输出结果:name:zhangsanreturn()=console.log(this);/输出结果:name:zhangsan; / call()方法可以改变函数内部的this指向,将函数fn()内部的this指向obj对象constresFn=fn.call(obj);resFn();1.4.3 箭头函数中的this关键字演示ES6中this的指向,示例代码剩余参数1.5 先定一个小目标!熟悉剩余参数的语法,能够在程序中正确获取剩余参数1.5.1 剩余参数的语法1.5.1 剩余参数的语法剩余参数是指在函数中,当函数实

21、参个数大于形参个数时,剩余的实参可以存放到一个数组中。剩余参数语法允许将一个不确定数量的参数表示为数组。这种不确定参数的定义方式对于声明一个具有未知参数个数的函数非常方便。1.5.1 剩余参数的语法剩余参数是程序员自定义的一个普通标识符,接收剩余参数的变量是一个数组(Array的实例),能够直接使用所有的数组方法,如 sort()、map()、forEach()或pop()方法等。 function sum(first, .args) console.log(first); / 输出结果:10 console.log(args); / 输出结果:20, 30 sum(10, 20, 30);剩

22、余参数代码演示接收剩余参数1.5.1 剩余参数的语法 const sum = (.args) = let total = 0; args.forEach(item) = total += item; ); / 等价于:args.forEach(item = total += item); return total; ; console.log(sum(10, 20); / 输出结果:30 console.log(sum(10, 20, 30); / 输出结果:60使用剩余参数计算多个数值的求和结果 先定一个小目标!掌握剩余参数和解构赋值配合使用,能够在解构赋值时获取剩余参数1.5.2 剩余参数

23、和解构赋值配合使用1.5.2 剩余参数和解构赋值配合使用 / 以数组的解构赋值为例 let students = 王五, 张三, 李四; let s1, .s2 = students; console.log(s1); / 输出结果:王五 console.log(s2); / 输出结果:张三, 李四演示剩余参数和解构的使用方法扩展运算符1.6 先定一个小目标!熟悉扩展运算符的语法,能够在程序中正确使用扩展运算符1.6.1 扩展运算符的语法扩展运算符和剩余参数的作用是相反的,扩展运算符可以将数组或对象转换为用逗号分隔的参数序列。扩展运算符也用3个点“”表示。1.6.1 扩展运算符的语法 let

24、ary = 1, 2, 3; / .ary相当于1, 2, 3 console.log(.ary);/ 输出结果:1 2 3 / 等价于 console.log(1, 2, 3);/ 输出结果:1 2 3扩展运算符在数组中的使用演示1.6.1 扩展运算符的语法小提示:使用扩展运算符将ary数组拆分成以逗号分隔的参数序列后,又将参数序列放在了console.log()方法中,此时参数序列中的逗号会被当成console.log()方法的参数分隔符,所以输出结果中没有逗号。 先定一个小目标!掌握扩展运算符的应用,能够利用扩展运算符对数组进行操作1.6.2 扩展运算符的应用1.6.2 扩展运算符的应用

25、 let ary1 = 1, 2, 3; let ary2 = 4, 5, 6; / .ary1 / 表示将ary1数组拆分成1, 2, 3 / .ary2 / 表示将ary2数组拆分成4, 5, 6 let ary3 = .ary1, .ary2; console.log(ary3);/ 输出结果:(6) 1, 2, 3, 4, 5, 6数组合并的第1种方法1. 利用扩展运算符合并数组1.6.2 扩展运算符的应用 let ary1 = 1, 2, 3; let ary2 = 4, 5, 6; ary1.push(.ary2); console.log(ary1); / 输出结果:(6) 1,

26、 2, 3, 4, 5, 6数组合并的第2种方法1. 利用扩展运算符合并数组1.6.2 扩展运算符的应用伪数组:可以应用数组的length属性但是无法直接调用数组方法,它也可以像数组一样进行遍历。典型的伪数组包括函数中的arguments、document.getElementsByTagName()返回的元素集合,以及document.childNodes等。2. 利用扩展运算符将伪数组转换为真正的数组1.6.2 扩展运算符的应用123 456varoDivs=document.getElementsByTagName(div);console.log(oDivs);/ 输出结果:HTMLC

27、ollection(6)div, div, div, div, div, divvarary=.oDivs;ary.push(a);/在数组中追加aconsole.log(ary);/输出结果:(7)div, div, div, div, div, div, a将伪数组转换为真正的数组2. 利用扩展运算符将伪数组转换为真正的数组模板字符串1.7 先定一个小目标!掌握模板字符串的使用,能够在模板字符串中解析变量、换行以及调用函数1.7.1 模板字符串的语法模板字符串是ES6新增的创建字符串的方式,它使用反引号进行定义。1.7.1 模板字符串的语法 let name = 这是一个模板字符串; co

28、nsole.log(name);/ 输出结果:这是一个模板字符串定义模板字符串1.7.2 模板字符串的应用 let name = 张三; let sayHello = Hello, 我的名字叫$name; console.log(sayHello); / 输出结果:Hello, 我的名字叫张三演示模板字符串如何解析变量1. 模板字符串可以解析变量1.7.2 模板字符串的应用letresult= name:zhangsan,age:20,sex:男;lethtml=$result.age$result.sex;console.log(html);演示模板字符串中如何换行2. 在模板字符串中可以换

29、行1.7.2 模板字符串的应用在浏览器控制台中查看运行结果运行结果1.7.2 模板字符串的应用 const fn = () = return 我是fn函数; ; let html = 我是模板字符串 $fn(); console.log(html);/ 输出结果:我是模板字符串 我是fn函数演示模板字符串中如何调用函数3. 在模板字符串中可以调用函数ES6的内置对象扩展1.8 先定一个小目标!掌握数组的扩展方法,能够使用数组的扩展方法对数组进行操作1.8.1 数组的扩展方法1.8.1 数组的扩展方法ES6为Array(数组)、String(字符串)等内置对象提供了许多扩展方法,从而帮助开发人员

30、提高开发效率。通过扩展方法可以实现很多方便的功能,如将伪数组转换为真正的数组、在数组中查找出符合条件的数组成员等。1.8.1 数组的扩展方法vararrayLike= 0:张三,1:李四,2:王五,length:3;varary=Array.from(arrayLike);console.log(ary); / 输出结果:(3)张三, 李四, 王五示例代码1. Array.from()方法Array构造函数提供了一个from()方法,它可以接收一个伪数组作为参数,返回值为转换后的结果,这个结果是一个真正的数组。1.8.1 数组的扩展方法vararrayLike=0:1,1:2,2:3,leng

31、th:3;varary=Array.from(arrayLike,(item)=returnitem*2;);/ 等价于:varary=Array.from(arrayLike,item=item*2)console.log(ary);/ 输出结果:2, 4, 6示例代码在Array构造函数中,from()方法还可以接收两个参数,这与数组中的map()方法类似,它用于处理数组中的每个元素并将处理后的结果放入返回的数组中。1.8.1 数组的扩展方法varary=id:1,name:张三,id:2,name:李四;lettarget=ary.find(item, index)=item.id=2)

32、;console.log(target);/输出结果:id:2,name:李四演示查找出item.id值为2的对象2. 数组实例的find()方法在数组实例中,ES6提供了一个find()方法,它用于在数组中查找出第一个符合条件的数组成员。1.8.1 数组的扩展方法letary=1,5,10,15;letindex=ary.findIndex(value,index)=returnvalue9;);/ 等价于:letindex=ary.findIndex(value,index)=value9);console.log(index); /输出结果:2演示如何查找出数组中大于9的元素的位置3.

33、数组实例的findIndex()方法数组实例提供了一个findIndex()方法,用于在数组中查找出第一个符合条件的数组成员的索引,如果没有找到则返回-1。1.8.1 数组的扩展方法 let ary = a, b, c; let result = ary.includes(a); console.log(result);/ 输出结果:true result = ary.includes(e) console.log(result);/ 输出结果:false演示includes()方法的使用4. 数组实例的includes()方法ES6中为数组实例提供了includes()方法来检查某个数组是否

34、包含给定的值,返回一个布尔值,true表示包含给定的值,false表示不包含给定的值。 先定一个小目标!掌握字符串的扩展方法,能够通过字符串的扩展方法对字符串进行处理1.8.2 字符串的扩展方法1.8.2 字符串的扩展方法前面我们学习了数组的includes()方法,它用于在数组中查找出第一个符合条件的数组成员的位置。ES6也提供了字符串的includes()方法用来确定一个字符串是否包含在另一个字符串中。除此之外,ES6还提供了startsWith()方法和endsWith()方法同样可以用于字符串的查找。1. 字符串实例的startsWith()方法和endsWith()方法startsW

35、ith()方法表示参数字符串是否在原字符串的头部,用于判断字符串是否以某字符串开头;endsWith()方法表示参数字符串是否在原字符串的尾部,用于判断字符串是否以某字符串结尾。上述两个方法如果满足条件则返回true,反之返回false。1.8.2 字符串的扩展方法 let str = Hello ECMAScript 2015; let r1 = str.startsWith(Hello); console.log(r1); / 输出结果:ture let r2 = str.endsWith(2016); console.log(r2); / 输出结果:false演示startsWith()

36、方法和endsWith()方法的使用1.8.2 字符串的扩展方法2. 字符串实例的repeat()方法repeat()方法表示将原字符串重复n次,它返回一个新字符串,并接收一个数值作为参数,表示将字符串重复多少次。1.8.2 字符串的扩展方法 console.log(y . repeat(5);/ 输出结果:yyyyy console.log(hello . repeat(2);/ 输出结果:hellohello演示repeat()方法的使用Set数据结构1.9 先定一个小目标!掌握Set数据结构基本使用,能够利用Set数据结构保存数据1.9.1 Set数据结构基本使用1.9.1 Set数据结

37、构基本使用ES6提供了新的数据结构Set。Set类似于数组,但是成员的值都是唯一的,没有重复的值。Set实例的方法分为两大类,即操作方法(用于操作数据)和遍历方法(用于遍历成员)。Set数据结构常用于电商网站的搜索功能中,用户搜索完成后,网站要记录用户搜索的关键字,方便用户下次直接单击搜索历史关键字来完成搜索。 const s1 = new Set();/ 使用new关键字创建Set构造函数的实例 console.log(s1.size);/ 输出结果:0创建Set数据结构示例代码1. 创建Set数据结构Set本身是一个构造函数,创建此构造函数的实例对象就是创建Set数据结构。1.9.1 Se

38、t数据结构基本使用 const s2 = new Set(a, b); console.log(s2.size); / 输出结果:2初始化Set数据结构示例代码2. 初始化Set数据结构在创建Set数据结构时,也可以传递一个数组作为参数,用来初始化。1.9.1 Set数据结构基本使用 const s3 = new Set(a, a, b, b); console.log(s3.size); / 输出结果:2 const ary = .s3; console.log(ary); / 输出结果:(2) a, b数组去重示例代码3. 利用Set数据结构给数组去重在初始化Set构造函数时,可以传递一个

39、数组作为参数,如果数组中有重复的值,那么Set数据结构会把重复的值过滤掉。1.9.1 Set数据结构基本使用 先定一个小目标!掌握Set实例的操作方法,能够对Set实例进行添加、删除、判断和清除操作1.9.2 Set实例的操作方法 const s4 = new Set(); s4.add(a).add(b); console.log(s4.size); / 输出结果:2演示add()方法的使用1. Set实例的add()方法Set实例提供的add()方法用于向Set数据结构中添加某个值,它接收一个参数代表要添加的值,返回Set结构本身。1.9.2 Set实例的操作方法 const s4 = n

40、ew Set(); s4.add(a).add(b); const r1 = s4.delete(a); console.log(s4.size); / 输出结果:1 console.log(r1); / 输出结果:true演示delete()方法的使用2. Set实例的delete()方法Set实例提供的delete()方法用于删除Set数据结构中的某个值,它接收一个参数代表要删除的值,返回一个布尔值,如果结果为true则表示删除成功,为false则表示删除失败。1.9.2 Set实例的操作方法 const s4 = new Set(); s4.add(a).add(b); const r1

41、 = s4.delete(a); console.log(s4.size); / 输出结果:1 console.log(r1); / 输出结果:true const r2 = s4.has(a); console.log(r2); / 输出结果:false演示has()方法的使用3. Set实例的has()方法Set实例提供has()方法,该方法接收一个参数并判断该参数是否为Set数据结构中的成员,返回一个布尔值,如果结果为true则表示包含该成员,为false则表示不包含该成员。1.9.2 Set实例的操作方法 const s4 = new Set(); s4.add(a).add(b);

42、s4.clear(); console.log(s4.size); / 输出结果:0演示clear()方法的使用4. Set实例的clear()方法Set实例提供的clear()方法用于清除Set数据结构中的所有成员,该方法没有返回值。1.9.2 Set实例的操作方法 先定一个小目标!掌握Set实例的遍历方法,能够对Set实例进行遍历操作1.9.3 Set实例的遍历方法 const s5 = new Set(a, b, c); s5.forEach(value = console.log(value); / 依次输出a、b、c );演示forEach()方法的使用1.9.3 Set实例的遍历方

43、法Set数据结构的实例与数组一样,也拥有一个forEach()方法,用于遍历Set数据结构中的成员,该方法可以对每个成员执行某种操作,没有返回值。初识Symbol1.10 先定一个小目标!掌握Symbol的基本使用,能够在程序中正确使用Symbol1.10.1 Symbol的基本使用1.10.1 Symbol的基本使用Symbol是ES6中引入的原始数据类型,它的功能类似于一种标识唯一性的ID值,表示独一无二。1.10.1 Symbol的基本使用 let s1 = Symbol(a); let s2 = Symbol(b); console.log(s1);/ 输出结果:Symbol(a) c

44、onsole.log(s2);/ 输出结果:Symbol(b)演示Symbol的基本使用Symbol通过Symbol()函数创建。Symbol()函数可以接收一个字符串作为参数,为新创建的Symbol实例提供描述信息,该描述信息主要是在控制台中显示或转为字符串时使用,以便于区分。Symbol不是对象,所以Symbol()函数不能使用new命令。1.10.1 Symbol的基本使用 let s1 = Symbol(a); let s2 = Symbol(a); console.log(s1); / 输出结果:Symbol(a) console.log(s2); / 输出结果:Symbol(a)

45、console.log(s1 = s2); / 输出结果:false示例代码每个Symbol实例都是唯一的,即使具有相同参数的两个Symbol()函数进行比较时,函数的返回结果都会是false。 先定一个小目标!熟悉使用Symbol作为对象属性名,能够说出使用Symbol作为对象属性名有什么优势1.10.2 使用Symbol作为对象属性名1.10.2 使用Symbol作为对象属性名letMY_NAME=Symbol();/第1种写法leta=;aMY_NAME=Hello!;console.log(a); / 输出结果:Symbol():Hello!示例代码-第1种写法因为每一个Symbol的

46、值都是不相等的,所以Symbol作为对象的属性名,可以保证属性不重名。这适用于对象由多个模块组成的情况,可以防止某一个键被意外改写或覆盖。1.10.2 使用Symbol作为对象属性名示例代码-第2种写法letMY_NAME=Symbol();/第2种写法 leta=MY_NAME:Hello!,;console.log(a); / 输出结果:Symbol():Hello!1.10.2 使用Symbol作为对象属性名示例代码-第3种写法letMY_NAME=Symbol();/第3种写法leta=;Object.defineProperty(a,MY_NAME,value:Hello!);con

47、sole.log(a); /输出结果: Symbol():Hello! 本章小结本章首先讲解了ES6的概念,帮助读者对ES6有一个初步的认识;接着讲解了ES6中新增的let关键字和const关键字的特点及其基本使用;然后讲解了数组和对象的解构赋值,箭头函数、剩余参数和扩展运算符,以及模板字符串和ES6的内置对象扩展的使用,这些使代码编写更加简洁易读,语义更加清晰;最后讲解了ES6提供的数据结构Set和原始数据类型Symbol,帮助读者提高开发效率。第2章 Node.js模块化开发Web前端模块化开发教程(ES6+Node.js+Webpack)学习目标/Target 掌握Node.js的安装和

48、使用,能够完成运行环境的搭建 掌握Node.js模块化开发,能够完成模块化成员的导入和导出操作 掌握Node.js系统模块和第三方模块的使用,能够实现项目的功能学习目标/Target 掌握Node.js项目中gulp模块的使用,能够完成项目的自动化构建 熟悉Node.js项目依赖管理,能够理解package.json文件的作用 熟悉Node.js中的模块加载机制,能够正确完成模块的加载章节概述/ Summary随着互联网的发展,全栈工程师(Full Stack Engineer)的概念开始兴起,全栈工程师可以承担用户界面、业务逻辑、数据建模、服务器、网络和环境等方面的开发工作,这意味着全栈工程

49、师应该熟练各层间的交互。现在,Node.js的出现使JavaScript语言可以进行服务器端的开发并可以与数据库交互,从而降低了开发人员的学习成本,为程序开发创造了良好的条件。Node.js是采用模块化开发的,本章将详细讲解Node.js的安装和模块化开发的基础知识。目录/Contents010203Node.js运行环境搭建Node.js的基本使用初识模块化开发0405模块成员的导入和导出Node.js系统模块目录/Contents060708Node.js第三方模块Node.js常用开发工具在项目中使用gulp0910项目依赖管理Node.js模块加载机制Node.js运行环境搭建2.1N

50、ode.js是一个基于Chrome V8引擎的JavaScript代码运行环境,也可以说是一个运行时平台,提供了一些功能性的API,如文件操作API、网络通信API。如果在浏览器运行JavaScript代码,浏览器就是JavaScript代码的运行环境;如果在Node.js平台运行JavaScript代码,Node.js就是JavaScript代码的运行环境。2.1.1 下载和安装 先定一个小目标!掌握Node.js下载和安装,能够独立完成Node.js的下载和安装2.1.1 下载和安装2.1.1 下载和安装打开Node.js官方网站,找到Node.js下载地址。Bootstrap官网首页进入

51、官网单击下载Node.js安装包2.1.1 下载和安装安装提示对话框双击安装Node.js安装包2.1.1 下载和安装步骤1步骤2步骤3步骤4测试Node.js是否安装成功按“Windows+R”组合键,打开“运行”对话框,输入“cmd”。2.1.1 下载和安装步骤2步骤3步骤4测试Node.js是否安装成功单击“确定”按钮,或者直接按“Enter”键,会打开cmd命令提示符界面。步骤2步骤12.1.1 下载和安装步骤2步骤3步骤4测试Node.js是否安装成功在cmd命令提示符界面中,输入命令“node -v”,按“Enter”键,显示当前安装的Node.js版本。步骤1步骤32.1.1 下

52、载和安装步骤2步骤3步骤4测试Node.js是否安装成功若想要退出cmd命令提示符界面,可以输入“exit”并按“Enter”键,或者单击cmd命令提示符界面右上角的“”(关闭)按钮。步骤1步骤42.1.1 下载和安装多学一招:PowerShell工具测试Node.js是否安装成功测试步骤2.1.1 下载和安装多学一招:PowerShell工具测试Node.js是否安装成功测试步骤 先定一个小目标!熟悉Node.js环境常见安装失败情况,能够解决Node.js环境安装失败的问题2.1.2 Node.js环境常见安装失败情况2.1.2 Node.js环境常见安装失败情况不同用户使用的系统配置是不

53、统一的,在一些系统配置中会有不稳定的配置,可能会导致Node.js环境安装失败。接下来我们来看一下有哪些常见的失败情况及解决方法?错误代号2503的解决方法2.1.2 Node.js环境常见安装失败情况在安装过程中,突然弹出了一个消息框,提示2503错误。安装失败的原因:系统账户权限不足2.1.2 Node.js环境常见安装失败情况解决方法(1)使用管理员身份运行PowerShell命令提示符工具。选择“以管理员身份运行”2.1.2 Node.js环境常见安装失败情况(2)以管理员身份进入PowerShell命令提示符界面。输入运行安装包命令,以本机安装路径为例执行命令报错2.1.2 Node

54、.js环境常见安装失败情况Node.js安装成功后,输入“node -v”命令进行验证Node运行环境是否安装成功时报错。安装失败的原因:Node.js安装目录写入环境变量失败2.1.2 Node.js环境常见安装失败情况在常规情况下,Node.js安装过程中,安装包会自动把Node.js的安装目录放入到系统的环境变量Path中,若是出现上图错误表明操作失败。解决方法是需要手动将Node.js安装目录添加到环境变量Path中。2.1.2 Node.js环境常见安装失败情况解决方法:以Windows 10操作系统为例(1)首先找到Node.js的安装目录,本机的Node.js安装目录是C:Pro

55、gram Filesnodejs,将该目录地址进行复制。2.1.2 Node.js环境常见安装失败情况(2)右击“此电脑”图标,选择“属性”命令,进入“系统”界面,执行如下操作。双击“Path”单击“新建”把Node.js安装目录粘贴到这里目录显示在这里2.1.2 Node.js环境常见安装失败情况多学一招:Path环境变量的作用Path环境变量是如何工作的呢?当在命令行工具中输入“node”命令时,实际上是去当前计算机中查找一个名字为node.exe的可执行文件,如果这个文件能够找到,则命令就可以成功执行。2.1.2 Node.js环境常见安装失败情况当前计算机中node命令的可执行文件no

56、de.exe所在目录为“C:Program Filesnodejs”下。命令行工具如何查找node.exe文件2.1.2 Node.js环境常见安装失败情况查找方式:需要应用到Windows系统中的Path环境变量。Path环境变量的作用是告诉系统,当要求系统运行一个程序,而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找。如果的路径,那么在任何路径下使用“node”命令都可以找到node.exe文件。在Path环境变量中配置了.exe文件。Node.js的安装过程中,默认会在Path环境变量中配置好node.exe的路径,如果在Path环境变量中没有

57、自动配置node.exe路径,我们可以手动完成配置。Node.js的基本使用2.2 先定一个小目标!了解Node.js的组成,能够说出Node.js的组成部分2.2.1 Node.js的组成2.2.1 Node.js的组成JavaScript和Node.js的核心语法都是ECMAScript。JavaScriptNode.jsECMAScript(核心语法)脚本语言,一般运行在客户端运行在服务器端的JavaScript2.2.1 Node.js的组成ECMAScript是JavaScript的核心语法。ECMAScriptDOM(文档对象模型)是HTML和XML的应用程序接口(API),用于控

58、制文档的内容与结构。DOMBOM(浏览器对象模型)可以对浏览器窗口进行访问和操作。BOMJavaScript的组成2.2.1 Node.js的组成客户端JavaScript需要依赖浏览器提供的JavaScript引擎解析执行,浏览器还提供了对DOM的解析,所以客户端的JavaScript不仅应用了核心语法ECMAScript,而且能操作DOM和BOM,常见的应用场景如用户交互、动画特效、表单验证、发送Ajax请求等。服务器端JavaScript不依赖浏览器,而是由特定的运行环境提供的JavaScript引擎解析执行,例如Node.js。服务器端的JavaScript应用了核心语法ECMAScr

59、ipt,但是不操作DOM和BOM,它常常用来做一些在客户端做不到的事情,例如操作数据库、操作文件等。另外,在客户端的Ajax操作只能发送请求,而接收请求和做出响应的操作就需要服务端的JavaScript来完成。JavaScript在客户端和服务端实现不同功能 先定一个小目标!了解Node.js基础语法,能够编写简单的hello world程序2.2.2 Node.js基础语法2.2.2 Node.js基础语法通过node命令解析和执行一个js脚本文件的步骤如下:根据node命令指定的文件名称,读取js脚本文件。解析和执行JavaScript代码。将执行后的结果输出到命令行中。2.2.2 Nod

60、e.js基础语法演示在Node.js中如何执行一个js脚本文件在chapter02目录下新建helloworld.js文件,编写JavaScript代码。console.log(hello world);STEP 012.2.2 Node.js基础语法运行程序打开命令行工具,切换到helloworld.js文件所在的目录,并输入“node helloworld.js”命令。STEP 02 先定一个小目标!了解Node.js全局对象global,能够说出global的作用2.2.3 Node.js全局对象global2.2.3 Node.js全局对象global在之前使用JavaScript的过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论