node.js 项目的结构应该是什么样的?
介绍
本文将探讨如何以结构化的方式组织 Node.js 项目。
有条理的项目结构可以减少错误和复杂性,提高代码的稳定性和可扩展性。
结构
|--app.js
|--api-routes
|--config
|--data
|--jobs
|--loaders
|--node_modules
|--public
|--secrets
|--services
|--views
|--package-lock.json
|--package.json
1. app.js
app.js是 Node.js 应用程序的入口点或核心。
//app.js
const express = require('express');
const app = express();
require('./loaders/network-information.js');
require('./api-routes/home.js')(app);
require('./jobs/say-hello.js');
var config = require('./config/config.js');
app.set('view engine', 'ejs');
app.use(express.static('public'))
app.listen(config.port, () => {
console.log(`App listening at http://localhost:${config.port}`);
})
2. API路由
api-routes包含 URL 端点,帮助用户与应用程序进行交互。
|--api-routes
|--home.js
//home.js
var analytics = require('../services/analytics.js');
module.exports = function(app, network_information){
app.get('/', function(req, res){
res.render('home.ejs', {key: "You have visited this page "+analytics.visitCounter()+" times"});
});
}
3. 配置
此文件夹包含用于配置应用程序参数和初始设置的文件。这些设置可以通过环境变量、命令行参数或外部资源进行覆盖和扩展。
|--config
|--config.js
//config.js
module.exports = {
port: process.env.PORT || 80
};
4. 数据
您可以在这里存储少量数据,或者将其用作本地数据库。
注意:请勿在此处存储任何敏感或机密数据,此类数据请始终使用安全数据库。
|--data
|--users.json
//users.json
[
{
"name": "Mario Curtis",
"city": "San Francisco",
"contact number": "4949494949780",
"type": "Admin"
}
]
5. 工作
jobs文件夹包含一些脚本,这些脚本会在特定时间自动执行。
例如,我们创建了一个脚本,该脚本每天每小时打印一次“Hello”。
|--jobs
|--say-hello.js
//say-hello.js
var schedule = require('node-schedule');
schedule.scheduleJob('00 * * * *', function(){
console.log('Hello World, This scheduler will say "Hello" every hour to you');
});
6. 装载机
加载器包含服务器启动时要执行的脚本类型。
例如,这里我们会在服务器启动时获取用户的IP 地址。
|--loaders
|--network-information.js
//network-information.js
const http = require('http');
http.get('http://api.ipify.org?format=json', (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
console.log("Your IP address is "+JSON.parse(data).ip)
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
7. 公共
public文件夹包含所有需要“静态”提供的文件(JS、CSS、图像文件)。
|--public
|--css
| |--home.css
|--js
| |--home.js
//home.css
body{
background-color: #f3f7fa;
}
div{
text-align: center;
padding-top: 200px;
}
console.log('Hello from javascript');
8. 秘密
您可以存储与 Web 应用程序相关的所有密钥,例如API 密钥、身份验证密钥等。
|--secrets
|--keys.json
//keys.json
{
"api-key": "HUH121NVYTB091BHHBCR121DR"
}
9. 服务
服务包含一组执行特定任务的模块。它们可以重复使用。
|--services
|--anaytics.json
//analytics.json
var i = 0;
function visitCounter()
{
i = i + 1;
return i;
}
module.exports = {
visitCounter: visitCounter
}
10. 浏览量
它包含HTML 模板文件,这些文件随后由模板引擎“动态”渲染,并向用户提供 HTML 响应。
这里我们使用的是EJS模板引擎,您可以根据需要使用任何模板引擎(例如 Pug、EJS)。
|--views
|--home.ejs
//home.ejs
<html>
<head>
<title>Node.js Project Structure</title>
<link rel="stylesheet" href="/css/home.css"/>
</head>
<body>
<div><%= key %></div>
</body>
<script src="/js/home.js"></script>
</html>
结论
组织良好的文件夹结构可以降低代码复杂度,提高应用程序的可扩展性。
您可以在GitHub上找到整个项目。
文章来源:https://dev.to/kalpitrathore/what-the-node-js-project-struct-should-look-like-2noo
