node基础

node是什么?

Node.js 不是一门语言,是一个运行时,和浏览器更像,只不过运行在服务端。
这个运行时的方言是 JavaScript(不包含 BOM、DOM API,增加了 Stream、网络等 API)。
Node.js 是靠 Chrome V8 引擎运行 JavaScript。

对应到 Java 我们可以理解 Node.js 是 JDK,装上就能在服务端跑 JavaScript 代码了。Chrome 和 Node.js 同样是 JavaScript 运行时,都使用了 V8 引擎,主要区别在于 V8 只实现了 ECMAScript 的数据类型、对象和方法,Chrome 运行时提供了 Window、DOM、BOM,而 Node.js 运行时提供了global、 Buffer、net 等模块

node可以干什么?

  • 后端web服务器开发与网络爬虫开发
  • 脚手架命令行工具开发
  • 图形界面应用程序开发

环境搭建与基础入门

安装node

打开 node.js官网,选择长期维护版进行安装。

终端下输入

node -v

可以输出版本号即可证明安装成功

如何使用node.js 运行JavaScript代码

  • 新建 index.js 文件,写入如下内容:
let a = 1
console.log(a)
  • 终端下输入:
node index.js

控制台就会打出1

文件操作与模块化的概念

读取文件内容

新建read.js,引入fs模块,通过fs下的readFile进行读取:

// 引入fs 模块
var fs = require('fs')

// 文件路径 编码格式 回调函数(异常,文件内容)
fs.readFile('./index.txt', 'utf8', function (error, data) {
    console.log(error) // null
    console.log(data) // txt 文件中的内容
})

写入文件内容

写入文件依旧通过fs下的writeFile来实现,代码如下:

// 引入fs 模块
var fs = require('fs')

// 文件路径 内容 回调函数(异常)
fs.writeFile('./index.txt', 'hello lonjin', function (error) {
    !error && console.log('写入成功')
})

追加内容

通过上面内容我们可以完成文件的读取与写入,那么追加就比较简单了,具体代码如下:

// 引入fs 模块
var fs = require('fs')

fs.readFile('./index.txt', 'utf8', function (error, data) {
    if (!error) {
        let newData = data + new Date()
        fs.writeFile('./index.txt', newData, function (error) {
            !error && console.log('追加成功')
        })
    }
}) 

模块化编程的概念

当我们在Node.js中写代码时,我们通常需要使用不同的模块来完成不同的任务。require('fs')就是Node.js中的模块系统,通过它我们可以引入其他模块,例如fs模块来进行文件操作。

为什么我们需要模块化呢?在JavaScript中,如果我们把所有代码都写在一个文件中,那么文件将变得非常大且难以维护。同时,如果我们需要在多个文件中重复使用某个功能,那么我们需要在每个文件中都写入这个功能,这样会导致代码冗余和维护成本的增加。因此,我们需要一种能够拆分代码、相互独立、导入导出的方式来进行模块化编程。

JavaScript中,有多种模块化的概念,比如CommonJS、AMD、ES6等。Node.js采用了CommonJS规范,即通过require()来引入模块,通过module.exports来导出模块。在ES6中,我们可以使用importexport来进行模块化编程。而AMD则是另外一种模块化方案,它采用了异步模块定义,适合在浏览器端进行模块化编程。

通俗一点的说,模块化编程其实就是拆分代码、相互独立、导入导出;好比造车,汽车轮胎算一个模块,汽车引擎算一个模块、汽车车体算一个模块,通过各个模块的组装,最终生产出一辆汽车。JavaScript中的模块化的概念也是近几年才出现的,之前的js并没有模块化的概念。

npm包管理器

npm(Node Package Manager)是 Node.js 的包管理器,用于管理和共享 JavaScript 代码。它是 Node.js 官方提供的默认包管理工具,用于安装、发布、更新和管理 JavaScript 包和依赖项。

作用

  • 包管理:npm 允许开发者在项目中安装、更新和卸载依赖的第三方包或模块,提供了一个方便的方式来管理项目的依赖关系。
  • 代码共享:开发者可以通过 npm 发布自己编写的模块或应用,并将其共享给其他开发者使用。
  • 版本控制:npm 提供了丰富的版本管理功能,开发者可以指定安装特定版本的包,以确保项目的稳定性和兼容性。

常用命令

  • npm init:初始化一个新的项目,生成 package.json 文件。
  • npm install:安装项目依赖,根据 package.json 中的配置自动下载并安装依赖。
  • npm install <package>:安装指定的包。
  • npm install --save-dev <package>:安装开发环境依赖,仅在开发阶段使用。
  • npm update:更新项目依赖的包到最新版本。
  • npm uninstall <package>:卸载指定的包。
  • npm run <script>:运行项目中定义的脚本命令,可以在 package.json 的 scripts 部分定义自定义命令。
  • npm publish:将自己编写的模块发布到 npm 公共注册表,供其他人使用。
  • npm search :在 npm 注册表中搜索指定的包。
  • npm outdated:检查项目中已安装包的更新状态。
    这只是一些常用的 npm 命令,npm 还提供了其他许多命令和功能,可以根据具体需求参考官方文档或使用 npm help 命令获取更多信息。

管理npm包

新建一个time文件夹,文件夹下建立index.js,下面我们输出一个当前日期:

let time = Date.now()
console.log(time) //1692708681030

如果我们想输出一个年-月-日 时:分:秒的格式,则可以利用npm上的包进行处理,比如moment

安装:

npm i moment

引入&&使用:

const moment = require('moment')

let time = Date.now()
console.log(moment(time).format('YYYY-MM-DD HH:mm:ss')) //2023-08-22 20:51:21

这就是npm包最简单的一个使用。