امیرحسین سفیدگر
3 سال پیش توسط امیرحسین سفیدگر مطرح شد
3 پاسخ

آدرس دهی لوکال

سلام اگه توی سیستم خودم بصورت لوکال بخوام آدرس دهی مطلق داشته باشم باید از علامت / در اول آدرس هام استفاده کنم که از روت سیستم خودم شروع به آدرس دهی میکنه من میخوام بجای شروع از روت سیستم براش روت پروژه تعریف کنم یعنی از اینجا شروع به آدرس دهی بکن مثال روی دسکتاپ در پوشه html وبجای استفاده از

home/Desktop/html/....

مستقیما از

 /.... 

استفاده کنم کسی راهکاری سراغ داره؟

منظورم آدرس دهی به این شکل هست

<link rel="stylesheet" href="/styles/style.css">

ثبت پرسش جدید
ASPgo
تخصص : HTML، CSS، PHP و JS، طراح قالب...
@asp.gosk 3 سال پیش آپدیت شد
1

میتونی تو بک اند یه متغیر استرینگ بسازی و توش روت رو ذخیره کنی(کد های زیر php هستن)

const ROOT_ADDRESS = 'C:/directory/subfolder/...';

بعد هر جا لازم شد به این شکل صداش میزنیم:

<?php echo ROOT_ADDRESS; ?>

راه دیگه هم اینکه یه علامت تایین کنی و هروقت اون علامت تو src یا href المنتی قرار گرفت با جاوا اسکریپت اون علامت رو با روت جایگزین کنی
مثلا فرض کن ما میخوایم این علامت با آدرسی که میخوایم جایگزین کنیم:

///

پس میایم اول همه link ها، img و المنت هایی که ممکن یه آدرسی بگیرن مثل تگ a رو انتخاب میکنیم بعد آدرسشونو بررسی میکنیم. اینجا من فقط link ها و a ها رو پیدا کردم(کد های زیر JS هستن)

let linkElements = document.querySelectorAll('link');
let aElements = document.querySelectorAll('a');

حالا تو foreach آدرس هاشونو تغییر میدیم(اینجا چون link و a هردوشون href میگیرن و مثل script اتریبیوت src ندارن کد هاشون رو شبیه هم نوشتم. اگه img یا script هارو هم اضافه کردی باید همین کد ها رو بزنی اما به جای href اتریبیوت src رو تغییر بدی)

const directory = "C:/directory/subfolder/...";

linkElements.forEach( element => {
    element.href = element.href.replace("///", directory);
});
aElements.forEach( element =>  {
    element.href = element.href.replace("///", directory);
});

با replace() اون علامت رو با directory که داریم جایگزین کردیم
برای افزایش کارایی کد و کاهش باگ ها و... میتونی قبل تغییر href یا src بررسی کنی اصلا این اتریبیوت رو دارن یا خالی هستن یا نه. وجود داشتن و خالی نبودن جایگزین میکنی.
این تکنیکی که از Javascript استفاده کردیم یه راه دیگه هم داره که میتونیم با querySelectorAll('*') کل المنت ها رو بدست بیاریم بعد کاری کنیم هرجا اون علامت که تایین کردیم وجود داشت جایگزین شه با آدرسی که میخوایم. اما با اینکار سرعت سایت خیلی کاهش پیدا میکنه


امیرحسین سفیدگر
تخصص : Backend Developer
@AmirhosseinSefidgar 3 سال پیش مطرح شد
1

دست شما درد نکنه خیلی عالی توضیح دادید هر دو روش عالی بود؟


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش مطرح شد
1

بله هر دو روش کامله ولی از روش اول که سمت سرور هست بیشتر استفاده میشه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام