大家好久不见,今天我来介绍一下Node.js,对Node.js的安装和对其模块的简要讲解。
Node.js
目录
什么是Node.js
Node.js不是语言,也不是类似springboot之类的框架。他是一个单线程的,运行JS的一个平台。它能解析和执行JS代码。
我们平常在浏览器中运行的JS主要分为三类:ECMAScript,BOM和DOM。
但是在Node当中的JS是不包含BOM和DOM的,它的主要功能是:为JS提供一些服务级别的API(文件的读写,网络服务的构建,操作系统,操作路径...),接下来我们就来对其进行安装
安装Node.js
我们打开官网路径:Node.js — 在任何地方运行 JavaScript (nodejs.org)
点击下载,之后一路next即可。
安装完整之后,我们在主页菜单打开cmd命令行,之后输入 node -v 检查是否安装成功:
回车,若安装成功,则显示版本号:
Node运行方式
Node.js运行的方式有很多种:
1.首要便是通过cmd命令行运行,但是必须要通过cd命令一路到指定目录下,否则报错。
2.其次的方法是打开当前代码的文件,在不选择文件的情况下按shift加鼠标右键,点击在终端打开PowerShell即可,如图:
3.第三种则是在Vscode编辑器环境中运行,选择文件并点击右键,选择在集成终端打开即可。(小编是汉化版本,没汉化的宝子可以在扩展中搜Chinese,下载重新打开编辑器即可)
Node.js基础命令
接下来对Node.js的基础命令简要介绍:
- node-v: 查看版本号
- node[文件名]: 用来运行JS文件(文件名按TAB自动补齐)
- node:进入node REPL(交互解析器)直接运行代码
- cd:切换路径
- cls:清屏
- ctrl+c:结束进程
查缺补漏
大家编写代码的时候,难免都会有遗忘或者出现了自己不会解决的情况,这个时候,就需要我们万能的词典啦。
菜鸟教程:Node.js 教程 | 菜鸟教程 (runoob.com) 推给大家,遇到问题,查一查,记忆尤新。
模块化
模块的概念:Node中以模块划分单位。
介绍了模块的概念,接下来便是模块的导入和导出需要注意的问题:
- 文件命名不要出现空格,点,中文等字符(因为在服务端上运行),建议全小写字符
- require(导入) 和 exports(导出)/module.exports(导出)
原生模块
既然说到模块的导入和导出,那么接下来就对模块中的原生模块做个大概的介绍:
- path:路径
- url:网络路径
- querystring:查询字符串
- fs:文件
- readline:逐行读取
- http:开启http服务
fs模块
file-system(文件系统) 简写为fs,在Node.js中操作文件必须引入fs模块。
那么接下来我们就通过fs和require来对文件读写操作:
我们打开编辑器,创建一个名为 02-readFile.js 的JS文件,之后我们使用使用require 方法加载 fs 核心模块:
let fs = require('fs')
首先是读取文件,其参数有两个:
文件路径
回调函数(error,data)
若读取成功:data -> 数据,error-> null
若读取失败:data -> undefined,error-> 错误对象
那么我们接下来在当前文件夹创建一个txt文件,内容随意,创建完成我们直接通过fs调用,通过判断返回值并给出提示:
fs.readFile(" 路径 ",function(error , data) { //假设没有读取成功 if(error) { console.log('文件读取失败'); return } console.log(data); })
通过node[文件名]在终端确认是否成功。
接着便是写,其参数有三个:
文件路径(已创建)
写的内容
回调函数(error)
若读取成功:error-> null。若读取失败:error-> 错误对象
我们编写代码,通过fs调用,通过判断返回值并给出提示:
fs.writeFile(" 路径 ","abc",function (error) { if(error) { console.log('写入失败'); return } console.log('文件写入成功'); })
通过node[文件名]在终端确认是否成功。
require指令
通过上述的编写,我们对require指令进行总结:读入并执行一个JS文件,然后返回该模块的exports对象,如果没有发现该模块,会返回一个空对象。 当然,还需要注意两点:
- 引入时使用路径:根据路径寻找模块文件
- 引入时没有使用'./''/',表示加载的是一个默认提供的核心模块
module对象
module是Node内部提供的一个构造函数,所有的模块都是module的实例。
每个模板内部,都有一个module对象,代表当前模块,具有以下属性:
- module.id:模块的标识符,通常是带有绝对路径的模块文件名
- module.filename:模块的文件名,带有绝对路径
- module.loaded:返回一个布尔值,表示模块是否已加载完成
- module.parent:返回一个对象,表示调用该模块的模块
- module.children:返回一个数组,表示该模块要用到的其他模块
- module.export:表示模块对外输出的值(用得最多)
小结
今天简要的介绍了一下Node.js,下次小编会详细的讲解Node.js中的核心模块,我们下次见!