一、Node.js 介绍
1. 下载 & 安装
- 普通方式
- 使用 NVM [多版本共存]
- nvm,nodejs 版本管理工具,可切换多个Node.js 版本
- mac os,使用 brew install nvm
- windows,github 中搜索 nvm-windows,有下载地址
- 相关使用命令
- nvm list 查看当前所有的 node 版本
- nvm install v10.13.0 安装指定的版本
- nvm use --delete-prefix 10.13.0 切换到指定的版本
2. nodejs 和 前端 javascript 的区别
- ECMAScript参考链接
- 定义了语法,写 javascript 和 nodejs 都必须遵守
- 变量定义、循环、判断、函数
- 原型和原型链、作用域和闭包、异步
- 不能操作 DOM,不能监听 click 事件,不能发送 ajax 请求
- 不能处理 http 请求,不能操作文件
- 即,只有 ECMAScript,几乎做不了任何实际的项目
- javascript
- 使用 ECMAScript 语法规范,外加 Web API,缺一不可
- DOM 操作,BOM 操作,事件绑定,Ajax 等
- 两者结合,即可完成浏览器端的任何操作
- nodejs
- 使用 ECMAScript 语法规范,外加 Node.js API,缺一不可
- 处理 http,处理文件等,具体参考链接
- 两者结合,即可完成server的任何操作
- 题外:
- commonjs
- module.exports = {}
- require
- commonjs
3. server 开发和前端
- 服务稳定性
- server 端可能会遭受各种恶意攻击和误操作
- 单个客户端可以意外挂掉,但是服务端不能
- 考虑内存和CPU
- 客户端独占一个浏览器,内存和CPU都不是问题
- server端要承载很多请求,CPU 和 内存都是稀缺资源
- 使用 stream 写日志,使用 redis 存 session
- 日志记录
- 前端也会参与写日志,但只是日志的发起方,不关心后续
- server 端要记录日志、存储日志、分析日志、前端不关心
- 安全
- server 端要随时准备接受各种恶意攻击,前端则少很多
- 如:越权操作,数据库攻击等
- 集群和服务拆分
- 产品发展速度快,流量可能会迅速增加
- 如何通过扩展机器和服务拆分来承载大流量?