上节课我们成功用开启了一个 http 服务,写了个 helloworld,今天我们讲解下 nodejs 和 javascript 区别。

ECMAScript

  • 定义了语法,写 javascript 和 nodejs 必须遵守它的语法规范
  • 变量定义、循环、判断、函数
  • 原型和原型链、作用域和闭包、异步
  • 不能操作 DOM,不能监听 click 事件,不能发送 ajax 请求
  • 不能处理 http 请求,不能操作文件
  • 如果只有 ECMAScript,几乎做不了任何实际的项目

Javascript

  • Javascript 由 ECMAScript 语法规范 +Web Api 组成,两者结合即可完成浏览器端的操作
  • Javascript 可以执行 DOM 操作,BOM 操作,事件绑定,Ajax 等

Nodejs

  • ECMAScript 语法规范 +Nodejs Api 组成,两者结合即可完成服务器端的操作
  • Nodejs 可以处理 http,处理文件等,具体参考 http://nodejs.cn/api/

总结

  • ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现。

按类和对象比喻,ECMAScrpt 是类,Javascript 是对象

前端和服务端的区别

客户端可能有多个不同的版本,统一从服务端获取数据。

前端和服务端的区别

稳定性

  • 当个客户端可以意外挂掉,服务端不能,因为服务端是给无数个客户端提供数据,一旦宕机,影响非常大。
  • nodejs 一般使用 PM2 管理进程,断开的进程自动重启

内存和 CPU

  • 客户端独占一个浏览器,无需考虑内存和 CPU 占用情况
  • 服务端需要承载很多客户端请求,处理由客户端的大批量数据,内存和 CPU 比较稀缺
  • 课程会使用 stream 写入日志,使用 redis 存储 session

日志记录

  • 客户端会参与日志写入,但只是发起方,不考虑后续影响和结果
  • 服务端详细地记录日志,存储日志,分析日志
  • 课程会解决多种日志记录方式,以及如何分析日志

安全

  • 服务端可能会遭受各种恶意攻击和误操作,比如越权操作,SQL 注入等,前端就很少遇到
  • 课程会讲解登录验证,预防 xss 攻击和 SQL 注入。

集群和服务拆分

  • 产品发展速度快,流量可能会迅速增加。我们要通过扩展服务器集群和服务拆分承载更大流量。
  • 课程虽然是单台机器部署,但是支持服务拆分,后续也会增加这部分内容。

相关文档

总结

你了解了 nodejs 和 javascript 区别,有问题欢迎到群里和志同道合的小伙伴一起交流。

下节课我们讲解 nodejs 处理 http 请求,继续加油吧,Let’s go!