nodejs是javascript的运行环境,基于v8内核
- 异步I/O
- 事件与回调函数
- 单线程
- 跨平台(libuv)
- 异步以及单线程
node其实不是一种语言,是javascript语言的运行环境,所以javascript前端浏览器的一些API都会有,不过是把javascript运行在服务器端,可以编写后端程序,如IO,网络等功能。
nodejs的API是异步的,并且是单线程的,单线程可以避免多线程的开销,以及上下文切换时的开销,不会涉及同步状态的问题。
- 前端涉及异步的地方,典型的是Ajax调用。
- node异步读取文件
var fs = require('fs');
fs.readFile('./README.md',function (err,file) {
console.log("读取文件完成");
});
console.log("发起读取文件");
node readFile.js 先打印"发起读取文件",后打印"读取文件完成",执行步骤
虽然异步操作性能挺好,但是有时候会出现多嵌套的情况,代码难看,且难于维护。如图,
fs.readFile('./README.md',function (err,file) {
fs.readFile('./README.md',function (err,file) {
fs.readFile('./README.md',function (err,file) {
fs.readFile('./README.md',function (err,file) {
console.log("读取文件完成");
});
console.log("读取文件完成");
});
console.log("读取文件完成");
});
console.log("读取文件完成");
});
async模块可以解决多层嵌套的问题
可以参考这个教程
https://github.com/huilegezai/async_demo
- nvm --Node Version Manager(Node版本管理器)参考博客https://www.jianshu.com/p/8671e439a811
- node
- npm --Node Packaged Modules(Node包管理工具)
用nvm管理nodejs版本,可以轻松切换node版本,优点很多,但是一些nodejs模块需要全局安装时都得每个node版本都要安装。
npm是nodejs包的管理工具,我查看官网目前有475000个模块,开发者下载并在项目中使用。https://www.npmjs.com/
nvm install v4.4.0 //安装node
nvm ls //查看已经安装的node版本
nvm use v4.4.0 //切换node版本
node -v //查看当前node版本
npm -v //查看当前npm版本
基于 Node.js 平台,快速、开放、极简的 web 开发框架
其他nodejs开发框架还有:
可以参考这个路径https://cnodejs.org/topic/58caaec27dee71e5193a53ce