nodejs介绍

ES,js和nodejs区别

  • ES是语法规范,没有api只靠它自己什么也做不了(ES文档看阮一峰的书)
  • js是ES+web API,可以完成浏览器端操作
  • nodejs是ES+node API,可以完成server端操作
    nodejs的API文档
  • 在nodejs中尽量使用ES6的语法

commonjs模块化规范

使用模块化的好处:可以对代码进行拆分,将功能相似的代码放在一起,在不同的地方都可以进行直接调用。(类似react.js中的组件)

步骤

  1. 在vscode中打开工作文件夹,在vscode终端输入npm init -y用于初始化npm环境
  2. 再输入npm i lodash --save用于安装lodash库(其中,lodash是node中常用的数据库)
  3. 在根目录中会出现package.json文件,文件内有:(其中,lodash就是依赖的名字)
    1
    2
    3
    "dependencies": {
    "lodash": "^4.17.15"
    }
  4. 在js文件中引用const _=require('lodash')(其中,lodash为package.json里面的依赖名字)
  5. 一般使用_代替lodash,所以在需要这个库的js文件顶部调用const _ = require('lodash')即可
  6. 想要使用该工具库的方法时只需调用_.方法名即可,比如:
    1
    2
    const arr = _.concat([1,2],3)
    console.log('arr1',arr)//arr1[1,2,3]

注意:可以直接使用require调用node自带的库,不需要另外安装或编写代码、输出,比如const http = require('http')


debugge

推荐使用vscode这个IDE作为debug的工具。

  1. 新建一个目录,然后在该目录下在vscode终端输入npm init -y用于初始化npm环境
  2. 在该目录下会出现一个package.json文件,该文件内有"main":"index.js",也就说明主页面是index.js,那么你需要保证你的目录下有这个文件,或者可以修改页面名称。
  3. 在vscode中目录左侧有个虫子图标就是用来debug的,注意点击图标以后出现在目录上方位置的绿色箭头代表“开始debug”
  4. 注意打断点,可以通过点击来删除断点,删除后可以点击红色方框停止debug。

server端和前端的区别

服务稳定性

server端可能会遭受各种恶意攻击和误操作,单个客户端(前端)可以意外挂掉,但是服务端不能。

CPU和内存的优化、扩展

前端(客户端)独占一个浏览器,内存和CPU都不是问题,但server端要承载很多请求,CPU和内存都是稀缺资源。

优化:使用stream写日志
扩展:使用redis存session
(后面会详细讲解)

日志记录

前端也会参与写日志,但只是日志的发起方,不关心后续。而server端要记录日志、存储日志、分析日志,前端不关心

安全

server端要随时准备接收各种恶意攻击,前端则少很多。
如:越权操作(比如用户想删除别的用户的博客),数据库攻击等。
后面会讲解登录验证,预防XSS攻击和sql注入(XSS攻击前端也有一部分责任)

集群和服务拆分

产品发展速度快,流量可能会迅速增加。server端需要考虑如何通过扩展机器和服务拆分来承载大流量。


module.exports 与 exports

强烈建议使用module.exports = xxx的方式来输出模块变量,它可以应对任何情况。
具体原因可以参考廖雪峰的博客

区分exportexport defaultmodule.exportsexports

module.exportsexports

  • node.js遵循Common.Js规范。
  • 推荐使用modules.exports。使用exports可能会有意料之外的错误。

exportexport default

  • React遵循es6规范。
  • 一个js文件可以有很多个export,但只能拥有一个export default`。
  • 在React.js中,输出可以使用export或者export default,**建议使用export**。