简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
1.编写高性能网络服务器的javascript工具包(用js开发服务端程序)
2.单线程、异步、事件驱动
单线程:01.php不支持多线程,但是php的服务apache支持多线程,启动时会初始化150个线程供php使用。在线程池中,线程工作将内容提供到客户端之后继续回到线程池中等待被调用;02.node.js单线程,多个线程对库操作,每个线程对应一个块内存;03.PHP高并发、大数据量如何处理?让线程快速结束(线程优化、主键)
异步和事件驱动:异步访问完数据库之后就去进行其他操作,访问过程速度特别快,当下一步需要数据时会报错,所以需要将下一步操作放到上面的函数中,作为回调函数使用。node.js中有asyac方法让程序顺序执行
3.特点:快、耗内存多
4.node.js vs php
优点:
01.性能高
02.开发效率高(优化的量少)
03.应用范围广(可以开发桌面系统:electorn框架)
缺点:
01.新、人少
02.中间件少
03.IDE不完善
5.node请求静态服务器
var http=require("http");//http是node中自带的对象,利用require导入
http.createServer(function(request,response){
response.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
console.log("访问");
response.write("hello world");
response.end("你好,世界!");
}).listen(8000);
console.log("Server running at http://127.0.0.1:8000/");
6.node模块化开发和commonJS规范
01模块引用
exports.add=function (num1,num2){
alert(num1+num2);
}//模块对外提供的接口,假设存放在add.js中
var obj=require("./add.js");//模块引用
// 赋值的意义在于,js中将仅能识别obj,因为这是已经定义的变量,并不能识别./add.js
obj.add(3,5);//正确的调用方法
02模块定义
module对象:在每一个模块中,module对象代表该模块自身。
export属性:module对象的一个属性,它向外提供接口。
03模块标识
模块标识指的是传递给require方法的参数,必须是符合小驼峰命名的字符串,或者以 . 或 .. 开头的相对路径,或者绝对路径。