2021-9-23

2-1 下载和安装

  • 下载 & 安装
  • nodejs 和 前端 JavaScript 的区别
  • server 开发和前端开发的区别

下载安装

  • 普通安装
  • 使用nvm

总结

  • 如果要同时使用多个 node 版本,推荐使用 nvm
  • 无论用哪种方式,必须安装好 node,版本要大于等于8.0

2021-9-26

2-2 nodejs和js的区别

  • ECMAScript
  • JavaScript
  • nodejs

    ECMAScript

  • 定义了语法,写 JavaScript 和 nodejs 都必须遵守

    • 包含变量定义,循环,判断,函数
    • 原型和原型链,作用域和闭包、异步
  • 但是:
    • 不能操作 DOM ,不能监听 click 事件,不能发送 ajax 请求
    • 不能处理 http 请求,不能操作文件
  • 所以:只有 ECMAScript,几乎做不了任何实际的项目

    JavaScript

  • 使用 ECMAScript 语法规范,外加 Web API(DOM操作,BOM操作,事件绑定,Ajax等),缺一不可

  • 两者结合,即可完成浏览器端的任何操作

Nodejs

  • 使用 ECMAScript 语法规范,外加 nodejs API,缺一不可
  • 处理 http ,处理文件 nodejs.cn/api
  • 两者结合,即可完成 server 端的任何操作

总结

  • ECMAScript 是语法规范
  • nodejs= ECMAScript + nodejs API

2-3 commonjs-演示

引入自己的方法

创建一个 commonjs-test 的目录,然后在里面创建一个 a.js 和 b.js
简单写一个加法

  1. // a.js
  2. function add(a,b) {
  3. return a+b
  4. }
  5. module.exports = add
  6. // b.js
  7. const add = require('./a')
  8. const sum = add(10,20)
  9. console.log(sum);

然后在 terminal 中输入 node b.js
会正确输出 30

引入第三方库

  1. const _ = require('lodash')

方法相同
nodejs中使用 commonjs 模块化
不同于前端项目中使用 ES6Module

2-4 debugger

有很多 debugger 方式
创建 debugger-test 创建入口 index.js

使用 vscode 的 debugger 打断点后即可调试

listen 3000 端口时,开启调试模式就可以正确listen

2021-9-28

2-5 debuger之inspect协议

nodejs 基于 inspect 协议的调试方法

写 debugger ,然后打开 chrome://inspect

—inspect=9229 要唯一

2-6 server 开发和前端开发的区别

server 端要承接很多很多 client 端的请求,然后去处理

  • 服务稳定性
    • 不能挂了,不然全部与之相关的都会挂
  • 要考虑内存和 CPU (优化,扩展)
  • 日志记录
  • 安全
  • 集群和服务拆分

服务稳定性

  • server 端可能会遭受各种恶意攻击和误操作
  • 单个客户端可以意外的挂掉,但是服务端不能
  • PM2 可以做进程守候
    • 挂了后也会自己重启

考虑 CPU 和内存(优化、扩展)

  • 客户端独占一个浏览器,内存和 CPU 都不是问题
  • server 端要承载很多请求,CPU 和内存都是稀缺资源
  • 使用 stream 来写日志,使用 redis 存 session

日志记录

  • 前端也会参与写日志,但只是日志的发起方,不关心后续
  • server 端要记录日志,存储日志,分析日志,前端不关心
  • 多种日志和分析方式

安全

  • server 端要随时准备接收各种恶意攻击,前端则少很多
  • 越权操作,数据库攻击
  • 登录验证,预防 xss 攻击和 sql 注入

集群和服务拆分

  • 产品发展速度快,流量可能会迅速增加
  • 扩展机器和服务拆分来承载大流量
  • 从设计上支持服务拆分

2-7 总结

  • nodejs 下载安装,有两种方式 nvm 直接下
  • nodejs和前端 js的区别,commonjs 和 debugger
  • server开发和前端开发的区别,重点在于切换思路