abstract:什么是nodeNode是基于Chrome V8 解析引擎之上构建的一个JavaScript运行时环境,或者说平台在node中,可以使用JavaScript语言进行编译把Node是一个平台,让JavaScript可以脱离浏览器环境运行Node自身使用C++ 语言写出了很多系统级别相关的API,暴露了一些JavaScript环境APInpm:包管理工具npm是一个用来托管基于node开发包的是一个命令
什么是node
Node是基于Chrome V8 解析引擎之上构建的一个JavaScript运行时环境,或者说平台在node中,可以使用JavaScript语言进行编译把
Node是一个平台,让JavaScript可以脱离浏览器环境运行
Node自身使用C++ 语言写出了很多系统级别相关的API,暴露了一些JavaScript环境API
npm:包管理工具npm
是一个用来托管基于node开发包的
是一个命令行工具,可以用来下载npm网络上托管的Node包
有了npm,直接拿来解决问题,更加专注于业务处理
Node的特点:
event——driven:事件驱动
non-blocking I/O model :非阻塞IO模型
文件IO、网络IO基本山都是异步的
在Node中有各种花式回调
Node采用的是事件驱动和非阻塞IO模型使它本身非常的轻量级和高效
Node总结
Node是基于Chrome V8引擎,一个JavaScript运行环境
验证node版本 node -v
操作方法
创建http服务器得到一个服务器实例对象
var http = reauire('http') var server = http.createServer()
给Server对象添加request事件处理函数:回调函数有两个参数
1 Request:用来获取当前客户端的请求信息,可以获取客户端请求中的url请求地址、查询字符串、post请求提交
2 Response:也是一个对象,一般用来给本次请求发送响应数据
通过Server对象的listen函数,设置一个监听的端口号,启动服务器
服务器开启监听成功后,会触发该回调函数
path环境变量
配置用户环境变量 快速启动
Node中的JavaScript
REPL运行环境
R: read
E: Eval
P: Print
L: loop
ECMAscript
Node对最新的ECMAscript语言标准支持的非常好
Node除了官方的ECMAscript语言规范,同时将console对象、定时器等函数也移植到NOde中
全局对象
global:相对于浏览器中的全局对象window,全局作用域和模块作用域的概念
Console
process:进程对象,对应着的是浏览器中的window对象
Buffer
Node中的模块系统
Node天生就已经实现了一个模块系统解决方案
每个文件对外接口是module.exports
向当前运行终端输出一些内容
process.stdout.write接收终端输入的内容
当程度启动,当前应用程序就保持挂起 等待用户输入内容
process.stdin.on('data', function (data) { })
模块系统
模块系统解决方案
Node基于CommonJS规范实现了自己的一套模块系统规范
文件模块
用户编写的模块
第三方模块
一般就是通过npm install安装的模块就是第三方模块
npm 本地安装 全局安装
npm install 包名 --global|-g 全局安装
nodemon
可以实现文件代码改变
htp-server
可以实现快速启动服务器
使用npm root -g 可以查看全局命令行工具的安装
brower-sync
前端可视化开发
git bash here
touch 新建一个文件
cat 查看文件
vi (文件名)
按less (文件名)按q退出
yy 在编辑模式中是复制 p是粘贴
文件操作
path
使用是进入node环境,然后开始使用
同步、异步调用
同步调用代码会阻塞后续代码的继续执行,没有异步API执行效率高,但是写起来爽
同步操作API需要使用try catch捕获异常
readFileSync('./REEADEME.md', 'utf8')
异步API一般都是通过回调函数的形式来获取执行结果
异步API无法通过try catch来捕获异常,一般在爱回调函数中,node会给你提供了一个err对象,你可以通过判断回调函数的第一个参数err来看看是否有异常发生
能使用异步API的情况下,少使用同步的
highlight.js markdown高亮
promise
then里边有三种结果
then可以多次链式调用
每一个then 中的回调函数的结果取决于上一then的返回值
then里边不返回任何东西,默认就是undefined
then里面显示的调用了return下一个then得到的就是上一个then的return结果
在一个then里面返回一个新的Promise对象