پرش به مطلب اصلی

شروع

-----Insert last notes on Above ----

Absolute Alias

اطلاع

در ابتدا اشاره میکنم که متد proccess.cwd() که به طور پیش‌فرض داخل node.js وجود داره مسیر root پروژه یا جایی که فایل package.json وجود داره رو بهش اشاره میکنه

برای مسیردهی به فایل‌ها، ماژول‌ها، مدل‌ها و ... ما نمیتونیم هربار چندین بار ../../ بزنیم چونکه اگر یکبار صرفا یک فایل رو جاشو عوض کنیم باید در تمام فایل‌ها مسیرش رو تغییر بدیم

برای همین ما از مسیردهی absolute استفاده میکنیم و معمولا با @ شروعش میکنیم

Module Alias

یک پکیج هست که میتونیم ازش برای مسیردهی استفاده کنیم

npm install module-alias

سپس توی فایل package.json مسیر هایی رو که میخوایم تعریف میکنیم

package.json
{
"_moduleAliases": {
"@": "./src",
"@controller": "./src/controller",
"@model": "./src/model",
"@middleware": "./src/middleware",
"@router": "./src/router",
"@util": "./src/util",
"@config": "./src/util/config",
"@function": "./src/util/function"
}
}

سپس در بالاترین سطح برنامه module-alias/register رو ایمپورت میکنیم. دقت کن که یکبار در بالاترین سطح برنامه کافی هست ایمپورتش و نیازی نیست توی هر فایل مجدد ایمپورت کنیم برای استفاده

server.js
require("module-alias/register");
const express = require("express");
// ...

سپس میتونیم از module-alias توی فایل‌های مختلف برنامه استفاده بکنیم و نیازی به ایمپورت مجدد چیزی نیست.

برای مثال :

example
// router
const { RegisterController } = require("@controller/auth/register.controller");
const { LoginController } = require("@controller/auth/login.controller");
const { LogoutController } = require("@controller/auth/logout.controller");

// model
const { UserModel } = require("@model/user.model");

// function
const { verifyTokne } = require("@function/token");

سپس به این نحو استفاده میکنیم ازش

Typescript Config

اگر با تایپ‌اسکریپت توسعه میدی میتونی توی فایل tsconfig.json مسیرهارو تعریف کنی

tsconfig.json
{
"compilerOptions": {
// ...
"paths": {
"@/*": ["./src/*"],
"@controller/*": ["./src/controller/*"],
"@model/*": ["./src/model/*"],
"@middleware/*": ["./src/middleware/*"],
"@router/*": ["./src/router/*"],
"@util/*": ["./src/util/*"],
"@config/*": ["./src/util/config/*"],
"@function/*": ["./src/util/function/*"]
}
}
}

سپس نیازی به هیچ ایمپورت و چیز خاصی نیست صرفا توی فایل‌ها میتونی به راحتی ازش استفاده کنی

example
// router
const { RegisterController } = require("@controller/auth/register.controller");
const { LoginController } = require("@controller/auth/login.controller");
const { LogoutController } = require("@controller/auth/logout.controller");

// model
const { UserModel } = require("@model/user.model");

// function
const { verifyTokne } = require("@function/token");