收藏 分销(赏)

开发实战教程课件全套教学教程-电子讲义.pptx

上传人:w****g 文档编号:12014099 上传时间:2025-08-27 格式:PPTX 页数:609 大小:6.88MB 下载积分:25 金币
下载 相关 举报
开发实战教程课件全套教学教程-电子讲义.pptx_第1页
第1页 / 共609页
开发实战教程课件全套教学教程-电子讲义.pptx_第2页
第2页 / 共609页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,1,章,Node.js,入门,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,3,章,模块与包的管理与使用,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,4,章,文件系统操作,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,5,章,网络编程,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,6,章,SQL,数据库操作,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,7,章,MongoDB,数据库操作,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,8,章,Node.js,框架与,Express,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,9,章,应用程序测试与部署,编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,10,章,综合实例,构建博客网站,第,1,章,Node.js,入门,000011110111010101110100101110000111010010111111010000111101001010100111010010101010101001010100101010101001000000011001010010,111001110,Node.js,开发实战教程,新一代信息技术“十三五”系列,规划教材,Contents,内容导航,1.2,部署,Node.js,开发环境,1.1 Node.js,简介,1.3,开始开发,Node.js,应用程序,什么,是,Node.js,Node.js,的特点,Node.js,的应用场合,Node.js,简介,(,1,)了解什么是,Node.js,;,(,2,)熟悉,Node.js,的特点和应用场合。,【学习目标】,00,Section,Node.js,简称,Node,,是一个可以使,JavaScript,运行在服务器端的开发平台。,JavaScript,本是一种,Web,前端语言,,Node.js,让,JavaScript,成为服务器端脚本语言。,Node.js,选择,JavaScript,作为实现语言的原因:,JavaScript,满足,CommonJS,标准,符合事件驱动,用户较多且门槛较低;,Chrome,的,V8,引擎具有出色的性能。,Node.js,将,V8,引擎封装起来,作为服务器运行平台,以执行,JavasScript,编写的后端脚本程序。,【什么是,Node.js,】,01,Section,Node.js,简介,【什么是,Node.js,】,Node.js,与,Java,运行时环境对比,01,Section,Node.js,运行时环境包含执行,JavaScript,程序所需的一切条件。该引擎会将,JavaScript,代码转换为更快的机器码。,Node.js,进一步提升,JavaScript,的能力,使,JavaScript,可以访问文件、读取数据库、访问进程,从而胜任后端任务。,使用,Node.js,的最大优点是开发人员可以在客户端和服务器端编写,JavaScript,,打通了前后端。,Node.js,发展迅速,目前已成为,JavaScript,服务器端运行平台的事实标准。,Node.js,简介,【什么是,Node.js,】,01,Section,Node.js,是跨平台的,能运行在,Windows,、,macOS,和,Linux,平台上。,Node.js,除了自己的标准类库之外,还可使用大量的第三方模块系统来实现代码的分享和重用。,与其他后端脚本语言不同的是,,Node.js,内置了处理网络请求和响应的函数库,也就是自备了,HTTP,服务器,所以不需要额外部署,HTTP,服务器。,Node.js,与,PHP,对,HTTP,请求的处理,Node.js,简介,【Node.js的特点】,02,Section,非阻塞,I/O,又称异步式,I/O,,是,Node.js,的重要特点。,阻塞,I/O,是指线程在执行过程中遇到,I/O,操作时,操作系统会撤销该线程的,CPU,控制权,使其暂停执行,处于等待状态,同时将资源转让给其他线程。,非阻塞,I/O,是指当线程遇到,I/O,操作时,不会以阻塞方式等待,I/O,操作完成或数据返回,而只是将,I/O,请求转发给操作系统,继续执行下一条指令。,非阻塞,I/O,Node.js,的非阻塞,I/O,Node.js,简介,【Node.js的特点】,02,Section,非阻塞,I/O,是一种异步方式的,I/O,,与事件驱动密不可分。,事件驱动以事件为中心,,Node.js,将每一个任务都当成事件来处理。,Node.js,在执行过程中会维护一个事件队列,需执行的每个任务都会加入事件队列并提供一个包含处理结果的回调函数。,在事件驱动模型中,会生成一个事件循环线程来监听事件,不断地检查是否有未处理的事件。,Node.js,的异步机制是基于事件的,所有磁盘,I/O,、网络通信、数据库查询事件都以非阻塞的方式请求,返回的结果由事件循环线程来处理。,事件驱动,Node.js,事件循环机制,Node.js,简介,Node.js,的应用程序是单进程、单线程的,但是通过事件和回调支持并发,性能变得非常高。,在阻塞模式下,一个线程只能处理一项任务,要想提高吞吐量必须使用多线程。,在非阻塞模式下,线程不会被,I/O,操作阻塞,该线程所使用的,CPU,核心利用率永远是,100%,,,I/O,操作以事件的方式通知操作系统。,Node.js,在主线程中维护一个事件队列,当接收到请求后,就将该请求作为一个事件放入该队列中,然后继续接收其他请求。,Node.js,内部通过线程池来完成非阻塞,I/O,操作,,Node.js,的单线程是指对,JavaScript,层面的任务处理是单线程的,而,Node.js,本身是一个多线程平台。,【Node.js的特点】,02,Section,Node.js,采用非阻塞,I/O,与事件驱动相结合的编程模式,与传统同步,I/O,线性编程思维有很大的不同,,Node.js,程序的控制很大程度要依靠事件和回调函数,这不符合开发人员的常规线性思路,需要将一个完整的逻辑拆分为若干单元(事件),从而增加了开发和调试的难度。,单线程,Node.js,简介,REST API,:,REST API,是一种前后端分离的应用程序架构。,单页,Web,应用:加载单个,HTML,页面,并在用户与应用程序交互时动态更新该页面的,Web,应用程序。,统一,Web,应用的,UI,层:,Node.js,是面向服务的架构,其能够更好地实现前后端的依赖分离,可以将所有的关键业务逻辑都封装成,REST API,,,UI,层只需要考虑如何用这些,API,构建具体的应用。,准实时系统:如聊天系统、微博系统、博客系统的准实时社交系统,特点是轻量级、高流量,没有复杂的计算逻辑。,游戏服务器:程序员不必使用,C,语言就能开发游戏的服务器程序。,微服务架构:,Node.js,也可用于实现基于微服务架构的应用。,【Node.js的应用场合】,03,Section,适合用,Node.js,的场合,Node.js,简介,【Node.js的应用场合】,03,Section,不适合用,Node.js,的场合,数据加密和解密。,数据压缩和解压。,模板渲染。,存在的问题,解决方案,CPU,密集型任务偏向于,CPU,计算操作,需要,Node.js,直接处理,在事件队列中,如果前面的,CPU,计算任务没有完成,那么后面的任务就会被阻塞,出现响应慢的情况,使得后续,I/O,操作无法发起,将大型运算任务分解为多个小任务,适时释放,CPU,计算空间资源,以免阻塞,I/O,调用的发起,单线程无法利用多核,CPU,。多,CPU,或多核,CPU,的服务器当,Node.js,被,CPU,密集型任务占用,导致其他任务被阻塞时,其他,CPU,核心处于闲置状态,从而造成资源浪费;,Node.js,程序一旦在某个环节崩溃,整个系统都会崩溃,这会影响其可靠性,(,1,)部署,Nginx,反向代理和负载均衡,开启多个进程,绑定多个端口(,2,)使用,cluster,模块构建应用集群,启动多个,Node.js,实例,开启多个进程以监听同一个端口,弥补,Node.js,不足的解决方案,Contents,内容导航,1.3,开始开发,Node.js,应用程序,1.2,部署,Node.js,开发环境,1.1 Node.js,简介,在 Windows,系统上安装,Node.js,在 Linux,系统上安装,Node.js,管理 Node.js,版本,交互式,运行环境,REPL,安装,开发工具,Visual Studio Code,部署,Node.js,开发环境,(,1,)掌握在,Windows,和,Linux,平台上安装,Node.js,的方法;,(,2,)安装开发工具,Visual Studio Code,,熟悉其基本用法。,【学习目标】,自定义安装,00,Section,【在,Windows,系统上安装,Node.js】,01,Section,两种文件格式的安装包,Windows,安装包(,.msi,),Windows,二进制文件(,.exe,)安装包,检查,Node.js,版本,node-version,部署,Node.js,开发环境,源代码,二进制,发行版,软件,源安装,n,模块,nvm,Linux,操作系统上安装,Node.js,的方式,【在,Linux,系统上安装,Node.js】,02,Section,部署,Node.js,开发环境,使用二进制发行版安装,Node.js,【在,Linux,系统上安装,Node.js】,02,Section,从,Node.js,官网下载二进制发行版的安装包,Linux Binaries(x64),。,根据官网说明执行安装步骤。,(,1,)创建,Node.js,安装目录,这里准备安装到,/usr/local/lib/nodejs,目录下。,sudo mkdir-p/usr/local/lib/nodejs,(,2,)将下载的二进制发行版安装包解压到该目录。,sudo tar-xJvf node-v10.16.0-linux-x64.tar.xz-C/usr/local/lib/nodejs,(,3,)编辑环境变量配置文件,/.profile,,将以下内容添加到该文件末尾并保存该文件。,VERSION=v10.16.0,DISTRO=linux-x64,export PATH=/usr/local/lib/nodejs/node-v10.16.0-linux-x64/bin:$PATH,部署,Node.js,开发环境,使用二进制发行版安装,Node.js,【在,Linux,系统上安装,Node.js】,02,Section,(,4,)运行该配置文件,以使新的环境变量配置生效。,zxphost-test,$.,/.profile,(,5,)测试,Node.js,安装是否成功。,先查看,node,版本:,zxphost-test,$node-v,v10.16.0,再查看,npm,的版本:,zxphost-test,$npm-v,6.9.0,(,6,)要使其他用户也能运行和使用,Node.js,,需要创建以下软链接:,sudo ln-s/usr/local/lib/nodejs/node-v10.16.0-linux-x64/bin/node/usr/bin/node,sudo ln-s/usr/local/lib/nodejs/node-v10.16.0-linux-x64/bin/npm/usr/bin/npm,sudo ln-s/usr/local/lib/nodejs/node-v10.16.0-linux-x64/bin/npx/usr/bin/npx,部署,Node.js,开发环境,zxphost-b:,$sudo apt-get install nodejs,zxphost-b:,$sudo apt install nodejs:i386,zxphost-b:,$node-v,v8.10.0,zxphost-b:,$sudo apt install npm,zxphost-b:,$npm-v,3.5.2,软件源安装,Node.js,【在,Linux,系统上安装,Node.js】,02,Section,部署,Node.js,开发环境,(,1,)需要升级将,npm,升级为目前最新版本:,sudo npm install npmlatest-g,(,2,)以全局方式(使用选项,-g,)安装,n,模块:,zxphost-b:,$sudo npm install-g n,n,模块常用命令,n,:不带任何选项或参数会列出已安装的所有,Node.js,版本。,n latest,:安装最新的,Node.js,版本。,n stable,:安装最新的,Node.js,稳定版本。,n lts,:安装最新的长期支持的,Node.js,版本。,n rm,版本号,:删除指定的,Node.js,版本。,n-h,:给出帮助信息。,使用,n,模块升级和管理,Node.js,版本,【在,Linux,系统上安装,Node.js】,02,Section,部署,Node.js,开发环境,nvm,是专门的,Node,版本管理器。,nvm,在,Windows,平台上的名称为,nvm-windows,。,以在,CentOS 7,系统上安装和使用,nvm,为例讲解。,(,1,)通过,Git,克隆方式进行安装,nvm,。,(,2,)安装完毕后需要设置环境变量。,export NVM_DIR=$HOME/.nvm,-s$NVM_DIR/nvm.sh&.$NVM_DIR/nvm.sh,示例,nvm current#,显示当前正在使用的版本,nvm ls#,列出已在本机安装的版本,同时也会显示当前使用的版本,nvm install 8.0.0#,安装指定版本的,Node,nvm uninstall 8.0.0#,卸载指定版本的,Node,nvm use 8.0#,指定当前要使用的,Node,版本(切换版本),nvm run 6.10.3 app.js#,使用指定,Node,版本,(6.10.3),运行指定程序,(app.js),nvm alias default 8.1.0#,设置默认的,Node,版本,【管理,Node.js,版本】,03,Section,部署,Node.js,开发环境,功能,JavaScript,脚本的简单调试,主要执行的操作,读取用户输入,解析输入的,JavaScript,数据结构并将其存储在内存中。,执行输入的数据结构,打印(输出)结果。,循环操作以上步骤直到用户按下两次,+,组合键。,进入命令行界面,执行,node,命令即可启动,Node,终端,出现“,”,提示符表示进入,REPL,命令行交互界面。,【交互式运行环境,REPL】,04,Section,部署,Node.js,开发环境,Visual Studio Code,用于集中进行编码、运行和调试。,以在,Windows 7 64,位系统上安装,Visual Studio Code,为例。,从微软官网上下载,Visual Studio Code 64,位,Windows,版本的安装包进行安装。,【安装开发工具,Visual Studio Code】,05,Section,Contents,内容导航,1.3,开始开发,Node.js,应用程序,1.1 Node.js,简介,构建,第一个,Node.js,应用程序,运行 Node.js,程序,调试 Node.js,程序,1.2,部署,Node.js,开发环境,开始开发,Node.js,应用程序,(,1,)熟悉开发工具,Visual Studio Code,的基本使用;,(,2,)掌握,Node.js,应用程序的编写、运行和调试的基本方法。,【学习目标】,00,Section,开始开发,Node.js,应用程序,/,导入,http,模块,const http=require(http);,const httpServer=http.createServer(function(req,res),/,设置响应头信息,res.writeHead(200,Content-Type:text/plain);,/,发送响应数据,Hello World!,res.end(Hello World!n);,);,httpServer.listen(8080,function(),/,向终端输出如下信息,console.log(,服务器正在,8080,端口上监听!,);,);,编写程序,【实战演练,构建第一个,Node.js,应用程序】,01,Section,开始开发,Node.js,应用程序,在终端窗口中运行程序进行测试,测试程序,【实战演练,构建第一个,Node.js,应用程序】,01,Section,开始开发,Node.js,应用程序,通过浏览器访问,Web,应用程序进行测试,测试程序,02,Section,【实战演练,构建第一个,Node.js,应用程序】,开始开发,Node.js,应用程序,程序结构分析,01,Section,部分,源代码,说明,1,const http=require(http);,导入模块。导入,Node.js,自带的,http,模块,并将实例化的,HTTP,组件赋值给变量,http,。模块是,Node.js,程序组织可重用代码的方式,可使用,require(),方法来载入模块,2,const httpServer=http.createServer(function(req,res),res.writeHead(200,Content-Type:text/plain);,res.end(Hello World!n);,);,创建,HTTP,服务器。调用,http,模块提供的,http.createServer(),方法创建服务器,使用一个回调函数作为参数,该回调函数又接受两个参数,分别是代表客户端的请求对象和向客户端发送的响应对象,所有请求和响应都由此回调函数处理,3,httpServer.listen(8080,function(),console.log(,服务器正在,8080,端口上监听!,);,);,启动,HTTP,服务器,并设置监听器的端口号。,http.createServer(),方法返回一个,HTTP,服务器对象,它使用,listen(),方法启动,HTTP,服务器以监听连接、指定端口号。该方法包含一个回调函数参数,用于设置启动,HTTP,服务器之后的操作,【实战演练,构建第一个,Node.js,应用程序】,开始开发,Node.js,应用程序,node,命令语法,node Sections -e script|script.js|-arguments,运行当前目录下的,index.js,脚本文件,可以使用点号代替:,node.,按下,+,组合键终止正在运行的,Node.js,程序。,选项,-e,(,-eval,)表示直接执行某语句:,node-e console.log(Hello World!);,使用,node,命令运行,Node.js,程序,【运行,Node.js,程序】,02,Section,scripts:,start:node demo.js,test:node test.js,使用,npm,命令运行,Node.js,程序,开始开发,Node.js,应用程序,安装该模块,npm i nodemon-g,监控并运行,Node.js,程序,nodemon,文件路径,使用,nodemon,监视文件改动并自动重启,Node.js,程序,【运行,Node.js,程序】,02,Section,新开一个终端窗口,在其中执行,node,命令,以非调试方式启动当前的,Node.js,脚本文件,在,Visual Studio Code,中运行,Node.js,程序,开始开发,Node.js,应用程序,使用,console.log(),方法检查变量或字符串的值,记录脚本调用的函数,或记录来自第三方服务的响应。,使用,console.warn(),或,console.error(),方法记录警告或错误信息。,使用日志工具进行调试,【调试,Node.js,程序】,03,Section,Node.js,内置一个进程外的调试实用程序,可通过,V8,检查器和内置调试客户端访问。,执行,node,命令时加上,inspect,参数,指定要调试的脚本的路径。,Node.js,调试脚本示例,global.x=5;,setTimeout()=/,此处用到的回调函数的形式是箭头函数,,()=,相当于,function(),debugger;,console.log(world);,1000);,console.log(hello);,使用,Node.js,内置调试器,开始开发,Node.js,应用程序,调试步骤,(,1,)设置调试配置文件。关键是设置,program,属性,使其指向要运行的脚本文件。,(,2,)设置断点。,(,3,)根据需要设置监视器。,(,4,)启动该脚本的调试。,在,Visual Studio Code,中调试,Node.js,程序,【调试,Node.js,程序】,03,Section,Node.js,脚本的调试,开始开发,Node.js,应用程序,调试器,3,种单步执行方式,Step Into,(,键):单步执行,遇到子函数就进入该函数并且继续单步执行。,Step Out,(,+,组合键):当单步执行到子函数内时,使用它执行完子函数余下部分,并返回上一层函数。,Step Over,(,键):在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完毕并返回下一条语句。,03,Section,单步执行,【调试,Node.js,程序】,在,Visual Studio Code,中调试,Node.js,程序,Summary,本章小结,本章的内容主要是,Node.js,的基础知识和基本操作技能,涵盖了,Node.js,的简介、,Node.js,开发环境搭建与调试。读者应重点了解,Node.js,的非阻塞,I/O,、事件驱动和单线程的特点,知道,Node.js,适合哪些应用场合。,Thank you,第,2,章,Node.js,编程基础,000011110111010101110100101110000111010010111111010000111101001010100111010010101010101001010100101010101001000000011001010010,111001110,Node.js,开发实战教程,新一代信息技术“十三五”系列,规划教材,Contents,内容导航,2.2 Node.js,回调函数,2.1 JavaScript,基本语法,2.3 Node.js,事件机制,JavaScript,版本与,JavaScript,运行环境,JavaScript,语句与注释,变量、数据类型、流程控制、函数、类,JavaScript,编程规范,2.4 Node.js,全局对象,2.5 Node.js,的定时器,2.6 Buffer,数据类型,2.7 Node.js,的流,2.8,实战演练,提供图片浏览服务,JavaScript,基本语法,(,1,)了解,JavaScript,的基本语法;,(,2,)能读懂,JavaScript,代码。,【学习目标】,ECMA,组织制定了,JavaScript,语言的标准,ECMAScript,(简称,ES,),。,大多数场合使用,JavaScript,名称,可将,JavaScript,看作是,ES,标准的实现语言。,主要版本:,2009,年,ES5,;,2015,年,ES6,(,ES2015,);,ES7,(,ES2016,)、,ES8,(,ES2017,)、,ES9,(,ES2018,)和,ES10,(,ES2019,)。,ES6,是目前的主流版本,,Node.js,自,6.0,版本开始全面支持,ES6,。,Node.js,自,7.6,版本开始就默认支持,async/await,异步编程。,【JavaScript版本】,00,Section,01,Section,JavaScript,基本语法,Node.js REPL,交互式运行环境,浏览器控制台,【JavaScript运行环境】,02,Section,JavaScript,基本语法,JavaScript,每条语句都以分号“,;”,结束。,一行,代码可包含多条语句。,一行语句太长,则可以使用续行符“,”,进行换行。,【JavaScript语句与注释】,03,Section,语句,语句,块是一组语句的集合,作为一个整体使用大括号“,”,封装。,语句,块可以嵌套,形成层级结构。,语句块,行注释,/,我是单独一行注释,alert(Hello World);/,我是句尾的行注释,注释,块注释,/*,我要开始注释啦,我要结束注释啦*,/,JavaScript,基本语法,JavaScript,的变量可以是任意数据类型。,变量名可以是大小写英文字母、数字、符号“,$”,或“,_”,的任意组合,但不能以数字开头。,【变量】,04,Section,变量的命名,弱,类型的编程语言,所有数据类型都可以用,var,关键字声明。在定义变量时无须指定变量类型。,var hello;/,声明一个名为,hello,的变量,此时该变量的值为,undefined,,表示未定义,使用,等号对变量进行赋值,可以将任意数据类型赋值给变量。,hello=,我是个字符串,;/,此时变量的值为“我是个字符串”,可以,在声明变量的同时对变量进行赋值。,可以,反复赋值同一个变量。,变量的声明与赋值,JavaScript,基本语法,变量,可以在声明之前使用,值为,undefined,。,console.log(temp);/,返回,undefined,var temp=,你好,;,ES6,用,let,关键字改变这种行为,变量一定要在声明之后使用。,【变量】,04,Section,变量提升,用来,计数的循环变量使用,var,关键字声明后会泄露为全局变量。,var temp=Hello!;,for(var i=0;i temp.length;i+),console.log(tempi);,console.log(i);/,返回数字,6,改用let,关键字来声明循环变量避免变量泄露。,变量泄露,JavaScript,基本语法,ES5,中只有全局作用域(顶层作用域)和函数作用域。,var temp=,你好!,;/,全局作用域,function testScope(),var temp=,早上好!,;/,函数作用域,console.log(temp);,testScope();/,返回函数作用域中的“早上好”!,console.log(temp);/,返回全局变量的“你好”!,【变量】,04,Section,全局作用域和函数作用域,JavaScript,基本语法,ES5,中只有全局作用域(顶层作用域)和函数作用域。,var temp=,你好!,;/,全局作用域,function testScope(),var temp=,早上好!,;/,函数作用域,console.log(temp);,testScope();/,返回函数作用域中的“早上好”!,console.log(temp);/,返回全局变量的“你好”!,【变量】,04,Section,全局作用域和函数作用域,JavaScript,基本语法,ES6,引入块级作用域,使用,let,关键字声明的变量只能在当前块级作用域中使用。,function testBlockScope(),let name=,小明,;,if(true),let name=,小红,;,console.log(name);/,返回“小红”,console.log(name);/,返回“小明”,【变量】,04,Section,块级作用域与,let,关键字,ES6,引入,const,关键字声明只读的常量。,const PI=3.1415;,使用,const,关键字声明只读常量,JavaScript,基本语法,不,区分整数和浮点数,统一用数值表示。,十六进制,数使用,0 x,作为前缀。二进制和八进制数值分别使用前缀,0b,(或,0B,)和,0o,(或,0O,)。,无法,计算结果时就可用,NaN,表示;,Infinity,表示无限大。,【数据类型】,05,Section,数值(,Number,),字符串,是用单引号“,”,或双引号“,”,括起来的任意文本。,ES6,提供模板字符串,可使用反引号包括整个模板字符串,使用,$,将变量括起来。,var msg=,服务器侦听监听地址和端口:,$srvip:$port,,请注意!,;,模板,字符串中也可以不嵌入任何变量,通常用于按实际格式输出(如换行)。,字符串(,String,),JavaScript,基本语法,布尔,值只有,true,、,false,两种,经常用于条件判断中。,在,比较是否相等时,建议使用,=,而不要使用,=,。,【数据类型】,05,Section,布尔值(,Boolean,),null,表示一个空值,即什么也没有。,undefined,表示“未定义”,仅用于判断函数参数是否正常传递。,null,和,undefined,JavaScript,的数组可以包括任意数据类型。,数组用,表示,元素之间用逗号分隔。,数组,的元素可以通过索引来访问,注意索引的起始值为,0,。,数组(,Array,),JavaScript,基本语法,对象,是一组由键值对组成的无序集合,用,表示,键值对之间用逗号分隔。,var myObj=,isobj:true,num:1,2,3,desp:,对象好像可以无所不包,;,键,均为字符串类型,而值可以是任意数据类型。,获取,一个对象的属性可用“对象名,.,属性(键)名”的方式。,ES6,允许将表达式作为对象的属性名,即把表达式放在方括号内。,let numproperty=num;,var myObj=,numproperty:1,2,3,des+cription:,我是个对象,;,【数据类型】,05,Section,对象(,Object,),JavaScript,基本语法,ES6,引入数据类型,Symbol,,用于表示独一无二的值,其值通过,Symbol(),函数自动生成。,Symbol,值用于对象的属性名,可以有,3,种表示方法。,let welcome=Symbol();/,自动产生一个值,/,第,1,种表示方法,let myObj=;,myObjwelcome=,欢迎光临,;,/,第,2,种表示方法,let myObj=welcome:,欢迎光临,;,/,第,3,种表示方法,let myObj=;,Object.defineProperty(myObj,welcome,value:,欢迎光临,);,【数据类型】,05,Section,符号(,Symbol,),JavaScript,基本语法,ES6,引入,Map,数据结构,与对象类似,但各种类型的数据(甚至对象)都可以作为键。,Map,本身是一个构造函数,用于生成,Map,数据结构。,const myMap=new Map();,可以,使用,Map,结构的,set,方法添加成员,const myObj=welcome:,欢迎光临,;,myMap.set(myObj,我是一个对象,);,使用Map,结构的,get,方法读取键(成员),myMap.get(myObj);/,结果为,我是一个对象,Map,结构的实例支持遍历方法。,keys(),:返回键名的遍历器。,values(),:返回键值的遍历器。,entries(),:返回键值对的遍历器。,forEach(),:使用回调函数遍历每个成员。,【数据类型】,05,Section,映射(,Map,),JavaScript,基本语法,集合是无,重复的、无序的数据结构,类似于数组,即没有重复的值。,集合是一个构造函数,用于生成,Set,数据结构。,const mySet=new Set();,可以通过,add(),方法向,Set,结构加入成员。,Set(),函数可将,Iterable,类型的数据结构(数组、集合或映射)作为参数,用于初始化集合。,const mySet=new Set(1,2,3,4,4);/,会自动过滤掉其中一个数字,4,Set,结构中的元素可以看作是键,与,Map,结构不同的是,它只有键名没有键值。,Set,结构使用与,Map,结构相同的,4,种遍历方法来遍历成员。,【数据类型】,05,Section,集合(,Set,),遍历数组可以采用下标循环,而遍历映射和集合就无法使用下标。为了统一集合类型,,ES6,引入了新的,Iterable,类型,数组、映射和集合都属于,Iterable,类型。这种类型的集合可以通过新的,for.of,循环来遍历。更好的遍历方式是使用,Iterable,类型内置的,forEach,方法。,JavaScript,基本语法,if,(),.else .,if,(),.else if,(),.else .,switch.case,switch,(,变量,),case,值,1:,代码,1;,break;,case,值,2:,代码,2;,break;,default:,如果以上条件都不满足,则执行该代码,;,【流程控制】,06,Section,分支结构,JavaScript,基本语法,for,for.in,for(var key in obj),console.log(key);,while,do.While,break,continue,【流程控制】,06,Section,循环结构,循环结构中的条件需使用括号括起。,JavaScript,基本语法,声明,函数需要使用,function,关键字。,function sumAge(x,y),return x+y;,ES6,直接支持默认参数,sumAge(x=19,y=20),在ES5,中设置默认参数需要采用变通的方法,function sumAge(x,y),x=arguments0=undefined?21:arguments0;/,设置参数,x,的默认值为,21,y=arguments1=undefined?20:arguments1;/,设置参数,y,的默认值为,20,return x+y;,【JavaScript的函数】,07,Section,函数声明,JavaScript,基本语法,声明函数之后使用“函数名,(,参数,)”,的形式,按顺序传入参数进行调用。,sumAge(22,20),;,/,两人加起来,42,岁,【JavaScript的函数】,07,Section,函数调用,arguments,对象,JavaScript,的函数默认带有,arguments,对象,利用该对象可以获得调用者传入的所有参数。,function sumAge(),var sum=0;,var numcount=arguments.length,for(var i=0;i,)定义函数。,【JavaScript的函数】,07,Section,箭头函数,示例,箭头函数,普通函数,一个参数,var f=x=x;,var f=function(x),return x;,;,多个参数,var
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服