工程目录结构
NodeJS工程和浏览器端的JavaScript工程类似,都需要一个合理的目录结构来组织代码。本篇笔记我们介绍如何搭建一个规范的NodeJS工程目录结构,包括如何配置ESM模块机制、组织源码文件等内容。
创建基础工程
首先我们需要创建工程目录并初始化npm工程。
mkdir demo-node && cd demo-node && npm init -y
执行后会生成package.json文件,这是NodeJS工程的核心配置文件。
启用ESM模块机制
NodeJS默认使用CommonJS模块机制,但现代JavaScript开发中ESM(ECMAScript Modules)已成为标准。要在NodeJS中启用ESM,我们需要在package.json中添加"type": "module"配置。
package.json
{
"name": "demo-node",
"version": "1.0.0",
"type": "module",
"main": "src/index.js",
"scripts": {
"start": "node src/index.js",
"dev": "node --watch src/index.js"
}
}
配置说明:
type:设置为"module"表示工程中的.js文件默认使用ESM模块机制,如果不设置则默认为"commonjs"main:指定工程的入口文件,当该工程作为npm包被其他工程引用时,会从这个入口文件导出模块scripts:定义npm脚本命令,npm start用于启动程序,npm run dev使用--watch参数启动开发模式,文件变更时自动重启
注意:启用ESM后,require()、module.exports等CommonJS语法将无法使用,需要改用import和export语法。如果工程中确实需要混用两种模块机制,可以使用.mjs后缀表示ESM模块,.cjs后缀表示CommonJS模块。
推荐的目录结构
下面是一个规范的NodeJS工程目录结构,适用于大多数后端服务或命令行工具类型的项目。
demo-node
|_node_modules // npm依赖包目录
|_src // 源代码目录
|_index.js // 入口文件
|_config // 配置模块
|_index.js
|_utils // 工具函数模块
|_index.js
|_services // 业务逻辑模块
|_index.js
|_test // 测试代码目录
|_index.test.js
|_scripts // 构建或部署脚本
|_docs // 文档目录
|_package.json // npm工程描述文件
|_package-lock.json // 依赖版本锁定文件
|_.gitignore // Git忽略配置
|_README.md // 项目说明文档
目录说明:
src:存放所有源代码,入口文件通常命名为index.js、main.js或app.jstest:存放测试代码,测试文件通常以.test.js后缀命名scripts:存放构建、部署、数据库迁移等辅助脚本docs:存放项目文档
对于更复杂的大型项目,目录结构可能需要进一步细化。
demo-node
|_node_modules
|_src
|_index.js
|_config
|_controllers // 控制器层(处理请求)
|_services // 服务层(业务逻辑)
|_models // 数据模型层
|_middlewares // 中间件
|_routes // 路由定义
|_utils // 工具函数
|_constants // 常量定义
|_test
|_unit // 单元测试
|_integration // 集成测试
|_scripts
|_docs
|_package.json
这种分层架构有助于保持代码的清晰和可维护性,不同层次的代码职责分明,便于团队协作开发。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。