IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> [JS] node.js 入门 -> 正文阅读

[JavaScript知识库][JS] node.js 入门

API 文档:https://nodejs.dev/en/api/v18/documentation/

是什么?

node.js 是一个服务端的 js 运行环境,客户端的 js 运行环境基本是服务器,对于 node.js 来说在服务端没有操作 DOM 等元素的 API,但是 node.js 有客户端没有的如文件读写的 API。

为什么

node.js 的最大优势是让前端开发者能够很轻松的开发服务端程序,因为 node.js 实际是 js 的运行环境,所以编写的也是 js 代码,对于前端开发者来说无需担心需要切换语言的问题。
node.js 的另一个优势是你可以明确知道自己的 js 运行在什么环境中,不像浏览器环境每个用户的浏览器版本可能各有差异。

怎么做

实际上如果你有 Python 编程经验,会发现 node.js 和 Python 很像:

  • 都有包管理工具(node 的默认为 npm, Python 的默认为 pip)
  • 除包管理工具外自带环境(node、python)

所以我们会先开始讲解 npm 的使用。node 的其他包管理工具如 yarn、pnpm 则是对 npm 做了不同的优化,实际使用方法是大同小异的。

npm

package.json 和 package-lock.json

这两个 json 文件基本是每个前端项目必被的文件,他们的用处是记录项目的依赖、保存作者信息、运行脚本等,功能非常丰富。
一般我们使用 npm install 安装依赖,会把依赖安装到 ./node_modules 下,而 package.json 的一个功能就是保持安装的依赖的名称。对于 package-lock.json,他保存的是实际的依赖的版本和该依赖的依赖项。通过 npm install 的依赖的版本一般格式为x.y.z,其中代表的含义是:

  • x 不向后兼容的大版本更新
  • y 添加新功能,但向后兼容的小版本更新
  • z 对版本的补丁,一般是修复 bug 之类的,不会添加新功能

而实际安装的版本可能会比较模糊,这是因为在版本号之前,可以添加如下修饰:

  • ^ 表示 y 兼容
  • ~ 表示 z 兼容

例如 ^1.2.1可以安装1.5.2,但是不能安装 2.0.0

package.json 的作用就是保持实际安装的版本。

包的安装、删除、更新

npm install

  • npm install packagename@version
  • npm install 安装 package.json 中的所有依赖
  • npm install packagename@version -g 全局安装依赖
  • npm install -save 指明在当前项目目录安装依赖(默认,但是 5.0 版本前需指定)
  • npm install -D 或 npm install -dev 安装开发依赖,这些依赖不会被生产环境的代码打包

npm install 可以简写为 npm i

npm update

更新依赖

npm uninstall

删除依赖

node

这里主要介绍 node 提供的 API

文件操作

https://nodejs.dev/en/learn/reading-files-with-nodejs/
可用于替代原生 fs 的 fs-extra

读写文件

读文件 readFile

const fs = require('fs/promises') // require('fs') 回调版 API

async function readFile(name) {
  const file = await fs.open(name, 'r')
  console.log(await fs.readFile({encoding: 'utf-8'}))
}

写文件 writeFile

const fs = require('fs/promises') // require('fs') 回调版 API

async function readFile(name) {
  const file = await fs.open(name, 'r')
  console.log(await fs.writeFile('content'))
}

其中 fs.open 方法的模式有:

  • r 读
  • r+ 读写文件,文件不存在创建文件
  • w+ 读写,从头开始写,文件不存在则创建
  • a 在文件末尾添加数据,文件不存在则创建
  • a+ 读写文件,在文件末尾添加数据

https://nodejs.dev/en/learn/reading-files-with-nodejs/

文件路径操作

const path = require('path')
path.join('a', 'b') // a\b
path.resolve('a') // 用当前文件的绝对路径拼接参数

const note = '/home/user/note.txt'

path.basename(note) // note.txt
path.extname(note) // .txt
path.dirname(note) // /home/user

// 第二个参数传入文件的扩展名,则会获取文件的文件名而不带扩展名
path.basename(notes, path.extname(notes)); // note

常用方法:

  • join
  • resolve
  • dirname
  • basename
  • extname
  • parse 提取文件的信息,返回一个对象,包括 root、name、ext 等文件信息

文件状态

const fs = require('fs/promises')
async function test() {
	const fileStat = await fs.stat('./note.txt')
	fileStat.isFile() // true
	fileStat.isDirectory() // false
	fileStat.size // 1024000 1MB
	fileStat.isSymbolicLink() // false
}

回调操作文件方法和同步操作文件方法

回调操作方法

  • 第一个参数为 err
  • 第二个参数为 fs

具体参数情况见官方文档

同步操作方法
在方法名后面加个 Sync

fs.readdirSync().map(file => path.resolve(file))

解析 cmd 参数

process.argv 保存了 cmd 参数,该数组的前两个值分别是

  1. node 二进制文件的路径
  2. 被执行的文件的路径

process 对象无需通过 require 引入

输入 node main.js name=tom age=10 199main.js 后面的字符串会被以空格分隔填入数组,所以参数数组的值为 ['/bin/node', '/root/main.js', 'name=tom', 'age=10', 199]。更好的方法是使用 minimist 解析参数。

样式化输出

chalk 输出带样式的文本。

进度条
Progress

读取用户输入

https://nodejs.dev/en/learn/accept-input-from-the-command-line-in-nodejs/
该页面提供了其他更加方便的包

const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.question(`What's your name?`, name => {
  console.log(`Hi ${name}!`);
  readline.close();
});
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:09:09  更:2022-09-25 23:10:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:57:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码