上一篇文章中,简单介绍了如何自定义模块, 以及如何在其他模块中调用自定义模块。
本文主要介绍:
(1)自定义项目(如何使用NPM创建一个最简单的项目)
(2)第三方模块(如何使用NPM引入第三方模块)
1.项目化
Node.js 项目化开发的核心是规范目录结构、统一依赖管理、标准化构建、运行流程。
项目化开发本质是解决零散脚本的痛点:
- 目录混乱,文件无统一组织;
- 依赖管理无序(手动复制第三方包);
- 无统一的启动 / 构建 / 部署流程;
- 代码复用性、可维护性差。
项目化开发后,能实现:目录规范、依赖可控、流程标准化、代码模块化。
(1)标准化项目目录结构
一个规范的 Node.js 项目目录需兼顾「功能划分」和「易维护性」,以下是通用的目录结构(适配 API 服务、工具类项目等绝大多数场景):
your-project/ # 项目根目录
├─ src/ # 业务源码目录(核心)
│ ├─ config/ # 配置文件(数据库、端口、环境变量)
│ │ └─ index.js # 配置导出入口
│ ├─ controller/ # 业务逻辑层(处理请求、调用服务)
│ ├─ service/ # 核心服务层(封装业务逻辑、数据处理)
│ ├─ utils/ # 工具函数模块(通用方法、格式化等)
│ ├─ routes/ # 路由层(接口路由定义)
│ └─ app.js # 应用入口(创建服务、挂载中间件)
├─ node_modules/ # 第三方依赖(npm 安装,自动生成)
├─ .env # 环境变量(开发/生产环境配置,不提交到仓库)
├─ .env.example # 环境变量示例(提交到仓库,供团队参考)
├─ .gitignore # git 忽略文件(node_modules、.env 等)
├─ package.json # 项目核心配置(依赖、脚本、元信息)
├─ package-lock.json # 依赖版本锁定(确保团队依赖一致)
└─ README.md # 项目说明(启动方式、功能、部署流程)
关键目录说明:
src/:所有业务代码放在这里,避免根目录杂乱;config/:集中管理配置,避免硬编码(如数据库连接串、端口号);service/和controller/:分层开发,解耦业务逻辑和请求处理;.env:存放敏感配置(如数据库密码),通过dotenv加载,不提交到代码仓库。
(2)package.json
通过 npm init -y 初始化生成,是项目的「身份证」,包含依赖、脚本、元信息,示例如下:
{
"name": "node-demo-project", // 项目名(小写、无空格)
"version": "1.0.0", // 版本号
"description": "Node.js 项目化开发示例", // 项目描述
"main": "src/app.js", // 项目入口文件
"scripts": { // 自定义脚本(npm run 执行)
"start": "node src/app.js", // 启动项目
"dev": "nodemon src/app.js", // 开发环境(热重载)
"test": "echo \"Error: no test specified\" && exit 1" // 测试脚本
},
"dependencies": { // 生产依赖(运行时必需)
"dotenv": "^16.0.3", // 加载环境变量
"express": "^4.18.2" // Web 框架(示例)
},
"devDependencies": { // 开发依赖(仅开发时用)
"nodemon": "^3.0.1" // 热重载工具
},
"author": "你的名字",
"license": "MIT"
}
2.如何创建一个最简单的node.js项目
在D盘根目录下创建一个文件夹,名字为node,然后使用vscode打开这个文件夹,点击“终端”,然后点击“新建终端”

然后在底部的终端,输入npm init -y
就可以看到正在初始化

创建的package.json文件内容如下:

{
"name": "node",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "commonjs"
}
我们修改一下package.json文件,增加一个启动脚本
"start": "node index.js"
修改完如下:

在vscode中新增一个文件,名字为index.js

然后在index.js中新增一行测试代码
console.log('Hello World!');
然后在控制台中输入npm start,可以看到在控制台中输出了hello world

3.使用第三方模块
这里引入了moment模块,进行格式化日期操作。
(1)下载安装moment模块
在vscode控制台中输入安装moment模块的命令:
npm install moment
可以看到项目中多了一个node_modules文件夹,这个文件夹里面多了一个moment文件夹,这样就安装成功了 一个第三方模块。

同时,package.json文件中也多了一个依赖项目。

(2)编写format.js文件
这里新编写一个format.js文件,然后输入下面的代码
let moment = require('moment'); //引入第三方库
moment.locale('zh-cn'); //设置中文语言环境
//格式化日期函数
function formatDate(date) {
//格式化日期为“YYYY年MM月DD日 HH:mm:ss”格式
let time = moment(date).format('YYYY年MM月DD日 HH:mm:ss');
return time;
}
module.exports = {
//自定义模块中暴露函数
formatDate
};

(3)修改index.js文件
修改index.js文件如下:
var format = require('./format.js'); //引入自定义模块
//console.log('Hello World!');
let date = new Date(); //获取当前日期
console.log(format.formatDate(date));
保存文件后,然后在控制台中输入 npm start,重新启动项目
可以看到控制台中输出了已经格式化的日期了。
