node.js 프로젝트 구조는 어떤 모습이어야 합니까?
6162 단어 nodesaasproductivityjavascript
소개
이 기사에서는 구조화된 방식으로 node.js 프로젝트를 구성하는 방법에 대해 설명합니다.
체계적인 프로젝트 구조는 버그와 섬세함을 줄이고 코드의 안정성과 확장성을 높입니다.
구조
|--app.js
|--api-routes
|--config
|--data
|--jobs
|--loaders
|--node_modules
|--public
|--secrets
|--services
|--views
|--package-lock.json
|--package.json
1. 앱.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. 직업
작업 폴더에는 특정 시간에 자동으로 실행되는 스크립트가 포함되어 있습니다.
여기에서 하루에 매시간 "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. 비밀
API-KEY, AUTHENTICATION-KEY 등 웹 애플리케이션과 관련된 모든 비밀을 저장할 수 있습니다.
|--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에서 전체 프로젝트를 찾을 수 있습니다.
더 많은 업데이트를 보려면 나를 팔로우하거나 GitHub .
Reference
이 문제에 관하여(node.js 프로젝트 구조는 어떤 모습이어야 합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kalpitrathore/what-the-node-js-project-structure-should-look-like-2noo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)