一、介绍
Node.js是一个基于Chrome V8引擎的JavaScript运行环境(runtime)
使用了一个事件驱动 非阻塞式I/O的模型 使其轻量又高效
它使JavaScript可以开发后端程序 从而实现几乎其他后端语言能实现的所有功能
二、安装及准备
官网下载安装包:https://nodejs.org/en/
直接下一步即可 傻瓜式安装
安装后 在cmd输入node -v
可查看当前node版本
VScode的智能提示:
在cmd输入:
npm install --save-dev @types/node
下载typings 下载来之后 重启一下VScode即可使用
npm是一个包管理器 只要有NodeJs就有npm 可用其下载一些包和相关工具
三、使用
1、Http模块
若使用PHP来编写后端的代码时 需要Apache或Nginx服务器来处理客户端的请求响应
若使用Java来编写后端的代码时 需要Tomcat或Nginx服务器处理客户端的请求响应
但 对Node.js来说 概念完全不一样
使用Node.js时 不仅仅是在实现一个应用 同时还实现了整个HTTP服务器
// 引入http模块
var http=require("http");
// 用http模块创建服务
/**
* req 获取url信息(request)
* resp 浏览器返回信息(response)
*/
http.createServer(function(req,resp){
// 发送Http头部 状态值200 文件类型html 字符集utf-8
resp.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
// 发送响应数据
resp.write("NodeJs Hello World!");
// 结束响应
resp.end();
}).listen(8001); // 设置监听端口
在cmd中到Nodejs文件所在盘符下输入node 文件名
来运行
启动后 成功访问:
请求头也是自己设置的:
如此 简单实现了NodeJs服务器的访问
2、Url模块
Url模块有三个方法:parse() 和 format() 和 resolve()
①、parse()
parse方法主要用于解析url 也是Url模块中最常用的方法
可在parse()里传入url地址 拿到请求信息:
parse()方法的第二个参数传入true时 代表将请求信息解析 转换为对象:
②、format()
可将对象转换为请求地址 和parse()刚好相反
③、resolve()
可对请求url进行替换:
3、打印url
var http=require("http");
http.createServer(function(req,resp){
// 打印加载的url
console.log(req.url);
resp.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
resp.write("NodeJs Hello World!");
resp.end();
}).listen(8001);
例一:
访问路径:
输出:
例二:
访问路径:
输出:
例三:
访问路径:
输出:
这个/favicon.ico就是浏览器标签左侧的小图标 每次都会跟随页面自动加载
比如 "写文章"左侧的这个红色的"C"就是一个favicon.ico
4、获取请求参数
var http=require("http");
var url=require("url")
http.createServer(function(req,resp){
resp.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
if (req.url!="/favicon.ico")
{
// req.url:获取浏览器url输入的信息
console.log(req.url);
// 解析url parse()第一个参数为地址 第二个参数传入true 会将请求的参数转换为对象
var result=url.parse(req.url,true);
console.log(result);
}
resp.write("NodeJs Hello World!");
resp.end();
}).listen(8001);
获取到了一大堆数据
还可以获取其指定属性
5、获取url的get传值的指定参数
var http=require("http");
var url=require("url")
http.createServer(function(req,resp){
resp.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
// 不解析图标图片
if (req.url!="/favicon.ico")
{
// 解析url parse()第一个参数为地址 第二个参数传入true 会将请求的参数转换为对象
var result=url.parse(req.url,true);
// 获取url的id值
console.log(result.query.id);
}
resp.write("NodeJs Hello World!");
resp.end();
}).listen(8001);
当访问http://localhost:8001/news?id=1的时候
输出:
成功获取指定参数
四、Nodejs自启动工具 supervisor
supervisor会不停监视应用下面的所有文件
一旦发现有文件被修改 就重新载入程序文件 如此实现了部署
修改了程序文件后 马上就能看到变更后的结果
无需每次重启nodejs了
安装:
在cmd下输入:
npm install -g supervisor
使用
使用supervisor
命令代替node命令启动应用即可
每次保存代码的时候 都会自动重新启动服务器: