如何在 Node.js 环境中执行 JavaScript 代码
目录
前言
本文以作者自己看的懂的方式记录了node.js的知识点,并不全面喔,随着学习的推进,会加入更多内容的。
一、在Node环境中执行代码
1. 如何在 Node.js 环境中执行 JavaScript 代码
🔸 打开终端 (我是在vscode里面打开的集成终端)
🔸 输入: ⌜node 要执行的js文件的路径⌟, 就可以执行对应文件的代码
2. 终端中的❗️快捷键❗️
🔸 使用 ⬆ 键,可以快速定位到上一次执行的命令 (当我修改了文件中的代码要再次运行这个文件,就不用重新手动输入文件路径了)
🔸 使用 tab 键,能够快速补全文件路径
🔸 (Mac)使用 control + u 键,能够快速清空当前已输入的命令;(Window)使用 esc 键
🔸 (Mac)输入: ⌜clear⌟ 命令,可以清空终端;(Window)输入: ⌜cls⌟
二、模块
1. ❗️fs❗️文件系统模块 #安装node.js期间就会自动将fs等模块一起安装
# 如果要在 JavaScript 代码中使用 fs 模块来操作文件,则需要使用如下的方式先导入它: require('fs')
🔹 【 fs.readFile() 】方法,用来[读取]指定文件中的内容
语法格式: fs.readFile(path[, options], callback)
# 参数1: 必选参数。表示文件路径的字符串
# 参数2: 可选参数。表示以什么编码格式来读取文件 (默认 utf8)
# 参数3: 必选参数。回调函数,文件读取完成后,通过它拿到读取结果
🔹 【 fs.writeFile() 】方法,用来向指定文件中[写入]内容
语法格式: fs.writeFile(file, data[, options], callback)
# 参数1: 必选参数。指定一个文件路径的字符串
# 参数2: 必选参数。表示要写入文件的内容
# 参数3: 可选参数。表示以什么编码格式来写入文件 (默认 utf8)
# 参数4: 必选参数。文件写入完成后的回调函数
🔷 __dirname: 表示当前的文件所处的目录,能解决路径拼接错误的问题。 优点: 它所代表的值不会随着执行 node 命令时所处目录的变化而跟着变化;也不需要写很长的字符串
2. ❗️path❗️路径模块
# 如果要在 JavaScript 代码中使用 path 模块来处理路径,则需要使用如下的方式先导入它: require('path')
🔹 【 path.join() 】方法,用来将多个路径片段[拼接]成一个完整的路径字符串 # 就不要再用 “+” 进行拼接了
语法格式: path.join([...paths])
# 参数(...paths): <string>路径片段的序列,可传入任意多个路径片段
# 返回值: <string>
🔹 【 path.basename() 】方法,用来从路径字符串中,将文件名[解析]出来
语法格式: path.basename(path[, ext])
# 参数(path): 必选参数。<string>表示一个路径的字符串
# 参数(ext): 可选参数。<string>表示文件扩展名(后缀名)
# 返回值: <string> 表示路径中的最后一部分(文件名的部分)
🔹 【 path.extname() 】方法,可以获取路径中的文件扩展名部分
语法格式: path.extname(path)
# 参数(path): 必选参数。<string>表示一个路径的字符串
3. ❗️http❗️模块 # 用来创建 web 服务器的模块
# 导入方式: require('http')
🔹 【 http.createServer() 】方法,可快速[创建]一个 web 服务器实例
🔹 【 实例.listen(port,callback) 】方法,即可[启动]当前的 web 服务器实例
# 在终端使用 control + c 键,可以停止服务器
🔹 【 实例.on('request', function(){}) 】方法,可以为服务器实例[绑定]request事件处理函数
⭐︎ !req!请求对象,包含了与[客户端相关]的数据和属性,如:
(1) req.url: 是客户端请求的 URL 地址
(2) req.method: 是客户端的 method 请求类型
⭐︎ !res!响应对象,包含了与[服务器相关]的数据和属性,如:
(1) 【res.end()】: 向客户端发送指定的内容,并结束这次请求的处理过程
(2) 【res.setHeader(响应头,响应头的值)】: 设置中文内容的编码格式
三、模块化
1. 什么是模块化
编程领域中的模块化,就是遵守固定的规则,把一个大文件[拆]成独立并互相依赖的多个小模块
2. Node.js中的模块化
🤎 「module」对象: 在每个 js 自定义模块中都有一个 module 对象,它里面存储了和当前模块有关的信息
🤎 「moudle.exports」对象: exports默认等于一个空对象,在自定义模块中,可以使用module.exports 对象,将模块内的成员共享出去,供外界使用
🤎 「exports」对象: 是 moudle.exports 的简化,默认情况下,exports 和 module.exports 指向同一个对象。最终共享的结果,还是以 [module.exports] 指向的对象为准
四、了解npm包
1. 在哪下载❗️npm❗️包
从 https://www.npmjs.com/ 网站上搜索需要的包
从 https://registry.npmjs.org 服务器上下载需要的包
2. 如何下载包
通过一个包管理工具 [Node Package Manager],从服务器上下载包到本地 # 这个包管理工具随着Node.js被一起安装到了电脑上,不需要额外下载
⌜npm -v⌟ 命令,可以查看电脑上所安装的npm包管理工具的版本号
3. 在项目中安装包的命令
⌜npm install 包的完整名称⌟ 命令,或者 ⌜npm i 包的完整名称⌟ 命令,可以在项目中安装指
定名称的包 # 若同时安装多个包,包名之间用空格分隔
4. 初次安装包之后出现在目录的文件 # 这些文件都不要去修改!
(1) node.modules文件夹: 用来[存放]所有已安装到项目中的包。require() 导入第三方包
时,就是从这个目录中查找并加载包。
(2) package-lock.json配置文件: 用来记录 node_modules 目录下的每一个包的下载信息,
例如包的名字、版本号、下载地址等。
5. 如何安装!指定版本!的包
默认情况下,安装的都是最新版本的包。⌜npm install 包的完整名称@版本号⌟ 或 ⌜npm i 包的
完整名称@版本号⌟ 命令,可以下载指定版本的包
6. 包的语义化版本规范
# 包的版本号是以 “点分十进制” 形式进行定义的,总共有三位数字,例如: 2.24.0
✻ 第一位数字: 大版本
✻ 第二位数字: 功能版本
✻ 第三位数字: Bug修复版本
# 版本号提升的规则: 只要前面的版本号增长了,则后面的版本号归零。
7. 包管理配置文件
package.json: 包管理配置文件, (必须)存放在项目根目录中。用来记录与项目有关的一些配置
信息。如:
• 项目的名称、版本号、描述...
• 项目中都用到了哪些包
• 哪些包只在!开发期间!会用到
• 哪些包在!开发!和!部署!时都需要用到
# 第三方包的体积占整个项目体积的80%~90%, 不方便团队成员之间共享项目源代码。⚠️因此今后在项目开发中,一定要把 nodle_modules 文件夹,添加到 .gitignore 忽路文件中。
8. 快速创建package.json
⌜npm init -y⌟ 命令,可以在执行命令时所处的目录中,快速创建 package.json 这个包管理配置文件
# (1) 上述命令只能在[英文的目录下]成功运行!所以,项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格。
# (2) 运行 npm install 命令安装包的时候,npm 包管理工具会[自动]把包的名称和版本号,记录到 packagejson 中。
9. !dependencies!节点
package json 文件中,有一个 dependencies 节点,专门用来记录用户使用 npm install
命令安装了哪些包 # 它是一个对象,里面的属性名是安装的包名,属性值是包的对应版本号
10. 如何一次性安装所有依赖包
⌜npm install⌟ 或 ⌜npm i⌟ 命令,可以一次性安装项目所有的依赖包 # npm 包管理工具会先读取 package.json 中的 dependencies 节点,读取到记录的所有依赖包名称和版本号之后,npm 包管理工具会把这些包一次性下载到项目中
11. 如何卸载包
⌜npm uninstall 包的名称⌟ 命令,可以卸载指定的包 # npm uninstall 命令执行成功后,会把卸载的包,自动从 packagejson 的 dependencies 中移除掉。
12. !devDependencies!节点
如果某些包[只在项目开发阶段]会用到,在项目上线之后不会用到,则建议把这些包记录到 devDependencies 节点中。
# 与之对应的,如果某些包在[开发和项目上线]之后都需要用到,则建议把这些包记录到 dependencies 节点中
⌜npm install 包名 --save-dev⌟ 或 ⌜npm i 包名 -D⌟ 命令,可以安装指定的包,并把包
记录到 devDependencies 节点中
# 查看官方提供的使用说明,就知道要把包安装到哪个节点中了
13. 切换 npm 的下包镜像源
# 解决下包速度慢的问题,可以把下载的服务器地址切换到国内的淘宝服务器,它是官方服务器的镜像
⌜npm config get registry⌟ 命令,可以查看当前的下包镜像源 #(下包的服务器地址)
⌜npm config set registry=服务器地址⌟ 命令,可以切换下包的镜像源
# 官方地址: https://registry.npmjs.org/ 国内淘宝镜像源(地址): https://registry.npmmirror.com/
总结
先这么多内容,还有些没有整理,这些知识点依据内容是黑马程序员的视频课程。