Node基础介绍PPT资料.ppt
《Node基础介绍PPT资料.ppt》由会员分享,可在线阅读,更多相关《Node基础介绍PPT资料.ppt(23页珍藏版)》请在冰豆网上搜索。
cnpminstallnpmg安装淘宝镜像方法:
npminstall-gcnpm-registry=https:
/registry.npm.taobao.org,模块在Node环境中;
,一个.js文件就称之为一个模块(module)编写了一个hello.js文件,这个hello.js文件就是一个模块,模块的名字就是文件名(去掉;
.js后缀),所以hello.js文件就是名为hello的模块。
module.exports把函数greet作为模块的输出暴露出去,这样其他模块就可以使用greet函数,再编写一个main.js文件,调用hello模块的greet函数:
引入hello模块用Node提供的require函数:
vargreet=require(./hello);
一、创建Node.js应用(Hello,World)创建Node.js第一个Hello,World!
应用前,让我们先了解下Node.js应用是由哪几部分组成的:
引入required模块:
我们可以使用require指令来载入Node.js模块。
创建服务器:
服务器可以监听客户端的请求,类似于Apache、Nginx等HTTP服务器。
接收请求与响应请求服务器很容易创建,客户端可以使用浏览器或终端发送HTTP请求,服务器接收请求后返回响应数据。
步骤一、引入required模块我们使用require指令来载入http模块,并将实例化的HTTP赋值给变量http,实例如下:
varhttp=require(http);
步骤二、创建服务器接下来我们使用http.createServer()方法创建服务器,并使用listen方法绑定8888端口。
函数通过request,response参数来接收和响应数据。
实例如下,在你项目的根目录下创建一个叫server.js的文件,分析Node.js的HTTP服务器:
第一行请求(require)Node.js自带的http模块,并且把它赋值给http变量。
接下来我们调用http模块提供的函数:
createServer。
这个函数会返回一个对象,这个对象有一个叫做listen的方法,这个方法有一个数值参数,指定这个HTTP服务器监听的端口号。
二、文件操作Node.js文件系统Node.js提供一组类似UNIX(POSIX)标准的文件操作API。
Node导入文件系统模块(fs)语法如下所示:
varfs=require(“fs”);
2.1读文件异步和同步:
Node.js文件系统(fs模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的fs.readFile()和同步的fs.readFileSync()。
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
建议用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。
步骤:
1.引入一个fs模块(filesystem)varfs=require(fs);
返回一个文件模块对象2.读文件fs.readFile(路径/文件名,function(err,data)err文件读取错误没有错误err返回nulldata文件内容Buffer二进制流文件3.fs.readFile(路径/文件名,编码,function(err,data)实例:
读取index.html,Buffer对象(缓冲区):
JavaScript语言自身只有字符串数据类型,没有二进制数据类型。
但在处理像TCP流或文件流时,必须使用到二进制数据。
因此在Node.js中定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区。
在Node.js中,Buffer类是随Node内核一起发布的核心库。
Buffer库为Node.js带来了一种存储原始数据的方法,可以让Node.js处理二进制数据,每当需要在Node.js中处理I/O操作中移动的数据时,就有可能使用Buffer库。
原始数据存储在Buffer类的实例中。
一个Buffer类似于一个整数数组,但它对应于V8堆内存之外的一块原始内存。
2.2写文件异步模式下写入文件的语法格式:
fs.writeFile(file,data,options,callback)如果文件存在,该方法写入的内容会覆盖旧的文件内容。
参数参数使用说明如下:
file-文件名或文件描述符。
data-要写入文件的数据,可以是String(字符串)或Buffer(流)对象。
options-该参数是一个对象,包含encoding,mode,flag。
默认编码为utf8,模式为0666,flag为wcallback-回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。
示例:
file.js,2.3、其他文件操作fs.stat(path,callback)获取文件fs.open(path,flags,mode,callback)打开文件fs.close(fd,callback)关闭文件fs.ftruncate(fd,len,callback)截取文件fs.unlink(path,callback)删除文件fs.mkdir(path,mode,callback)创建目录fs.readdir(path,callback)读取目录fs.rmdir(path,callback)删除目录具体参数使用:
http:
/,三、Stream(流)Stream是一个抽象接口,Node中有很多对象实现了这个接口。
例如,对http服务器发起请求的request对象就是一个Stream,还有stdout(标准输出)。
Stream有四种流类型:
Readable-可读操作。
Writable-可写操作。
Duplex-可读可写操作.Transform-操作被写入数据,然后读出结果。
所有的Stream对象都是EventEmitter的实例。
常用的事件有:
data-当有数据可读时触发。
end-没有更多的数据可读时触发。
error-在接收和写入过程中发生错误时触发。
finish-所有数据已被写入到底层系统时触发。
3.1从流中读取数据详见main1.js3.2写入流详见main2.js3.3管道流管道提供了一个输出流到输入流的机制。
通常我们用于从一个流中获取数据并将数据传递到另外一个流中。
详见main3.js3.4链式流链式是通过连接输出流到另外一个流并创建多个流操作链的机制。
链式流一般用于管道操作。
用管道和链式来压缩和解压文件:
zip.js,unzip.js,五、操作数据库安装驱动:
npminstallmysql连接数据库:
mysql.js数据库操作:
(案例)查询数据:
mysql.js插入数据:
insert.js更新数据:
update.js删除数据:
delete.js,六、Node.jsExpress框架使用Express可以快速地搭建一个完整功能的网站。
1.Express框架核心特性:
可以设置中间件来响应HTTP请求。
定义了路由表用于执行不同的HTTP请求动作。
可以通过向模板传递参数来动态渲染HTML页面。
2.安装方法:
安装Express并将其保存到依赖列表中:
$npminstallexpress-save以下几个重要的模块是需要与express框架一起安装的:
body-parser-node.js中间件,用于处理JSON,Raw,Text和URL编码的数据。
cookie-parser-这就是一个解析Cookie的工具。
通过req.cookies可以取到传过来的cookie,并把它们转成对象。
multer-node.js中间件,用于处理enctype=multipart/form-data(设置表单的MIME编码)的表单数据。
第一个Express框架实例HelloWorldexpress-demo.js请求和响应Express应用使用回调函数的参数:
request和response对象来处理请求和响应的数据。
app.get(/,function(req,res)/-)Request对象request对象表示HTTP请求,包含了请求查询字符串,参数,内容,HTTP头部等属性。
常见属性有:
req.app:
当callback为外部文件时,用req.app访问express的实例req.baseUrl:
获取路由当前安装的URL路径req.body/req.cookies:
获得请求主体/Cookiesreq.fresh/req.stale:
判断请求是否还新鲜req.hostname/req.ip:
获取主机名和IP地址req.originalUrl:
获取原始请求URLreq.params:
获取路由的parametersreq.path:
获取请求路径,req.protocol:
获取协议类型req.query:
获取URL的查询参数串req.route:
获取当前匹配的路由req.subdomains:
获取子域名req.accepts():
检查可接受的请求的文档类型req.acceptsCharsets/req.acceptsEncodings/req.acceptsLanguages:
返回指定字符集的第一个可接受字符编码req.get():
获取指定的HTTP请求头req.is():
判断请求头Content-Type的MIME类型Response对象response对象表示HTTP响应,即在接收到请求时向客户端发送的HTTP响应数据。
res.app:
同req.app一样res.append():
追加指定HTTP头res.set()在res.append()后将重置之前设置的头res.cookie(name,value,option):
设置Cookieopition:
domain/expires/httpOnly/maxAge/path/secure/,res.