Node实践

135 阅读2分钟
  • 基于ChromeV8JS引擎的运行环境。

  • 文件读写。

  • 数据库。

  • 全栈式语言。

  • 特性:

  • 事件驱动。

  • 非阻塞IO模型(异步)(处理高并发请求)。

  • 轻量和高效。

  • 跑大量计算性能较差。

  • 生态目前不是非常稳健。

  • 一般用作前端和后端的中间层,进行前端的业务接口,后端的数据请求接口。

  • 主要用途:

  • 前端项目构建工具:webpack、vue-cli——大型企业。

  • 微型后端——小型网站应用。

  • 导入、导出模块时使用CommonJs的规范。

  • require、exports、module。

  • 导入没有导出的模块会返回一个空对象。

  • 导入和导出返回的是一个对象。

  •   module.exportsexports是同一个对象。但是系统默认先找前者。前者可以直接导出一个对象,后者一般导出单个属性。
    
  • 导出只会运行一次,其余的都会赋值第一次导入的对象。

  • node里面默认是异步操作。调用同步函数要明确调用。异步操作尽量封装成await模式。(不封装成await形式,不能保证回调函数执行的顺序。)

  • buffer可以开辟内存空间连续且固定的内存。使用buffer存储数据进行一些操作会比数组快。适用于一些计算量大的场合。

  • 可以进行文件操作:

  • 读文件。

  • 写文件。

  • 创建文件夹。

  • 删除文件夹。

  • 爬虫流程:

  • 获取需要爬取的目标URL。

  • 提取目标内容(可用库、可用正则匹配)。

  • 进入下一页URL(观察地址栏URL变化)。

  • 提取所有。

  • 适当定时请求,减小服务器压力(或者使用代理服务器去请求)。

  • 如果是前端渲染,那么就只能去分析链接(Ajax请求),找到爬取方法。

  • 如果是后端渲染,那么请求URL就在源码里面。