NodeJs學習日志(4):路由合并_環境配置_常用文件目錄

路由合并_環境配置_常用文件目錄

路由合并

// routes/routes.js
const express = require('express');
const router = express.Router();// 合并子路由
var indexRouter = require('../routes/index');
var usersRouter = require('../routes/users');router.use('/', indexRouter);
router.use('/users', usersRouter);module.exports = router;

app.js 中使用

//路由文件并
const routes = require("./config/routes");
app.use('/', routes);

在這里插入圖片描述

express路由語法

在這里插入圖片描述

http://localhost:19997/routes_1/routes_2/auth1/login
協議+ip地址:端口/app.js中綁定的路由+路由文件中的請求定義
http://協議
localhost:19997ip地址:端口
routes_1/routes_2/auth1/app.js中綁定的路由
login路由文件中的請求定義

建議將:實際路由文件,和路由文件保持一直,以便于后期維護。
例如:請求URL是: routes_1/routes_2/auth1/login
則文件路徑建議:/routes/routes_1/routes_2/auth1/
而不是隨意的一個路徑

默認app.js內容分析

//導入模塊
var express = require('express');          // 引入 Express 框架
var path = require('path');                // Node.js 內置模塊,用于處理文件路徑
var cookieParser = require('cookie-parser'); // 解析 HTTP Cookie 的中間件
var logger = require('morgan');            // HTTP 請求日志記錄中間件//引入路由文件
var indexRouter = require('./routes/index');   // 主路由(如首頁)
var usersRouter = require('./routes/users');   // 用戶相關路由(如 /users)var app = express();  // 初始化 Express 應用//引用中間件
app.use(logger('dev'));  // 使用 morgan 記錄請求日志('dev' 格式)
app.use(express.json()); // 解析 JSON 格式的請求體(如 POST 請求的 JSON 數據)
app.use(express.urlencoded({ extended: false })); // 解析 URL-encoded 請求體(如表單提交)
app.use(cookieParser()); // 解析 Cookie
app.use(express.static(path.join(__dirname, 'public'))); // 托管靜態文件(如 CSS、JS、圖片)//路由掛載
app.use('/', indexRouter);       // 所有 / 開頭的請求由 indexRouter 處理
app.use('/users', usersRouter);  // 所有 /users 開頭的請求由 usersRouter 處理//導出 app(供 www 或其他文件使用)
module.exports = app;

默認/bin/www內容分析

取端口 → 創建服務器 → 監聽請求,
錯誤時提示,成功時輸出日志

var app = require('../app'); // 加載 app.js 中的 Express 配置
var debug = require('debug')('mide-routes-dotenv-filedir:server'); // 調試日志工具
var http = require('http'); // Node.js 內置 HTTP 模塊var port = normalizePort(process.env.PORT || '3000');//從環境變量讀取端口,如果沒有就用3000
app.set('port', port);var server = http.createServer(app);
server.listen(port);
server.on('error', onError); // 錯誤監聽
server.on('listening', onListening); // 成功啟動監聽/*** 處理端口值為 數字(如 3000)或 字符串*/
function normalizePort(val) {var port = parseInt(val, 10); // 轉為十進制整數if (isNaN(port)) { return val; }// 非數字(如命名管道)直接返回if (port >= 0) { return port; } // 有效端口號return false; // 無效值
}/*** 處理錯誤事件*/
function onError(error) {if (error.syscall !== 'listen') {throw error;}var bind = typeof port === 'string'? 'Pipe ' + port: 'Port ' + port;// handle specific listen errors with friendly messagesswitch (error.code) {case 'EACCES':console.error(bind + ' 需要提升權限');process.exit(1);break;case 'EADDRINUSE':console.error(bind + ' 端口已經被占用 ');process.exit(1);break;default:throw error;}
}/*** Event listener for HTTP server "listening" event.*/function onListening() {var addr = server.address();var bind = typeof addr === 'string'? 'pipe ' + addr: 'port ' + addr.port;debug('Listening on ' + bind);
}

使用dotenv進行環境配置

安裝dotenv

npm install dotenv

VSCode:
左側1:導入路由并導入dotenv中間件require('dotenv').config();
中間2:在請求中打印.env文件
右側3:合并的路由的文件
如果左1和右3為可選的,在app.js中引入中間件require('dotenv').config();,在其他地方即可直接調用。
在這里插入圖片描述

常用文件目錄解析

在這里插入圖片描述

項目根目錄

project/
├── config/               # 配置文件
├── migrations/           # Sequelize 數據庫遷移文件
├── models/               # Sequelize 模型定義
├── routes/               # 路由文件
├── controllers/          # 業務邏輯控制器
├── middlewares/          # 自定義中間件
├── public/               # 靜態資源
├── utils/                # 工具函數
├── tests/                # 測試文件
├── seeders/              # sequlize種子文件
├── app.js                # 主應用入口
└── package.json
1. config/ - 配置文件
config/
├── config.js             # 主配置文件
├── database.js           # 數據庫連接配置
└── passport.js           # 認證策略配置(如使用)
2. models/ - Sequelize 模型
models/
├── user.model.js         # 用戶模型
├── post.model.js         # 文章模型
├── comment.model.js      # 評論模型
└── index.js              # 模型初始化文件
3. routes/ - 路由定義
routes/
├── auth.routes.js        # 認證相關路由
├── post.routes.js        # 文章相關路由
├── comment.routes.js     # 評論相關路由
└── index.js              # 路由聚合文件
4. controllers/ - 業務邏輯
controllers/
├── auth.controller.js    # 認證邏輯
├── post.controller.js    # 文章邏輯
└── comment.controller.js # 評論邏輯
5. middlewares/ - 自定義中間件
middlewares/
├── auth.middleware.js    # 認證中間件
├── error.middleware.js   # 錯誤處理
└── validation.middleware.js # 數據驗證
6. migrations/ - 數據庫遷移
migrations/
├── 202301010000-create-user.js
├── 202301010001-create-post.js
└── 202301010002-create-comment.js

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95027.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95027.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95027.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

?TRAE SOLO + Holopix AI | 輕松實現 “虛假廣告“-轉[特殊字符]割草小游戲

引言 😶 兩周前 (7.21) Trae-國際版 正式發布「SOLO」模式,需要 Pro 賬戶,邀請碼一度 “難求”,海鮮市場還有人掛出 500塊的 “天價”,這都能炒?我是無法理解的🤷?♀?,目前一個月…

redis集群-本地環境

* Linux 本地集群:3主3從yum install -y gccyum install -y wgetyum install -y vimwget http://download.redis.io/releases/redis-7.2.5.tar.gztar -zxvf redis-7.2.5.tar.gzcd redis-7.2.5/makemake PREFIX/usr/local/redis install# 配置系統環境變量vim /etc/p…

海關 瑞數 失信企業 逆向 分析 后綴 rs

聲明: 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關!部分python代碼headers {Accept: appl…

用 Postman 的 Tests 腳本,這行代碼斷言接口返回,自動化測試省一半事

本文聚焦 Postman 的 Tests 腳本在接口自動化測試中的核心作用,闡述如何通過編寫 Tests 腳本實現接口返回的自動斷言,從而大幅提升測試效率。文中詳細介紹了 Tests 腳本的基礎語法、常用斷言方法、實戰案例及優化技巧,涵蓋從簡單響應狀態碼校…

7、西門子PLC基礎術語:數據單位、存儲區域、尋址方式、字節序

一、數據單位(數據長度類型)術語名稱位數所占字節說明Bit位1 bit1/8 Byte最小數據單位(0或1)BByte 字節8 bit1 Byte字節單位WWord 字16 bit2 Byte通常用于整數、狀態字等DWDouble Word 雙字32 bit4 Byte常用于浮點、雙整數 1雙字 …

大型動作模型LAM:讓企業重復任務實現80%效率提升的AI技術架構與實現方案

現代企業運營中,重復性任務的自動化處理已成為提升組織效率的核心需求。從基礎數據錄入到復雜工作流管理,企業持續尋求技術創新來降低人工成本、減少操作錯誤,并將人力資源重新配置到更具價值的戰略性工作中。大型動作模型(Large …

部署Web UI自動化測試平臺:SeleniumFlaskTester

1. Python環境準備 推薦Python3.11,可從https://www.python.org/downloads/release/python-3119/ 下載,見下圖: 安裝后,cmd命令行查看版本:python --version 2. 下載源碼包 從 https://gitee.com/ligaopan/SeleniumFlaskTester…

計算機網絡:到底什么是可變長子網掩碼VLSM?

VLSM 是可變長子網掩碼,對應的是 FLSM(固定長子網掩碼) FLSM 中,子網掩碼是固定的,比如一個 C 類地址用 255.255.255.128(/25)劃分,每個子網只能有 126 臺主機,但如果實際需要的主機數不同,比如有的子網需要 20 臺,有的需要 50 臺,FLSM 會導致地址浪費。所以 VLSM …

太極行業觀察:從傳統技藝到數字化轉型的演變|創客匠人

太極拳作為中華傳統文化的重要組成部分,在全球范圍內具有廣泛影響力。目前全球太極習練者已超過一億人,僅中國大陸就有約千萬固定練習者。每年與太極相關的賽事、培訓、教學、養生旅游等活動,形成了數百億元的市場規模。盡管如此,…

Kafka服務端NIO操作原理解析(二)

Kafka系列文章 基于Kafka2.1解讀Producer原理 基于Kafka2.1解讀Consumer原理 Kafka服務端NIO操作原理解析(一) 文章目錄Kafka系列文章前言一、基本認知二、Acceptor的主體流程2.1 run方法源碼2.2 acceptNewConnections方法源碼2.3 主體邏輯流程示意圖三…

當服務器負載過高時該怎么辦?

當服務器出現負載過高時,要對內存、網絡等硬件設備進行查看,其中CPU是重中之重,對CPU使用率進行查看和了解,確定哪些進程占用了大量CPU資源,如果是某個應用程序進程導致CPU高負載,需分析該程序是否存在算法…

跨境電商增長突圍:多維變局下的戰略重構與技術賦能

在全球化商業浪潮與數字技術迭代的雙重驅動下,跨境電商行業正經歷前所未有的變革。平臺規則的動態調整、市場需求的非線性波動、技術工具的持續革新,共同構成了復雜多變的競爭格局。對于賣家而言,如何在不確定性中錨定增長路徑,已…

軟件運行時 ffmpeg.dll 丟失怎么辦?從原因排查到完美修復的完整方案

在計算機的軟件生態系統中,ffmpeg.dll 扮演著一個至關重要卻又常被普通用戶忽視的角色。這個看似普通的文件,實際上是眾多多媒體相關軟件能夠正常運行的基石之一。當你的視頻剪輯軟件突然無法導入特定格式的視頻,或者心愛的游戲在啟動時彈出令…

Axure 11

下載 Axure RP - UX Prototypes, Specifications, and Diagrams in One Tool 激活 Axure RP11 2025-8-7日親測有效: 49bb9513c40444b9bcc3ce49a7a022f9 漢化 Axure Rp 11 安裝、漢化、授權_axure11漢化包-CSDN博客 中文社區 https://www.axure.com.cn/

論文閱讀:User Behavior Simulation with Large Language Model-based Agents

https://dl.acm.org/doi/pdf/10.1145/3708985 https://www.doubao.com/chat/15495707526837250 Advances and Challenges in Foundation Agents–Memory調研 論文翻譯 基于大型語言模型代理的用戶行為模擬 摘要 在推薦系統、社交網絡等以人為中心的應用中,高質…

基于ECharts的智慧社區數據可視化

引言數據可視化是現代Web應用的重要組成部分,它能將復雜的數據以直觀的圖形方式呈現,幫助用戶快速理解數據背后的信息。本文將介紹如何使用ECharts庫實現智慧社區住戶數據的可視化展示,包括柱狀圖和餅圖兩種常見圖表類型的實現與優化。技術棧…

Qt 綜述:從基礎到一般應用

摘要: Qt,作為久經考驗的跨平臺C開發框架,以其強大的功能、豐富的類庫和靈活的機制,在桌面應用、嵌入式系統、網絡編程等領域占據重要地位。本文將深入解析Qt的核心技術體系,涵蓋基礎架構、核心機制、UI開發、外觀定制…

基于PyTorch一文講清楚損失函數與激活函數并配上詳細的圖文講解

PyTorch損失函數與激活函數 目錄 激活函數詳解損失函數詳解實戰案例性能優化技巧 激活函數詳解 1. 什么是激活函數? 激活函數是神經網絡中的關鍵組件,它決定了神經元是否應該被激活。沒有激活函數,神經網絡就只是線性變換的堆疊&#xf…

蒼穹外賣-Day1 | 環境搭建、nginx、git、令牌、登錄加密、接口文檔、Swagger

目錄 nginx: nginx反向代理和負載均衡概念 nginx反向代理和負載均衡如何配置? 后端環境:maven管理 sky-common sky-pojo sky-server: 后端環境搭建--Git進行版本控制 后端數據庫--Mysql 前后端聯調 前后端運行&#xf…

論文閱讀-ZeroDCE和ZeroDCE++

文章目錄1 概述2 模塊2.1 總體說明2.2 LE曲線(Light Enhance Curve)2.3 DCE-Net2.4 無監督損失2.4.1 空間一致性損失2.4.2 曝光控制損失2.4.3 顏色恒定損失2.4.4 照明平滑度損失2.5 ZeroDCE3 效果3.1 不同損失函數組合的效果3.2 參數設置影響3.3 訓練數據…