node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢?
- node.js 提供了 JavaScript的运行环境。
- 当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行
- 当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行
Node.js 可以做什么?
-
node.js作为一个JavaScript的运行环境,提供了基础的功能和API:(基于node.js衍生了很多框架)
-
Express框架 (快速构建web应用)
-
Electron 框架 (快速构建跨平台的桌面应用)
-
restify 框架 (快速构建API接口项目)
-
读写操作数据库,创建实用的命令行工具辅助前端开发
读取文件
-
浏览器中的js没有文件操作的能力的
但是node中的js具有文件操作的能力 -
fs是 FileSystemde 的简写,文件系统的意思
在node中进行文件操作,就必须引入fs核心模块
fs核心模块 ,提供了所有文件操作的相关API
例如:fs.readFile方法读取文件
- require方法加载fs核心模块
var fs=require(‘fs’) - 读取文件
第一个参数读取文件路径
第二个参数是一个回调函数 - error
如果读取失败,error就是错误对象
如果读取成功,error就是null - date
如果读取失败,date就是untifined(没有数据)
如果读取成功,date就是读取到的数据
fs.readFile('./hello.tex',function(error,date){// 默认存储的是2进制,然后转化为16进制// <Buffer 68 65 6c 6c 6f 2c 77 6f 72 6c 64 21 21 21>// 通过toString方法把其转化为认识的字符console.log(date);console.log(date.toString());
// 注释:通过判断 error 是否存在,确认文件读取是否出错
if (error) { // 如果 error 有值(说明读取失败),打印错误提示console.log('读取文件失败了')
} else { // 如果 error 为 null(说明读取成功),打印文件内容(data 是文件内容的 Buffer/字符串)console.log(data.toString())
}
})
写文件
- 写文件
第一个参数:文件路径
第一个参数:文件内容
第二个参数:回调函数 - error
- 成功:error就是null
文件写入成功 - 失败:error就是错误对象
文件写入失败
- 成功:error就是null
var fs=require('fs')
fs.writeFile('./你好.md','大家好,我是node',function(error){console.log('成功')
})
request
-
request请求事件处理函数,接受2个参数:
- Request请求对象
请求对象可以用来获取客户端的一些请求信息,例如请求路径 - Request响应对象
响应对象可以给客户端发送响应消息
- Request请求对象
-
respose对象有一个方法:write 可以用来给客户端发送响应数据
write可以使用多次,但最后一定要用end来结束响应。否则客户端一直响应
var http=require('http');
var server=http.createServer();
server.on('request',function(request,response){
console.log('收到请求,请求路径为'+request.url)response.write('hello')
response.write('node')
response.end()
})
server.listen(3000,function(){console.log('启动成功,通过http://127.0.0.1:3000/访问')
})
url
根据不同的请求路径发送的不同的响应结果
- 获取请求路径
response.url获取端口后的的那一部分路径
也就是说所有的url都以 /开头 - 判断路径返回响应
var http=require('http')
var server=http.createServer()
server.on('request',function(request,response){
console.log(request.url)// response.end('hello,node')// response.write('hello')
// response.write('node')
// response.end()var url=request.url
if(url==='/'){response.end('index paga')
}else if(url==='/login'){response.end('login paga')
}else if(url==='/products'){// 设置响应头:明确使用 UTF-8 编码的 JSONresponse.setHeader('Content-Type', 'application/json; charset=utf-8');var products=[{name:'苹果',price:888,} ,{name:'荔枝',price:9999,}]response.end(JSON.stringify(products))
}else{response.end('404')
}
})
server.listen(80,function(){console.log('...')
})
http
核心模块 http
http帮你创建编写服务器的
-
加载http模块
var http=require(‘http’) -
使用http。createServer()方法创建一个Web 服务器
返回一个Server实例
var server=http.createServer();
3.提供服务
1. 发请求
2. 接受请求
3. 处理请求
4. 给个反馈(发送响应)
当客户端请求过来时,就会自动触发request 请求事件,然后执行第2个参数:回调函数
server.on('request',function(){
console.log('收到请求')
})
4.绑定端口号,启动服务器
server.listen(3000,function(){console.log('启动成功,通过http://127.0.0.1:3000/访问')
})