001 Node初识
一、基本概念
1.定位
- Node.js是进行服务端开发的,同类型的还有Java、PHP、Python、.Net等。
- Node.js不是语言、库、框架,而是一个JavaScript运行环境,简而言之就是用来解析JavaScript代码
- Node.js可以脱离浏览器运行。浏览器中的JavaScript包括ES、BOM、DOM,Node.js因为是干服务端的事,因此不包含BOM、DOM,只有ES和提供一些服务器级别的API
2.特性
- 事件驱动
- 非阻塞IO模型(异步)
- 轻量和高效
- 单线程
3.npm
放置了JavaScript相关的包,方便使用命令行快速下载包,类似于PHP中的composer。
4.B/S编程模型
Browser/Server,浏览器/服务器模式,Node作为学习这种编程模型的工具
5.模块化编程
JavaScript只能通过script标签来加载,Node中可以用import来加载
6.异步编程
- 回调函数
- Promise
- async
- generator
7.Express Web开发框架
二、安装与使用
官网下载后直接安装即可,cmd输入node有显示说明安装成功
使用命令行,定位到js代码对应的文件夹,输入node xxx文件名即可运行程序
1.读文件与写文件
//实现文件内容的读取
//使用浏览器就没办法识别require
//toString是将16进制代码转换为字符串
let fs = require('fs')
fs.readFile('./data/01.txt',function (error, data){
console.log(data.toString())
});
ps.require是Node的一个方法,加载了fs模块
let fs = require('fs')
fs.writeFile('./data/02.txt','你好Node.js',function (error){
console.log(error);
})
2.创建一个服务器
//1.使用require加载http模块
var http = require('http')
//2.使用http模块的createServer方法创建一个web服务器
var server = http.createServer()
//3.服务流程:发请求、接受请求、处理请求、给出反馈
//绑定端口号,启动服务器
server.listen(3000, function (){
console.log('服务器已启动,可以使用http://127.0.0.1:3000/来访问')
})
//接受客户端的请求
server.on('request',function (){
console.log('收到了客户端的请求了')
})
运行程序之后服务器启动,占用了cmd,当使用浏览器输入http://127.0.0.1:3000/后即向服务器发送了请求,浏览器窗口一直在转的原因是还没有给与响应。
服务器响应代码:即在上述server.on的回调函数中进行请求的处理形参包括request(请求对象),response(响应对象)
server.on('request',function (req, res){
//显示用户输入的url
console.log('收到了客户端的请求了,请求的地址是' + req.url);
//使用response的write方法,给客户端发送响应数据,最后一定要用end来结束响应
res.write('hello');
res.end();
})
写完发现若输出中文会出现乱码,就添加了一段res.setHeader(‘Content-type’, ‘application/json’),此外可以把输出的内容直接放在end后面即可
下面是优化后的代码
server.on('request',function (req, res){
//用变量接受url,所有的url都是以“/”开头的
const url = req.url;
console.log('收到了客户端的请求了,请求的地址是' + url);
var result;
if (url === '/'){
result = 'index';
}
else if (url === '/register'){
result = '注册';
}
else if (url === '/login'){
result = '登录';
}
else{
result = '404 not find';
}
//防止中文出现乱码
res.setHeader('Content-type', 'application/json')
//给出反馈
res.end(result);
})