node 的优点:
- 1、基于V8虚拟机,可构建高性能服务器
- 2、单线程
- 3、可利用Javascript进行后台开发
- 4、非阻塞IO,向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。
- 5、RESTful API,REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。资源与URI、统一资源接口、资源的表述、资源的链接、状态的转移
node 的问题:
- 以前版本安装的很多全局的工具包需要重新安装
- 无法回滚到之前的版本
- 无法在多个版本之间切换(很多时候我们要使用特定版本)
- Python环境丢失,Node中有些第三方的包是以C/C++源码的方式发布的,需要安装后编译,确保全局环境中可以使用python命令,python 版本推荐2.7.0
- 环境变量丢失,部分电脑安装完毕之后没有环境变量需要手动配置,环境变量的变量名是不区分大小写的(PATH 变量:只要添加到 PATH 变量中的路径,都可以在任何目录下,目的可以在任何地方调起node命令)
ES6 和 node 的模块导出对比:
//es6的模块导出
export default class Box{}
//node的模块导出
module.exports={
a:function(){console.log("a");},
b:function(){console.log("b");}
}
ES6 和 node 的导入模块对比:
//es6中导入模块
import Box from "./js/a.js";
//node中导入模块
var obj=require("./js/a");
obj.a();
obj.b();
node服务
node.js 中通过 http 创建一个服务对象,返回 http.Server 类的实例化对象
var http=require("http");
创建服务器,使用 http.createServer( ) 方法创建服务器,并绑定服务监听端口。函数中可以使用 request / response 参数来接收和响应数据。
//载入http模块
var http=require("http");
//获取当前页面的路径
var querystring=require("querystring");
var server=http.createServer(function(request,response){
// request 请求对象
// response 响应对象
request.on("data",function(_data){
});
request.on("end",function(){
//获取路径链接中的参数
var obj=querystring.parse(request.url.split("?")[1]);
//响应头部
response.writeHead(200,{
"content-type":"text/html;charset=utf-8",
// 允许所有跨域请求,*是通配符
"Access-Control-Allow-Origin":"*"
//当请求头有自定义的数据时,设置跨域请求头,*是通配符
"Access-Control-Allow-Headers":"*"
});
//响应正文数据
response.write(obj.user+",欢迎光临");
response.end();
})
});
//监听服务器访问 参数为 端口号 IP地址 回调函数
server.listen(4002,"10.9.61.57",function(){
console.log("创建了服务器");
})