likes
comments
collection
share

一些些node基础知识点

作者站长头像
站长
· 阅读数 16

Node.js

Node.js是一个用 c/c++打造的 js 引擎,它能够读懂 js 并且让 js 拥有跟 js 系统打交道的能力

创建项目

npm init

在集成终端中输入npm init

进行设置

一些些node基础知识点

一些些node基础知识点

一些些node基础知识点

package.json相当于是这个项目的说明书

我们常用的npm init -y是默认全部选择全部为yes,直接生成package.json

内容生成: 一些些node基础知识点

main

指的是这行代码:

一些些node基础知识点

这行代码的作用是读取express/index.js,默认会搜索require('express')中express包里的内容。

script脚本

scripts 字段允许你定义可执行的脚本命令,这些命令可以通过 npm run <script-name> 来执行。

我们增加script里的内容:

 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "server":"node index.js",
    "hello":"echo hello world",
    "dev":"npm run hello && node index.js"
  }

下面是每个脚本的作用:

  1. "test": 这个脚本目前设置为输出一条错误信息 "Error: no test specified",然后退出并返回状态码 1。通常,test 脚本用于运行项目的测试。
  2. "server": 用于启动 Node.js 应用,通过执行 node index.js 命令。这里假设应用入口文件是 index.js
  3. "hello": 输出 "hello world" 到控制台。
  4. "dev": 这是一个组合脚本,首先执行 "hello" 脚本,然后执行 "server" 脚本。所以运行 npm run dev 时,它会先打印 "hello world",然后启动服务器。 像这样:

一些些node基础知识点

Express 框架

Express 是一个基于 Node.js 平台的极简和灵活的 web 应用开发框架,提供了一系列强大的功能,帮助创建各种 Web 和移动设备应用。

在集成终端中输入npm i express安装express

安装完成后可以在package.json里看到:

一些些node基础知识点

Express使用

const express = require('express')

const app = express()
const port = 3000


app.get('/', (req, res) => {
  res.send('Welcome to Node')
})

app.listen(port, () => {
  console.log('项目已启动在3000端口!!!');
})

然后我们运行index.js

一些些node基础知识点

在浏览器中搜索localhost:3000,显示:

一些些node基础知识点

nodemon

当我们修改想要得到的内容的时候,项目是不会自动重新运行的,这个时候我们就可以采用nodemon进行监听。

nodemon 是一个开发工具,用于监视任何变化在 Node.js 应用程序中的文件,并自动重启服务器。它允许开发者在代码更改后立即看到结果,而无需手动重启服务器。

使用命令行npx nodemon index.js 运行nodemon,这样保存的话会自动重启运行一遍代码

一些些node基础知识点

模块化

模块化是软件开发中的一种重要概念,它允许将代码分解成独立的模块,每个模块封装了特定的功能。在 JavaScript 中,有多种模块化规范:

  1. CommonJS:

    • Node.js 使用的模块系统。
    • 模块通过 module.exports 对象暴露接口。
    • 模块加载使用 require 函数。
  2. AMD (Asynchronous Module Definition) :

    • 异步模块定义,主要用于浏览器环境。
    • 通过 define 函数定义模块,使用 require 来异步加载模块。
    • 目的是解决浏览器中脚本依赖的问题。
  3. CMD (Common Module Definition) :

    • 与 AMD 类似,也是用于浏览器环境的模块定义方式。
    • 强调运行时的依赖加载,使用 define 函数定义模块,require 函数加载依赖。
  4. UMD (Universal Module Definition) :

    • 通用模块定义,旨在提供一种方式,使模块可以在各种环境中工作,包括浏览器和 Node.js。
    • 可以检测环境并使用相应的模块系统(AMD、CommonJS 或作为全局变量)。
  5. ESM (ECMAScript Modules) :

    • ECMAScript 模块,是 JavaScript 语言规范的一部分。
    • 使用 import 和 export 关键字来导入和导出模块。
    • 原生支持异步加载和动态导入。

每种模块化规范都有其特定的使用场景和特点:

  • CommonJS 主要用于 Node.js 环境,是同步加载模块的。
  • AMD 和 CMD 主要用于浏览器环境,支持异步加载模块,有助于解决依赖管理和按需加载的问题。
  • UMD 提供了一种兼容多种环境的解决方案,使得一个模块可以在 Node.js、AMD 环境或作为浏览器全局变量中使用。
  • ESM 是现代 JavaScript 的模块化方案,提供了语言层面的支持,使得模块化更加简洁和强大

global

在 Node.js 中global 对象是 Node.js 的全局命名空间。

它包含了 Node.js 环境中的所有全局变量和函数,比如 processBufferrequireconsole 等。

在 Node.js 中,global 对象可以通过 global 直接访问,例如:

console.log(global); // 打印 Node.js 的全局对象

一些些node基础知识点

__dirname

在 Node.js 中,__dirname 是一个全局变量,返回当前执行脚本所在目录的绝对路径。

一些些node基础知识点

__filename

__filename 是一个全局变量,它返回当前执行脚本的文件名。这个变量包含了文件的完整路径,包括文件名和扩展名。

一些些node基础知识点

process

process 是一个全局对象,它代表当前 Node.js 进程。这个对象包含了有关 Node.js 进程的信息,并且提供了一些控制进程的方法

process.argv:一个数组,包含了启动 Node.js 进程时的命令行参数。第一个元素是 node,第二个元素是正在执行的脚本的路径,其余元素是传递给脚本的额外参数。

一些些node基础知识点

Buffer

Buffer 是一个全局对象,用于处理二进制数据。Buffer 类似于一个整数数组,但它用于表示字节(8 位)数据。Buffer 对象在 Node.js 中用于处理流和协议,以及在文件系统和网络操作中传输数据。

Buffer.alloc()

分配指定大小的内存,并且可以指定初始值来填充这个 Buffer。

// 创建一个大小为 10 的 Buffer,用 0x00 字节填充
const buf1 = Buffer.alloc(10);
console.log(buf1);

// 创建一个大小为 10 的 Buffer,用 0xFF 字节填充
const buf2 = Buffer.alloc(10, 0xFF);
console.log(buf2);

// 创建一个大小为 10 的 Buffer,用'a'的 UTF-8 编码形式填充
console.log( Buffer.alloc(10, 'a', 'utf8'));

一些些node基础知识点

Buffer在JavaScript 中是没有的,因为Node.js 是 JavaScript 的服务器端运行环境,提供了文件系统、网络和操作系统等系统级功能,而浏览器中的 JavaScript 受限于安全和用途,不包括这些底层访问能力。

Buffer.from()

Buffer.from 是 Node.js 中用于创建 Buffer 对象的方法,允许从多种数据类型转换为 Buffer

把字符串'hello world'转为buffer流:

console.log(Buffer.from('hello world'));

一些些node基础知识点

把数组转为buffer流:

console.log(Buffer.from([0X68]));

一些些node基础知识点

node 中的模块

fs文件系统模块

fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下的方式先导入它:

 const fs = require('fs')

异步和同步方法fs 模块提供了异步和同步两种方法来执行文件操作。异步方法通常以回调函数作为参数,而同步方法通常以操作名称加上 "Sync" 后缀命名。

fs.readFile()读取文件

语法格式

使用fs.readFile()方法,可以读取指定文件中的内容,语法格式如下:

 [`fs.read(fd[, options], callback)`]

参数解读

  • 参数1:必选参数,字符串,表示文件的路径。

  • 参数2:可选参数,表示以什么编码格式来读取文件。

  • 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。 创建一个txt文件,往里面写入内容

示例 创建一个txt文件,写入内容: 一些些node基础知识点

执行代码:

const fs = require('fs');

const fileContent = fs.readFileSync('./text.txt', 'utf-8')//同步语法
console.log(fileContent);

'utf-8'的目的是把默认读成的buffer流转成中文

输出: 一些些node基础知识点

fs.writeFile()写入内容

语法格式

使用fs.writeFile()方法,可以向指定的文件中写入内容,语法格式如下:

fs.writeFile(file, data[, options], callback)

参数解读

  • 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。

  • 参数2:必选参数,表示要写入的内容。

  • 参数3:可选参数,表示以什么格式写入文件内容,默认值是utf8。

  • 参数4:必选参数,文件写入完成后的回调函数。

示例

执行代码:

const fs = require('fs');

fs.writeFileSync('./readme.md', '菲律宾香蕉脆片')
console.log(fs.statSync('./text.txt'));

结果输出: 一些些node基础知识点

转载自:https://juejin.cn/post/7387981935009890338
评论
请登录