در حال بارگذاری...

API تاریخچه

API تاریخچه (History API) در جاوااسکریپت یک رابط قدرتمند است که به توسعه‌دهندگان اجازه می‌دهد وضعیت مرورگر و URL را بدون بارگذاری مجدد صفحه مدیریت کنند. اهمیت آن در توسعه برنامه‌های تک‌صفحه‌ای (Single-Page Applications - SPA) است که در آن‌ها ناوبری به صورت روان و بدون وقفه انجام می‌شود، درست مانند ساخت یک خانه که هر اتاق با دقت و هماهنگی طراحی شده است. در یک فروشگاه آنلاین، می‌توان از API تاریخچه برای حرکت بین صفحات محصولات یا دسته‌بندی‌ها بدون بارگذاری مجدد استفاده کرد. در وب‌سایت‌های خبری، این API امکان مرور اخبار و مقالات را به صورت پویا فراهم می‌کند، در وبلاگ‌های شخصی، انتقال بین پست‌ها به راحتی و روانی انجام می‌شود و در پرتال‌های دولتی، حفظ وضعیت فرم‌ها و صفحات مختلف بدون نیاز به رفرش کامل ممکن است. با مطالعه این آموزش، شما یاد خواهید گرفت که چگونه از توابع history.pushState، history.replaceState و window.onpopstate استفاده کنید تا تاریخچه مرورگر مدیریت شود، URL بروزرسانی گردد و رویدادهای ناوبری کنترل شوند. این فرآیند شبیه به سازمان‌دهی یک کتابخانه است: هر وضعیت صفحه یک کتاب است و هر کتاب در مکان خاص خود قرار دارد، بنابراین کاربران می‌توانند به راحتی بین وضعیت‌ها جابجا شوند و از سردرگمی جلوگیری کنند. تسلط بر API تاریخچه به شما امکان می‌دهد برنامه‌های وب تعاملی و داینامیک با تجربه کاربری بهینه ایجاد کنید.

مثال پایه

javascript
JAVASCRIPT Code
// مثال پایه برای pushState و onpopstate
const stateObj = { page: 1 }; // شیء نمایانگر وضعیت صفحه
history.pushState(stateObj, "صفحه 1", "?page=1"); // افزودن ورودی جدید به تاریخچه
console.log("URL فعلی:", location.href); // نمایش URL فعلی

window\.onpopstate = function(event) {
console.log("رویداد Popstate فراخوانی شد:", event.state); // مدیریت ناوبری عقب/جلو
};

در این مثال پایه، ابتدا یک شیء stateObj ایجاد می‌کنیم که وضعیت فعلی صفحه را نشان می‌دهد، در اینجا صفحه 1. با استفاده از history.pushState(stateObj, "صفحه 1", "?page=1") این شیء به تاریخچه مرورگر اضافه می‌شود بدون اینکه صفحه دوباره بارگذاری شود. پارامتر اول شیء وضعیت است که می‌تواند شامل تمام اطلاعات لازم برای بازگردانی صفحه باشد. پارامتر دوم عنوان است که بیشتر مرورگرها آن را نادیده می‌گیرند و پارامتر سوم URL است که در نوار آدرس بروزرسانی می‌شود. console.log(location.href) برای بررسی URL فعلی استفاده می‌شود. سپس با window.onpopstate می‌توانیم رویدادهای ناوبری عقب یا جلو مرورگر را مدیریت کنیم. هر بار که کاربر از دکمه‌های ناوبری استفاده می‌کند، تابع callback فراخوانی می‌شود و event.state شامل شیء وضعیت مربوطه است. تازه‌کارها ممکن است بپرسند چرا URL بدون بارگذاری صفحه تغییر می‌کند؛ پاسخ این است که pushState تاریخچه و URL را مستقل از رفرش مدیریت می‌کند. این ویژگی به وبلاگ‌ها، سایت‌های خبری و فروشگاه‌های آنلاین امکان ناوبری روان و بهینه را می‌دهد، درست مانند یک کتابخانه که هر کتاب (وضعیت صفحه) مکان مشخص خود را دارد.

مثال کاربردی

javascript
JAVASCRIPT Code
// مثال کاربردی ناوبری SPA در وبلاگ
const posts = \["پست 1", "پست 2", "پست 3"];

function showPost(index) {
document.getElementById("content").innerText = posts\[index]; // نمایش پست انتخاب شده
history.pushState({ post: index }, `پست ${index + 1}`, `?post=${index + 1}`); // بروزرسانی تاریخچه
}

window\.onpopstate = function(event) {
if(event.state) {
document.getElementById("content").innerText = posts\[event.state.post]; // بازگردانی پست قبلی
}
};

// نمونه استفاده: showPost(0)، showPost(1)، و غیره

این مثال کاربردی نشان می‌دهد چگونه در یک وبلاگ SPA ناوبری انجام شود. آرایه posts شامل محتوای پست‌ها است. تابع showPost پست انتخاب شده را در DOM نمایش می‌دهد و با history.pushState ایندکس پست و URL را بروزرسانی می‌کند، مثلاً "?post=2". Listener window.onpopstate هنگام استفاده از دکمه‌های عقب/جلو مرورگر پست قبلی را بازمی‌گرداند. این روش باعث ناوبری روان و بدون رفرش می‌شود. در فروشگاه‌های آنلاین یا سایت‌های خبری، این رویکرد امکان حرکت بین محصولات یا مقالات را به‌صورت داینامیک فراهم می‌کند و وضعیت فیلترها و صفحه حفظ می‌شود. شیء وضعیت باید شامل تمام اطلاعات لازم برای بازگردانی صفحه باشد، مانند یک کتابخانه که هر کتاب جای مشخص خود را دارد. اجرای درست این روش تجربه کاربری را بهبود می‌بخشد، بار سرور را کاهش می‌دهد و انسجام برنامه‌های وب داینامیک را تضمین می‌کند.

بهترین شیوه‌ها و اشتباهات رایج در استفاده از API تاریخچه:
بهترین شیوه‌ها:

  1. برای مدیریت تاریخچه از pushState و replaceState استفاده کنید، به جای تغییر مستقیم URL.
  2. شیءهای وضعیت کامل و معنادار ذخیره کنید تا بازگردانی صفحه به درستی انجام شود.
  3. از onpopstate برای مدیریت ناوبری عقب/جلو و هماهنگی رابط کاربری استفاده کنید.
  4. از سینتکس مدرن JavaScript (ES6+) برای خوانایی و بهبود عملکرد بهره ببرید.
    اشتباهات رایج:

  5. شیء وضعیت ناقص باعث بازگردانی اشتباه صفحه می‌شود.

  6. عدم توجه به سازگاری مرورگر یا تست نکردن رفتار در مرورگرهای قدیمی.
  7. استفاده بیش از حد از pushState باعث افزایش مصرف حافظه می‌شود.
  8. همگام نبودن DOM با وضعیت باعث سردرگمی کاربر می‌شود.
    نکات رفع اشکال: از console.log(history.state) برای بررسی وضعیت فعلی استفاده کنید. دکمه‌های ناوبری مرورگر را هنگام توسعه تست کنید. مدیریت تاریخچه را ابتدا در ماژول‌های کوچک تست‌پذیر پیاده کنید. اطمینان حاصل کنید که شیء وضعیت با DOM هماهنگ باشد تا ناسازگاری پیش نیاید.

📊 مرجع سریع

Property/Method Description Example
history.pushState() افزودن یک شیء وضعیت جدید به تاریخچه مرورگر history.pushState({page:1},"عنوان","?page=1")
history.replaceState() جایگزینی وضعیت فعلی در تاریخچه history.replaceState({page:2},"عنوان","?page=2")
window\.onpopstate رویداد Listener برای ناوبری عقب/جلو window\.onpopstate = e => console.log(e.state)
history.state بازگرداندن شیء وضعیت فعلی console.log(history.state)
history.length تعداد ورودی‌های موجود در تاریخچه console.log(history.length)

خلاصه و مراحل بعدی: API تاریخچه برای توسعه SPA ضروری است، زیرا امکان مدیریت تاریخچه و URL بدون بارگذاری مجدد را فراهم می‌کند. با استفاده از pushState، replaceState و onpopstate، توسعه‌دهندگان می‌توانند ناوبری روان، مدیریت وضعیت و همگام‌سازی URL را تضمین کنند. این API به راحتی با دستکاری داینامیک HTML DOM و ارتباط با Backend برای دریافت و نمایش داده‌ها ترکیب می‌شود. پس از تسلط بر API تاریخچه، مطالعه کتابخانه‌های Routing مانند React Router یا Vue Router، مدیریت داده‌های ناهمزمان (AJAX, fetch API) و درک Event Loop مرورگر برای بهینه‌سازی عملکرد SPA توصیه می‌شود. پیشنهاد عملی این است که ابتدا ناوبری SPA را در یک وبلاگ یا پروتوتایپ فروشگاه آنلاین کوچک پیاده کنید و سپس به سایت‌های خبری یا پرتال‌های پیچیده‌تر گسترش دهید تا برنامه‌های وب قدرتمند و کاربرپسند ایجاد شود.

🧠 دانش خود را بیازمایید

آماده شروع

آزمون دانش شما

درک خود از این موضوع را با سوالات کاربردی بسنجید.

4
سوالات
🎯
70%
برای قبولی
♾️
زمان
🔄
تلاش‌ها

📝 دستورالعمل‌ها

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