课程信息
课程名称: Node.js+Express+Koa2+开发Web Server博客
课程章节: 第2章 nodejs 介绍
课程讲师: 双越
课堂笔记
1、CommonJS模块化
1.模块化规范种类
这两个比较流行:CommonJS(ES5的Node环境)、ES6
这两个基本不用:AMD、CMD
2.CommomJS要点
每个文件都可当作一个模块。
在服务器端:模块的加载是运行时同步加载的。
在浏览器端:模块需要提前编译打包处理。
3.暴露方式(暴露模块)
格式:
module.exports = 变量名
exports.xxx = 变量名
4.引入方式(引入模块)
格式:
const xxx = require(xxx)
5.基本案例
a.js:
function add (a, b) {
return a + b
}
function mul (a, b) {
return a * b
}
// 统一暴露
module.exports = {add,mul}
b.js:
// 解构赋值形式导入
const { add, mul } = require(’./a’)
// 简便方式导入
const _ = require(‘lodash’)
const sum = add(10, 20)
const result = mul(100, 200)
console.log(sum)
console.log(result)
const arr = _.concat([1, 2], 3)
console.log(‘arr…’, arr)
2、服务端与前端的区别
1.服务端稳定性
server端可能会遭受各种恶意攻击和误操作。
单个客户端可以意外挂掉,但是服务端不能。
课程后面会讲解使用PM2做进程守候。
2.考虑CPU和内存(优化、扩展)
客户端独占一个浏览器,内存和CPU都不是问题。
server端要承载很多请求,CPU和内存都是稀缺资源。
课程后面会讲解使用stream写日志,使用redis存session。
3.日志记录
前端也会参与写日志,但只是日志的发起方,不关心后续。
server端要记录日志、存储日志、分析日志,前端不关心。
课程后面会讲解多种日志记录方式,以及如何分析日志。
4.安全
server端要随时准备接收各种恶意攻击,前端则少很多。
如:越权操作,数据库攻击等。
课程后面会讲解登录验证,预防XSS攻击和SQL注入。对于攻击而言,前端一般占30%责任,后端占70%责任。
5.集群和服务拆分
产品发展速度快,流量可能会迅速增加。
如何通过扩展机器和服务拆分来承载大流量。
本课程虽然是单机器开发,但是从设计上支持服务拆分。