Node.js Web开发实战(慕课版)全套课件_第1页
Node.js Web开发实战(慕课版)全套课件_第2页
Node.js Web开发实战(慕课版)全套课件_第3页
Node.js Web开发实战(慕课版)全套课件_第4页
Node.js Web开发实战(慕课版)全套课件_第5页
已阅读5页,还剩479页未读 继续免费阅读

下载本文档

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

文档简介

第1章HTML基础.ppt第2章Javascript基础.ppt第3章Node.js基础入门.ppt第4章异步编程与包管理.ppt第5章http模块.ppt第6章Web开发中的模板引擎.ppt第7章Node.js中的文件操作.ppt第8章认识express模块.ppt第9章MySQL数据库.ppt第10章Express框架.ppt第11章socket.io模块.ppt第12章MongoDb数据库.ppt第13章综合项目——全栈开发博客网.ppt第14章课程设计——网络版五子棋.ppt初识Node.jsNode.js简介1Node.js的安装2初识Node.jsWebStorm代码编辑器3Node.js简介

Web和互联网

Web浏览器网景浏览器Web服务器V8引擎和Node.jsV8引擎V8引擎Node.jsNode.js□Node.js不是一个JavaScript框架,不同于Rails、Django等框架。□Node.js也不是Web浏览器的库,不能与jQuery、React等相提并论。□Node.js是一个让JavaScript运行在Web服务器的开发平台,它让JavaScript

可以与PHP、Python等服务器端语言平起平坐。Node.js的优缺点

Node.js的优缺点Node.js的优缺点浏览器JavaScript引擎MicrosoftChakraGoogleV8MozillaSpiderMonkeyAppleSquirrelFishOperaCarakan表

主流浏览器使用的JavaScript引擎Node.js的优缺点Node.js也有自身的缺点,也就是JavaScript语言的缺点。相比较Java等语言,没有严格的类型检查,虽然开发自由度很高,但是程序容易出错,检查也比较困难,所以对于一些大型应用程序,不建议使用JavaScript语言开发。Node.js的安装

Node.js的下载安装

Node.js的下载安装测试Node.js是否安装成功检测Node.js是否安装成功控制台CMD常见命令控制台CMD常见命令那么,什么是CMD命令呢?CMD是command的缩写,即命令提示符的含义。命令提示符是在操作系统中提示进行命令输入的一种工作提示符。在不同的操作系统中,命令提示符是各不相同的。CMD是Windows系统的命令提示符,是微软基于Windows系统上的命令解释程序。控制台CMD常见命令WebStorm代码编辑器

WebStorm代码编辑器的下载和安装

WebStorm的下载与安装创建并运行JavaScript程序

运行JavaScript程序第一个Node.js服务器程序创建项目并编写代码创建项目并编写代码启动Node.js服务器启动Node.js服务器小结本章首先介绍了Node.js的产生背景,Node.js的优缺点等背景知识。然后,详细讲解了Node.js的下载和安装过程,同时介绍了JavaScript代码编辑器——WebStorm的下载与安装。最后,讲解了使用CMD控制台,创建一个Node.js服务器的过程,为后边的进阶学习打下良好的基础。Javascript基础JavaScript的历史起源1JavaScript的主要特点2JavaScript概述JavaScript成功案例3JavaScript的历史起源JavaScript语言的诞生布兰登·艾奇(BrendanEich,1961年~)JavaScript之父Netscape(网景)浏览器JavaScript与ECMAScriptJavaScript(土豆)ECMAScript(马铃薯)ECMAScript的版本版本号发布时间备注ECMAScript1.0(正式)1997年7月ECMAScript2.0(正式)1998年6月ECMAScript3.0(正式)1999年12月成为JavaScript的通行标准,得到了广泛支持ECMAScript4.0(草案)2007年10月目标过于激进,各浏览器厂方发生严重分歧。未全部发布。ECMAScript5.0(正式)2009年12月ECMAScript2015(正式)2015年6月每年发布一个ECMAScript版本ECMAScript2016(正式)2016年6月与前一年相比,增加了两个较小的特性为什么学习JavaScript语言操控浏览器的能力JavaScript的发明目的,就是作为浏览器的内置脚本语言,为网页开发者提供操控浏览器的能力。它是目前唯一一种通用的浏览器脚本语言,所有浏览器都支持。它可以让网页呈现各种特殊效果,为用户提供良好的互动体验。目前,全世界几乎所有网页都使用JavaScript。如果不用,网站的易用性和使用效率将大打折扣,无法成为操作便利、对用户友好的网站。对于一个互联网开发者来说,如果你想提供漂亮的网页、令用户满意的上网体验、各种基于浏览器的便捷功能、前后端之间紧密高效的联系,JavaScript是必不可少的工具。易学性相比学习其他语言,学习JavaScript有一些有利条件。只要有浏览器,就能运行JavaScript程序;只要有文本编辑器,就能编写JavaScript程序。这意味着,几乎所有电脑都原生提供JavaScript学习环境,不用另行安装复杂的IDE(集成开发环境)和编译器。相比其他脚本语言(比如Python或Ruby),JavaScript的语法相对简单一些,本身的语法特性并不是特别多。而且,那些语法中的复杂部分,也不是必需要学会。你完全可以只用简单命令,完成大部分的操作。强大的性能JavaScript的所有值都是对象,这为程序员提供了灵活性和便利性。因为你可以很方便地、按照需要随时创造数据结构,不用进行麻烦的预定义。JavaScript的标准还在快速进化中,并不断合理化,添加更适用的语法特性。JavaScript语言本身,虽然是一种解释型语言,但是在现代浏览器中,JavaScript都是编译后运行。程序会被高度优化,运行效率接近二进制程序。而且,JavaScript引擎正在快速发展,性能将越来越好。JavaScript的主要特点什么是JavaScript语言JavaScript是一种轻量级的脚本语言。所谓“脚本语言”,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序的“脚本”。它本身提供的核心语法,规模相当小,只能用来做一些数学、日期、逻辑运算等操作。JavaScript本身不提供任何与(输入/输出)相关的API,都要靠宿主环境(浏览器、服务器、移动设备等)提供,所以JavaScript只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层API。JavaScript的主要特点控制浏览器的能力图片特效表单验证网页计算器JavaScript的主要特点控制多平台的能力JavaScript成功案例JavaScript的使用在页面中直接嵌入JavaScript1链接外部JavaScript2JavaScript在HTML中的使用页面中嵌入JavaScript页面中嵌入JavaScript属性说明language设置所使用的脚本语言及版本src设置一个外部脚本文件的路径位置type设置所使用的脚本语言,此属性已代替language属性defer此属性表示当HTML文档加载完毕后再执行脚本语言链接外部JavaScript链接外部JavaScript<scriptlanguage="javascript"src="your-Javascript.js"></script>语法格式:实例JavaScript语言基础01JavaScript数据结构03运算符与表达式02数据类型04流程控制语句05函数JavaScript数据结构标识符1关键字2JavaScript数据结构常量3变量4标识符标识符所谓的标识符,就是一个名称。在JavaScript中,标识符用来命名变量和函数。命名规则:1.第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。2.第二个字符及后面的字符,除了Unicode字母、美元符号和下划线,还可以用数字0-9。标识符例:合法的标识符imy_name_name$strn1例:不合法的标识符1a

//第一个字符不能是数字23

//同上***//标识符不能包含星号a+b

//标识符不能包含加号-d

//标识符不能包含减号或连词线关键字关键字JavaScript关键字是指在JavaScript语言中有特定含义,成为JavaScript语法中的那些关键词。JavaScript关键字是不能作为变量名和函数名使用的。使用JavaScript关键字作为变量名或函数名,会使JavaScript在载入过程中出现编译错误。关键字abstractcontinuefinallyinstanceofprivatethisbooleandefaultfloatintpublicthrowbreakdoforinterfacereturntypeofbytedoublefunctionlongshorttruecaseelsegotonativestaticvarcatchextendsimplementsnewsupervoidcharfalseimportnullswitchwhileclassfinalinpackagesynchronizedwithJavaScript中的关键字常量常量当程序运行时,值不能改变的量为常量。常量主要用于为程序提供固定的和精确的值(包括数值和字符串),比如数字、逻辑值真(true)、逻辑值假(false)等都是常量。声明常量使用const关键字来进行声明。语法: const常量名=值;变量变量的概念计算机中的程序需要对“值”进行操作。如(数字、字符串)等。当程序需要将这些值保存起来时,就需要将这些“值”保存到变量中,为后续使用。所以,变量是对“值”的再次使用。也称为“引用”。变量的工作机制是编程语言的基本特性。变量的声明与赋值例: vara=1;1.首先通过var关键字先声明变量a,然后在变量a与数值1之间建立引用(使用)关系,也称为将数值1“赋值”给变量a。2.以后,引用(使用)变量a就会得到数值1。

JavaScript数据类型数字型数据1字符串型数据2数据类型布尔型数据3特殊数据类型4数据类型的转换规则5数字型数据整数和浮点数JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。例: 1===1.0由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。例: 0.1+0.2===0.3常用方法parseInt()用于将字符串转为整数。parseFloat()用于将字符串转为浮点数。字符串型数据字符串定义字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。例: 'abc' "abc"字符串的length属性length属性返回字符串的长度,该属性也是无法改变的。例: vars='hello'; s.length //5 s.length=3; s.length //5布尔型数据定义布尔型数据通常在JavaScript程序中用来比较所得的结果。布尔型数据类型只有两个值,分别是“true”和“false”,它用来表示某种情况是真还是假。例:

varn=2; n==1特殊数据类型转义字符转义字符描述转义字符描述\b退格\v跳格(Tab,水平)\n回车换行\r换行\tTab符号\\反斜杠\f换页\OOO八进制整数,范围000~777\'单引号\xHH十六进制整数,范围00~FF\"双引号\uhhhh十六进制编码的Unicode字符undefined和nullnull与undefined都可以表示“没有”,含义非常相似。将一个变量赋值为undefined或null,实际讲,几乎没区别。例: vara=null; varb=undefined; a==b;既然含义与用法都差不多,为什么要同时设置两个这样的值,这不是无端增加复杂度,令初学者困扰吗?这与历史原因有关。案例运算符与表达式算术运算符1赋值运算符3运算符与表达式布尔运算符5运算符优先级7表达式8比较运算符2字符串运算符4条件运算符6算术运算符算术运算符算术运算符用于在程序中进行加、减、乘、除等运算。运算符描述示例+加运算符4+6//返回值为10-减运算符7-2//返回值为5*乘运算符7*3//返回值为21/除运算符12/3//返回值为4%求模运算符7%4//返回值为3++自增运算符。该运算符有两种情况:i++(在使用i之后,使i的值加1);++i(在使用i之前,先使i的值加1)i=1;j=i++//j的值为1,i的值为2i=1;j=++i//j的值为2,i的值为2--减运算符。该运算符有两种情况:i--(在使用i之后,使i的值减1);--i(在使用i之前,先使i的值减1)i=6;j=i--//j的值为6,i的值为5i=6;j=--i//j的值为5,i的值为5比较运算符比较运算符比较运算符的基本操作过程是:首先对操作数进行比较,这个操作数可以是数字也可以是字符串,然后返回一个布尔值true或false。运算符描述示例<

小于1<6//返回值为true>

大于7>10//返回值为false<=小于等于10<=10//返回值为true>=大于等于3>=6//返回值为false==等于。只根据表面值进行判断,不涉及数据类型"17"==17//返回值为true===绝对等于。根据表面值和数据类型同时进行判断"17"===17/返回值为false!=不等于。只根据表面值进行判断,不涉及数据类型"17"!=17//返回值为false!==不绝对等于。根据表面值和数据类型同时进行判断"17"!==17//返回值为true赋值运算符赋值运算符JavaScript中的赋值运算可以分为简单赋值运算和复合赋值运算。简单赋值运算是将赋值运算符(=)右边表达式的值保存到左边的变量中;而复合赋值运算混合了其他操作(算术运算操作、位操作等)和赋值操作。运算符描述示例=将右边表达式的值赋给左边的变量userName="mr"+=将运算符左边的变量加上右边表达式的值赋给左边的变量a+=b//相当于a=a+b-=将运算符左边的变量减去右边表达式的值赋给左边的变量a-=b//相当于a=a-b*=将运算符左边的变量乘以右边表达式的值赋给左边的变量a*=b//相当于a=a*b/=将运算符左边的变量除以右边表达式的值赋给左边的变量a/=b//相当于a=a/b%=将运算符左边的变量用右边表达式的值求模,并将结果赋给左边的变量a%=b//相当于a=a%b&=将运算符左边的变量与右边表达式的值进行逻辑与运算,并将结果赋给左边的变量a&=b//相当于a=a&b!=将运算符左边的变量与右边表达式的值进行逻辑或运算,并将结果赋给左边的变量a|=b//相当于a=a|b^=将运算符左边的变量与右边表达式的值进行异或运算,并将结果赋给左边的变量a^=b//相当于a=a^b字符串运算符字符串运算符字符串运算符是用于两个字符型数据之间的运算符,除了比较运算符外,还可以是+和+=运算符。其中,+运算符用于连接两个字符串,而+=运算符则连接两个字符串,并将结果赋给第一个字符串。运算符描述示例+连接两个字符串“mr”+“book”+=连接两个字符串并将结果赋给第一个字符串varname=“mr”name+=“book”布尔运算符布尔运算符布尔运算符主要配合条件控制结构。布尔运算符描述!取反&=与之后再赋值&逻辑与|=或之后赋值|逻辑或^=异或之后赋值^逻辑异或?:三目运算符条件运算符条件运算符条件运算符是JavaScript支持的一种特殊的三目运算符,语法格式如下:

操作数?结果1:结果2如果“操作数”的值为true,则整个表达式的结果为“结果1”,否则为“结果2”。运算符优先级运算符优先级例: 5+8*3=?运算符优先级优先级结合性运算符最高向左.、[]、()

由高到低依次排列向右++、--、-、!、delete、new、typeof、void向左*、/、%向左+、-向左<<、>>、>>>向左<、<=、>、>=、in、instanceof向左==、!=、===、!===向左&向左^向左|向左&&向左||向右?向右=向右*=、/=、%=、+=、-=、<<=、>>=、>>>=、&=、^=、|=最低向左,表达式语句和表达式例: varx=1+3;1+3叫做表达式,指一个为了得到返回值的计算式。语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。凡是JavaScript语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。一条语句可以包含多个表达式。案例流程控制语句条件控制语句1循环控制语句2流程控制语句跳转语句3条件控制语句Ifelse语句1Switch语句2条件控制语句ifelse语句if条件判断语句是最基本、最常用的流程控制语句,可以根据条件表达式的值执行相应的处理。语法格式如下:if(expression){ statement1}else{ statement2}expression:必选项,用于指定条件表达式,可以使用逻辑运算符。statement1:用于指定要执行的语句序列。当expression的值为true时,执行该语句序列。statement2:用于指定要执行的语句序列。当expression的值为false时,执行该语句序列。Switch语句语法格式如下:switch(expression){casejudgement1:statement1;break;casejudgement2:statement2;break;default:statementn+1; break;}循环控制语句for语句1while语句2循环控制语句dowhile语句3for语句for循环语句也称为计次循环语句,一般用于循环次数已知的情况,在JavaScript中应用比较广泛。for循环语句的语法格式如下:for(init;test;increment){ statement}initialize:初始化语句,用来对循环变量进行初始化赋值。test:

循环条件,一个包含比较运算符的表达式,用来限定循环变量的边限。如果循环变量超过了该边限,则停止该循环语句的执行。increment:用来指定循环变量的步幅。statement:用来指定循环体,在循环条件的结果为true时,重复执行。while语句while循环语句也称为前测试循环语句,它是利用一个条件来控制是否要继续重复执行这个语句。while循环语句与for循环语句相比,无论是语法还是执行的流程,都较为简明易懂。while循环语句的语法格式如下:while(expression){ statement}expression:一个包含比较运算符的条件表达式,用来指定循环条件。statement:用来指定循环体,在循环条件的结果为true时,重复执行。dowhile语句do…while循环语句也称为后测试循环语句,它也是利用一个条件来控制是否要继续重复执行这个语句。与while循环所不同的是,它先执行一次循环语句,然后再去判断是否继续执行。do…while循环语句的语法格式如下:do{ statement}while(expression);statement:用来指定循环体,循环开始时首先被执行一次,然后在循环条件的结果为true时,重复执行。expression:一个包含比较运算符的条件表达式,用来指定循环条件。跳转语句continue语句continue语句用于中止本次循环,并开始下一次循环。语法格式如下:for(条件表达式){

语句1:

continue;语句2:}break语句break语句用于退出包含在最内层的循环或者退出一个switch语句。语法格式如下:for(条件表达式){

语句1:

break;语句2:}案例关键代码<script>functionlogin(){varuser=document.getElementById("user");//获取账户信息varpassword=document.getElementById("password");//获取密码信息if(user.value!=='mr'&&password.value!=='mrsoft'){alert('您输入的账户或密码错误!');}else{alert('登录成功!');}}</script>Window窗口对象Window对象顶层Window对象是所有其他子对象的父对象,它出现在每一个页面上,并且可以在单个JavaScript应用程序中被多次使用。属性描述document对话框中显示的当前文档frames表示当前对话框中所有frame对象的集合location指定当前文档的URLname对话框的名字status状态栏中的当前信息defaultstatus状态栏中的当前信息top表示最顶层的浏览器对话框parent表示包含当前对话框的父对话框opener表示打开当前对话框的父对话框closed表示当前对话框是否关闭的逻辑值self表示当前对话框screen表示用户屏幕,提供屏幕尺寸、颜色深度等信息navigator表示浏览器对象,用于获得与浏览器相关的信息Window对象的方法方法描述alert()弹出一个警告对话框confirm()在确认对话框中显示指定的字符串prompt()弹出一个提示对话框open()打开新浏览器对话框并且显示由URL或名字引用的文档,并设置创建对话框的属性close()关闭被引用的对话框focus()将被引用的对话框放在所有打开对话框的前面blur()将被引用的对话框放在所有打开对话框的后面scrollTo(x,y)把对话框滚动到指定的坐标scrollBy(offsetx,offsety)按照指定的位移量滚动对话框setTimeout(timer)在指定的毫秒数过后,对传递的表达式求值setInterval(interval)指定周期性执行代码对话框警告(alert)利用Window对象的alert()方法可以弹出一个警告框,并且在警告框内可以显示提示字符串文本。语法:window.alert(str);参数str表示要在警告对话框中显示的提示字符串。询问对话框(confirm)语法:window.confirm(question)window:Window对象。question:要在对话框中显示的纯文本。通常,应该表达程序想要让用户回答的问题。返回值:如果用户单击了“确定”按钮,返回值为true;如果用户单击了“取消”按钮,返回值为false。询问对话框(prompts)语法:mpt(str1,str2)str1:为可选项。表示字符串(String),指定在对话框内要被显示的信息。如果忽略此参数,将不显示任何信息。str2:为可选项。表示字符串(String),指定对话框内输入框(input)的值(value)。如果忽略此参数,将被设置为undefined。案例窗口对象常用操作window.scrollTo(0,1000)1window.print();2窗口对象常用操作window.history.back();3文档对象概述DOM模型DOM是JavaScript操作网页的接口,全称为“文档对象模型”(DocumentObjectModel)。它的作用是将网页转为一个JavaScript对象,从而可以用脚本进行各种操作(比如增删内容)。DOM不属于JavaScript,但是操作DOM是JavaScript最常见的任务,而JavaScript也是最常用于DOM操作的语言。Document对象文档对象(document)代表浏览器窗口中的文档,该对象是window对象的子对象,由于window对象是DOM对象模型中的默认对象,因此window对象中的方法和子对象不需要使用document来引用。通过document对象可以访问HTML文档中包含的任何HTML标记并可以动态的改变HTML标记中的内容。例如表单、图像、表格和超链接等。文档对象的属性和方法document.domain1document.location2document属性document.lastModified3document.open()document.close()1document.write()2document方法文档对象的应用案例关键代码<script>//设置文档颜色

functionsetColor(){document.body.style.backgroundColor="red";}//设置文字大小

functionsetFontSize(){document.body.style.fontSize="20px";}//设置背景图片

functionsetImage(){document.body.style.backgroundImage="url(img/5.jpg)";}</script>

鼠标的单击事件鼠标的单击事件单击事件(onclick)是在鼠标单击时被触发的事件。单击是指鼠标停留在对象上,按下鼠标键,在没有移动鼠标的同时放开鼠标键的这一完整过程。在使用对象的单击事件时,如果在对象上按下鼠标键,然后移动鼠标到对象外再松开鼠标,单击事件无效,单击事件必须在对象上按下松开后,才会执行单击事件的处理程序。鼠标的按下或松开事件鼠标的按下松开事件鼠标的按下和松开事件分别是onmousedown和onmouseup事件。onmousedown事件用于在鼠标按下时触发事件处理程序,onmouseup事件是在鼠标松开时触发事件处理程序。在用鼠标单击对象时,可以用这两个事件实现其动态效果。鼠标的移入移除事件鼠标的移入移除事件鼠标的移入和移出事件分别是onmouseover和onmousemove事件。onmouseover事件在鼠标移动到对象上方时触发事件处理程序,onmousemove事件在鼠标移出对象上方时触发事件处理程序。可以用这两个事件在指定的对象上移动鼠标时,实现其对象的动态效果。鼠标的移动事件鼠标的移动事件鼠标移动事件(onmousemove)是鼠标在页面上进行移动时触发事件处理程序,可以在该事件中用document对象实时读取鼠标在页面中的位置。键盘事件的使用键盘事件键盘事件包含onkeypress、onkeydown和onkeyup事件。onkeypress事件是在键盘上的某个键被按下并且释放时触发此事件的处理程序,一般用于键盘上的单键操作。onkeydown事件是在键盘上的某个键被按下时触发此事件的处理程序,一般用于组合键的操作。onkeyup事件是在键盘上的某个键被按下后松开时触发此事件的处理程序,一般用于组合键的操作。键盘事件按键键值按键键值按键键值按键键值A(a)65J(j)74S(s)83149B(b)66K(k)75T(t)84250C(c)67L(l)76U(u)85351D(d)68M(m)77V(v)86452E(e)69N(n)78W(w)87553F(f)70O(o)79X(x)88654G(g)71P(p)80Y(y)89755H(h)72Q(q)81Z(z)90856I(i)73R(r)82048957案例加载与卸载事件加载与卸载事件加载事件(onload)是在网页加载完毕后触发相应的事件处理程序,它可以在网页加载完成后对网页中的表格样式、字体、背景颜色等进行设置。卸载事件(unload)是在卸载网页时触发相应的事件处理程序,卸载网页是指关闭当前页或从当前页跳转到其他网页中,该事件常被用于在关闭当前页或跳转其他网页时,弹出询问提示框。页面大小事件页面大小事件页面的大小事件(onresize)是用户改变浏览器大小时,触发的事件处理程序,它主要用于固定浏览器的大小。案例Node.js基础入门Node.js的内置变量、对象和函数1模块化编程2Node.js基础入门基本内置模块3Node.js的内置变量、对象和函数Node.js的内置变量、对象和函数Node.js的全局变量Node.js的全局变量__filename全局变量:表示当前正在执行的脚本文件名。__dirname全局变量:表示当前执行脚本所在的目录。Node.js的全局对象Node.js的全局对象对象名称说明consoleconsole对象用于提供控制台标准输出。processprocess对象用于描述当前程序状态。exportexport对象是Node.js模块系统中公开的接口。console对象方法名称方法说明log()向标准输出流打印字符并以换行符结束。该方法接收若干个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则以类似于C语言

printf()命令的格式输出。time()输出时间,表示计时开始。timeEnd()结束时间,表示计时结束。process对象方法名称说明exit([code])使用指定的code结束进程。如果忽略,将会使用code0。memoryUsage()返回一个对象,描述了Node进程所用的内存状况,单位为字节。uptime()返回Node.js已经运行的秒数。Node.js的全局函数Node.js的全局函数函数名称说明setTimeout(cb,ms)在指定的毫秒(ms)数后执行指定函数(cb)。clearTimeout(t)停止一个之前调用setTimeout()创建的定时器。setInterval(cb,ms)在指定的毫秒(ms)数后执行指定函数(cb)。Node.js的模块化编程exports对象exports对象module对象基本内置模块

os模块os模块方法名称说明hostname()返回操作系统的主机名。type()返回操作系统名。platform()返回编译时的操作系统名。arch()返回操作系统CPU架构release()返回操作系统的发行版本uptime()返回操作系统运行的时间,以秒为单位。loadavg()返回一个包含1、5、15分钟平均负载的数组。totalmem()返回系统内存总量,单位为字节。freemem()返回操作系统空闲内存量,单位为字节。cpus()返回一个对象数组,包含所安装的每个CPU内核的信息。networkInterfaces()获得网路接口列表。

url模块url模块方法名称说明parse()将url字符串转换成url对象。format(urlObj)将url对象转换成url字符串。resolve(from,to)组合变数,构造url字符串。

QueryString模块QueryString模块方法名称说明stringify()将query对象转换成query字符串。parse()将query字符串转换成query对象。

util模块util模块util模块提供了很多实用方法,比如格式化字符串,将对象转换为字符串,检查对象的类型,并执行对输出流的同步写入,以及一些对象继承的增强。util模块还有一个format()方法,用于返回组合的字符串。它与前面学过的console.log()方法十分相似。

crypto模块小结本章学习了Node.js提供的全局变量、全局对象和全局函数;同时也学习了通过exports对象和module对象,在Node.js中进行模块化编程;最后通过学习Node.js中几种内置模块,掌握学习Node.js文档的技巧和使用模块的方法。异步编程与包管理

异步编程1包管理2异步编程和包管理异步编程

同步和异步

同步同步异步回调函数

回调函数

回调函数是指函数可以被传递到另一个函数中,然后被调用的形式。Node.js异步编程的直接体现就是回调函数。

回调函数在完成任务后就会被调用,Node.js中使用了大量的回调函数。Node.js中所有的API都支持回调函数。事件驱动

添加监听事件

添加监听事件方法名称:on(eventName,eventHandler)删除监听事件

删除监听事件方法名称说明removeListener(eventName,handler)删除指定事件名称的监听事件。removeAllListeners([eventName])删除全部监听事件。主动触发监听事件

主动触发监听事件方法名称:on(eventName,eventHandler)emit(eventName)

EventEmitter对象

EventEmitter对象方法名称说明addListener(eventName,eventHandler)添加监听事件。on(eventName,eventHandler)添加监听事件。setMaxListeners(limit)设置监听事件的数量。removeListener(eventName,handler)删除指定事件名称的监听事件。removeAllListeners([eventName])删除全部监听事件。once(eventName,eventHandler)仅执行一次监听事件。包管理

包的概念

包目录结构包结构说明package.json在顶层目录的包描述文件,说明文件。bin存放可执行二进制文件的目录。lib存放JavaScript文件的目录。doc存放文档的目录。test存放单元测试用例的代码。package.json文件属性说明name包的名称。description包的简介。version包的版本号。keywords关键词数组,用于在NPM中分类搜索。author包的作者。main配置包的入口,默认是模块根目录下的index.js.dependencies包的依赖项,NPM会根据该属性自动加载依赖包。scripts指定了运行脚本命令的NPM命令行缩写,例如start。

NPM的概念

NPM中的常用命令命令说明npminit[-y]初始化一个package.json文件。npminstall包名安装一个包。npminstall–save包名将安装的包添加到package.json的依赖中。npminstall–g包名安装一个命令行工具。npmdocs包名查看包的文档。npmroot-g查看全局包安装路径。npmcomfigsetprefix"路径"修改全局包安装路径。npmlist查看当前目录下安装的所有包。npmlist–g查看全局包的安装路径下所有的包。npmuninstall包名卸载当前目录下某个包。npmuninstall-g包名卸载全局安装路径下的某个包。npmupdate包名更新当前目录下某个包。

NPM的基本应用

小结本章学习了Node.js中的异步编程机制——回调函数。异步编程执行时,不确定完毕时间,回调函数会被压入到一个队列,然后接着往下执行其他代码,指导异步函数执行完成后,才会调用相应的回调函数。同时,也学习了在Node.js中如何添加、删除和触发监听事件,学习了什么是EventEmiter对象。最后,NPM包管理也是Node.js中非常常见的操作,希望读者在本章打好基础。http模块

Web应用服务

请求与响应

请求与响应客户端与服务端

客户端和服务器端客户端和服务器端

server对象

server对象中的方法

server对象中的方法方法名称说明listen(port)启动服务器。close()关闭服务器。server对象中的事件

server对象中的事件事件名称说明request客户端请求时触发。connection客户端连接时触发。close服务器关闭时触发。checkContinue客户端持续连接时触发。upgrade客户端请求http升级时触发。clientError客户端发生错误时触发。response对象

响应response对象方法名称说明writeHead(statusCode[,statusMessage][,headers])返回响应头信息。end([data][,encoding][,callback])返回相应内容。

响应HTML文件

响应多媒体

网页自动跳转

网页自动跳转在访问网站时,网页自动跳转也是经常出现的情形之一。大家应该都有过这样的体验,在淘宝上购买东西时,用支付宝支付完毕后,页面会提示支付成功,等待5秒后,会自动跳转到其它页面。在Node.js中,主要使用了响应信息头的Location属性。request对象

request对象属性名称说明method返回客户端请求方法。url返回客户端请求url。headers返回请求信息头。trailers返回请求网络。httpVersion返回HTTP协议版本。GET请求

POST请求

post请求POST请求与GET请求还有其它方面的不同点,比方说POST请求可以向服务端传输更多大容量的数据信息(如音频和视频等等),而GET请求多数传递短而小的数据信息;还有POST请求的方式更安全隐蔽,而GET请求则直接可以通过url获取。小结本章学习了Web应用开发中请求与响应的原理,并且了解了客户端和服务端的基本概念;学习使用Node.js中的server对象,创建Web服务器,并且详细学习了使用response对象和request对象,完成网页的请求与响应。Web开发中的模板引擎

第三方模块

ejs模块

ejs模块的渲染方法

渲染方法语法:render(str,data,option)说明:其中,参数str用于渲染的字符串;参数data用于指定编码格式;参数option为可选参数,指定一些用于解析模板时的变量。渲染标识标识名称说明<%Code%>输入JavaScript代码。<%=Value%>输出数据,比如字符串和数字等。

ejs模块的数据传递

pug模块

pug模块渲染方法

pug模块渲染方法语法:compile(string,option)说明:参数string用于渲染的字符串;参数option为可选参数,指定一些用于解析模板时的变量。pug模块的数据传递

pug模块的数据传递标识名称说明-Code输入JavaScript代码。#{Value}输出数据,比如字符串和数字等。=Value输出数据,比如字符串和数字等。小结本章学习了ejs模块中的渲染方法render(),并且通过ejs模块中的渲染标识,可以将数据动态渲染到ejs文件中;学习了pug模块中的渲染方法compile(),以及使用pug模块中的渲染标识,将数据可以动态渲染到pug文件中。通过ejs模块和pug模块的学习,为后面学习express框架打下良好的基础。Node.js中的文件操作

文件操作在Web应用服务的开发中,经常会涉及到系统文件的操作。Node.js可以对系统的文件进行操作,比如文件的读取和写入,目录的创建和读取等等。在Node.js中使用FileSystem模块进行系统文件的操作,本章将详细讲解如何使用FileSystem模块。文件基本操作

文件的基本操作语法:varfs=require('fs');文件读取

文件读取方法名称说明readFile(file,encoding,callback)文件异步读取readFileSync(file,encoding)文件同步读取writeFile(file,encoding,callback)文件异步写入writeFileSync(file,data,encoding)文件同步写入文件写入

异常处理

异常处理同步操作异步操作文件其他操作

截断文件

截断文件方法名称说明truncate(filename,len,callback)截断文件操作删除文件

删除文件方法名称说明unlink(path,callback)删除文件操作复制文件

复制文件在操作文件的过程中,有时需要将一个文件中的内容读取出来,写入到另一个文件中,这个过程就是文件复制的过程。FileSystem模块中没有直接提供文件复制的方法,但是学习了文件写入和文件读取,就可以完成文件复制的操作。目录常用操作

创建目录

创建目录方法名称说明mkdir(path[,options],callback)创建目录操作读取目录

读取目录方法名称说明readdir(path,callback)读取目录操作删除空目录

删除空目录方法名称说明rmdir(path,callback)删除空目录查看目录信息

查看目录信息方法名称说明stat(path,callback)查看目录信息lstat(path,callback)查看目录信息检查目录是否存在

检查目录是否存在方法名称说明exists(path,callback)检查目录是否存在获取目录的绝对路径

获取目录的绝对路径方法名称说明realpath(path,[cache],callback)获取目录的绝对路径小结本章学习了Node.js中系统文件的常用操作方法。学习了文件的基本操作(文件的读取与写入,出现异常如何处理);学习了文件的其他操作(截断文件、删除文件和复制文件);学习了有关目录的常用操作(创建目录、读取目录和删除空目录等等),为后面的Web应用开发打下了基础。express模块

认识express模块

创建Web服务器

express模块中的响应对象

response对象中的方法方法名称说明response.send([body])根据参数类型,返回对应数据response.json([body])返回JSON数据response.jsonp([body])返回JSONP数据response.redirect([status,]path)强制跳转指定页面express模块中的请求对象

request对象中的属性和方法属性/方法名称说明params返回路由参数query返回请求变量headers返回请求头信息header()设置请求头信息accepts(type)判断请求accept属性信息is(type)判断请求Content-Type属性信息express模块中的中间件

什么是中间件?

什么是中间件?use()方法,在前面已经使用多次,use()方法中的参数是function(request,response,next){}的形式,其中next表示一个函数,这个函数就可以称作中间件。常见中间件中间件名称说明router处理页面间的路由static托管静态文件,如图片、CSS文件和JavaScript文件等morgan日志组件cookieparsercookie验证签名组件bodyparser对post请求进行解析connect-multiparty文件上传中间件router中间件

router中间件方法名称说明get(path,callback[,callback])处理GET请求post(path,callback[,callback])处理POST请求pull(path,callback[,callback])处理PULL请求delete(path,callback[,callback])处理DELETE请求all(path,callback[,callback])处理所有请求static中间件

static中间件static中间件是express模块内置的托管静态文件的中间件,可以非常方便的将图片、CSS文件和JavaScript文件等资源引入到项目中,使用起来也是非常简单方便。cookieparser中间件

bodyparser中间件

RESTfulWeb服务

RESTfulWeb服务路径说明GET/user表示查询所有的用户信息GET/user/273表示查询id等于273的用户信息POST/user表示添加一条用户信息PUT/user/273修改id等于273的用户信息DELETE/user/273表示删除id等于273的用户信息

创建数据库

实现GET请求

实现POST请求

小结本章学习了express模块中request对象和response对象的使用方法,重点学习了express模块中间件的概念,以及express模块中常用模块的使用方法。最后,对RESTfulWeb服务开发进行了简单的介绍和学习。MySQL数据库

MySQL数据库的下载安装

SQL语言

SQL语言结构化查询语言(SQL语言)是用于访问数据库的标准语言,这些数据库包括SQLServer、Oracle、MySQL和Access等等。SQL语言是1986年10月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL语言正式国际标准。1989年4月,ISO提出了具有完整性特征的SQL89标准,1992年11月又公布了SQL92标准,在此标准中,把数据库分为三个级别:基本集、标准集和完全集。数据查询功能也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDERBY,GROUPBY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。数据操作功能包括关键词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。事务处理功能确保被事物处理语句影响的表的所有行及时得以更新,包括BEGINTRANSACTION,COMMIT和ROLLBACK。MySQL的下载安装

MySQL的下载安装MySQL的下载安装MySQL的下载安装MySQL的下载安装MySQL数据库的基本命令

MySQL数据库图书馆MySQL数据库首都图书馆具体某个数据库书籍《首都地图》具体某张数据表故宫地图具体数据

创建数据库

创建数据表

数据表idbooknameauthorpress1《案例学Web前端开发》白宏健吉林大学出版社2《APS.NET范例宝典》王小科人民邮电出版社3《JavaScript从入门到精通》张鑫清华大学出版社常见数据类型数据类型说明VARCHAR字符串类型INT整数类型DOUBLE浮点数字类型

添加数据

添加数据idbooknameauthorpress1《案例学Web前端开发》白宏健吉林大学出版社2《玩转C语言》李菁菁吉林大学出版社3《Python从入门到项目实践》王国辉吉林大学出版社4《零基础学HTML5+CSS3》何萍吉林大学出版社5《零基础学PHP》冯春龙吉林大学出版社6《Android从入门到精通》李磊电子工业出版社7《C#程序设计慕课版》王小科人民邮电出版社8《APS.NET范例宝典》王小科人民邮电出版社9《JavaScript从入门到精通》张鑫清华大学出版社10《Java从入门到精通》申晓奇,赵宁清华大学出版社

查询数据

修改数据

删除数据

Node.js中的mysql模块

mysql模块的基本操作

option的属性运算符说明host连接主机名称post连接端口user连接用户名password连接密码database连接数据库debug是否开启debug模式

使用mysql模块,显示图书列表

使用mysql模块,添加图书信息

小结本章学习了MySQL数据库的下载和安装;学习了MySQL数据库中的基本命令,包括创建数据库和数据表,添加、查询、修改和删除数据表中数据的操作;最后学习应用Node.js中的mysql模块,实现MySQL数据库开发Web应用的基本操作。Express框架

认识Express框架

厨房做菜express模块Express框架创建项目

Express框架的目录结构文件或文件夹说明bin文件夹执行文件夹内部的www文件时,将启动Express框架。public文件夹存放JavaScript、CSS和图片等文件。routes文件夹存放页面路由的文件。views文件夹存放ejs或jade等模板文件。app.js文件是Express框架的核心文件。package.json文件包含第三方模块等项目安装信息。

设置项目参数

express命令的参数信息参数名称说明-h或者—help输出帮助信息。-v或者—version输出Exp框架的版本信息。-e或者—ejs使用ejs模板类型。--hbs使用handlebars引擎。-h或者—Hogan使用hogan.js。-c<engine>或者—css<engine>使用样式。--git自动生成.gitignore文件。-f或者—force强制创建项目。

详解app.js

创建Web服务器

设置中间件

设置路由

页面渲染

项目实战--选座购票

服务器端代码实现

客户端代码实现

执行项目

小结本章在express模块的基础上,进一步学习了Express框架的使用方法。对Express模块的核心文件app.js进行了详细的介绍,包括创建Web服务器、设置中间件和路由的配置等等。最后通过一个选座购票的小示例,演示了如何使用Express框架的方法。socket.io模块

socket.io模块的基本操作创建WebSocket服务器创建WebSocket客户端创建WebSocket事件创建WebSocket服务器

创建WebSocket客户端

创建WebSocket事件

WebSocket事件事件名称说明connection连接客户端时,触发该事件。disconnect解除客户端连接时,触发该事件。WebSocket方法方法名称说明on()监听socket事件。emit()发送socket事件。

socket通信类型

socket通信类型类型名称说明public向所有客户端传递数据(包含自己)。broadcast向所有客户端传递数据(不包含自己)。private向特定客户端传递数据。public通信类型

public通信类型broadcast通信类型

broadcast通信类型private通信类型

private通信类型项目实战--聊天室

服务器端代码实现

服务器端代码实现

客户端代码实现

执行项目

小结本章学习了socket.io模块的基本操作,包括创建WebSocket服务器、创建WebSocket客户端和创建WebSocket事件;学习了socket的三种通信类型(public方式、broadcast方式和private方式);最后通过一个简单的聊天室项目,实战练习了socket.io模块的相关操作。MongoDB数据库

MongoDB数据库MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是使用JavaScript语言管理数据的数据库,同样也是使用V8JavaScript引擎。本章将学习MongoDB数据库技术,以及在Node.js中如何应用mongojs模块链接MongoDB数据库的方法。关系型数据库与非关系型数据库

关系型数据库关系型数据库,指采用了关系模型来组织数据的数据库。关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念:l关系:一张二维表,每个关系都具有一个关系名,也就是表名。l元组:二维表中的一行,在数据库中被称为记录。l属性:二维表中的一列,在数据库中被称为字段。l域:属性的取值范围,也就是数据库中某一列的取值限制。l关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成。关系型数据库的优缺点优点:l容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。l使用方便:通用的SQL语言使得操作关系型数据库非常方便。l易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率。缺点:网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的。在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像webserver和appserver那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。当需要对数据库系统进行升级和扩展时,往往需要停机维护和数据迁移。非关系型数据库非关系型数据库,指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。非关系型数据库的优缺点优点:用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。适用于S

温馨提示

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

评论

0/150

提交评论