爬虫工程师也应该会的 NodeJS 知识(一)

爬虫工程师也应该会的 NodeJS 知识(一)

原创 煌金的咸鱼 咸鱼学Python 6月30日 收录于话题 #JS逆向 48   #NodeJS 6

NodeJS 是什么?

Node.js 是基于 “ Chrome V8 引擎 ” 的 JavaScript 运行环境

V8 引擎是一款专门解释和执行 JS 代码的虚拟机,任何程序只要集成了 V8 引擎都可以执行 JS

NodeJS 不是一门编程语言,NodeJS 是一个运行环境 ,由于这个运行环境集成了 V8 引擎,所以在这个运行环境下可以运行我们编写的JS代码。

这个运行环境最大的特点就是提供了操作 " 操作系统底层的API " ,通过这些底层 API 我们可以编写出网页中无法实现的功能 ( 诸如: 打包工具, 网站服务器等 )

Node 环境搭建

搭建方式一

  1. 官网下载.msi安装包: https://nodejs.org/zh-cn/

  2. 全程下一步

  3. 在命令行工具中输入 node -v

搭建方式二

  1. 官网下载.zip安装包: https://nodejs.org/zh-cn/ 

  2. 解压下载好的安装包

  3.  在"高级系统设置"中手动配置环境变量 4.在命令行工具中输入 node -v

搭建方式三

  1. 下载NVM: https://github.com/coreybutler/nvm-windows 

  2. 在 D 盘创建 dev 目录 

  3. 在 Dev 目录中创建两个子目录 nvm 和 nodejs , 并且把 nvm 包解压进去 nvm 目录中 

  4. 在 install.cmd 文件上面右键选择【以管理员身份运行】 - 在终端中直接按下回车 - 将弹出的文件另存为到 NVM 目录 

  5. 打开 settings.txt 文件点击修改

root: D:\Developer\Dev\NVM
path: D:\Developer\Dev\Node

    6. 配置环境变量

NVM_HOME: D:\xxx\Dev\NVM
NVM_SYMLINK: D:\xxx\Dev\Node
在Path中添加 %NVM_HOME% %NVM_SYMLINK%

    7. 在命令行工具中输入 nvm version

NVM常用命令

  • nvm list 查看当前安装的 Node.js 所有版本
  • nvm install 版本号 安装指定版本的 Node.js
  • nvm uninstall 版本号 卸载指定版本的 Node.js
  • nvm use 版本号 选择指定版本的 Node.js

Node 环境和浏览器环境的区别

NodeJS环境和浏览器环境一样都是一个JS的运行环境, 都可以执行JS代码. 但是由于宿主不同所以特点也有所不同

1. 内置对象不同

  • 浏览器环境中提供了 window 全局对象
  • NodeJS 环境中的全局对象不叫 window , 叫 global

2. this 默认指向不同

  • 浏览器环境中全局this默认指向 window
  • NodeJS 环境中全局this默认指向空对象 {}

3. API 不同

  • 浏览器环境中提供了操作节点的 DOM 相关 API 和操作浏览器的 BOM 相关 API
  • NodeJS 环境中没有 HTML 节点也没有浏览器, 所以 NodeJS 环境中没有 DOM / BOM

Node 全局对象的属性与模块导出\入数据

Node 全局对象的属性

和浏览器一样 Node 环境中的全局对象也提供了很多方法属性供我们使用 中文文档地址: http://nodejs.cn/api/

__dirname: 当前文件所在文件夹的绝对路径
__filename: 当前文件的绝对路径
setInterval / clearInterval : 和浏览器中window对象上的定时器一样
setTimeout /  clearTimeout : 和浏览器中window对象上的定时器一样
console :  和浏览器中window对象上的打印函数一样

Node 中的模块导出数据

在 NodeJS 中想要导出模块中的变量函数有三种方式

这个在我们 JS 逆向的时候经常使用到,只要将加密的 JS 补全并将返回的变量导出出来就可以在其他的 JS 中 require 模块后直接使用了。

通过exports.xxx = xxx导出
通过module.exports.xxx = xxx导出
通过global.xxx = xxx导出

注意:不管使用那种方法导出,在使用的时候需要 require 模块后才能使用,通过global.xxx 方式导出不符合 CommonJS 规范, 不推荐使用

Node 中的模块导入的注意事项

1、require 导入模块时可以不添加导入模块的类型

如果没有指定导入模块的类型, 那么会依次查找.js .json .node文件无论是三种类型中的哪一种, 导入之后都会转换成 JS 对象返回给我们

2、导入自定义模块时必须指定路径

require 可以导入自定义模块(文件模块)系统模块(核心模块)第三方模块

  • 导入自定义模块模块时前面必须加上路径(这就是为什么很多新手导入自己写的模块时出错的原因)
  • 导入系统模块第三方模块是不用添加路径

3、导入系统模块第三方模块是不用添加路径的原因

  • 如果是系统模块直接到环境变量配置的路径中查找
  • 如果是第三方模块会按照 module.paths 数组中的路径依次查找

 

Love & Share 爬虫工程师也应该会的 NodeJS 知识(一)

[ 完 ]

爬虫工程师也应该会的 NodeJS 知识(一)

    爬虫工程师也应该会的 NodeJS 知识(一)

微信扫一扫
关注该公众号

上一篇:Mac 中安装 nvm: 切换Node 不同版本


下一篇:NVM是什么?