【node学习-01】node.js基础
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中,我们可以使用import
和export
来进行模块化编程。而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
包最简单的一个使用。