ناوبری در اپلیکیشن انگولار – به زبان ساده
زمانی که صفحهای را رفرش یا بارگذاری مجدد میکنید در عمل فایل index.html را بارگذاری مجدد میکنید که به نوبه خود همه فایلهای جاوا اسکریپت و CSS را بارگذاری مجدد میکند. برخی اوقات باید از یک اپلیکیشن تکصفحهای به اپلیکیشن دیگری حرکت کنیم. در این مقاله با روشهای مختلف ناوبری در اپلیکیشن انگولار برای جابجایی به وبسایتهای بیرونی یا هر اپلیکیشن انگولار دیگر آشنا میشویم.
رفتار اپلیکیشنهای تکصفحهای متفاوت است. این اپلیکیشنها هر زمان که شما دادههایی را از سرور دریافت میکنید، صفحه را بارگذاری مجدد نمیکنند. این اپلیکیشنها صرفاً فایل index.html را بارگذاری میکنند که شامل همه فایلهای CSS و جاوا اسکریپت ضروری است. کل اپلیکیشن و هر مورد مرتبط با فریمورک در همین فایلهای جاوا اسکریپت قرار دارد. به محض این که فایل index.html بارگذاری شود، فایلهای جاوا اسکریپت در مرورگر رندر میشوند و فریمورک انگولار آغاز به کار کرده و عملیاتی میشود.
پروژه نمونه
در این بخش یک پروژه نمونه برای نمایش چهار روش مختلف ناوبری در اپلیکیشن انگولار معرفی میکنیم.
این پروژه (+) را میتوانید به صورت زیر کلون کرده و روی سیستم لوکال خود اجرا کنید:
// clone the project git clone https://github.com/bbachi/angular-navigate-external.git // install and run npm install npm start
جابجایی با شیء Window
شیء Window یک شیء سراسری و نماینده پنجره باز مرورگر است. همه تابعها و متغیرهای سراسری در واقع مشخصههای شیء Window هستند. تابعهای سراسری به متدهای Window و متغیرهای سراسری به مشخصههای شیء Window تبدیل میشوند. امکان دسترسی به سند با استفاده از Window به صورت زیر وجود دارد:
حتی میتوان به URL مرورگر در شیء window.location به صورت زیر دسترسی یافت:
در ادامه یک کامپوننت با استفاده از دستور ng g c windowobj میسازیم و کدهای زیر را در آن قرار میدهیم:
فایل windowobj.component.css
فایل windowobj.component.html
فایل windowobj.component.ts
شکل ظاهری این کامپوننت به صورت زیر است و زمانی که روی دکمه کلیک کنیم به صفحه اصلی وبسایت گوگل هدایت میشویم:
جابجایی با تگ href
این سادهترین روش برای جابجایی محسوب میشود. تگ <a> نماینده یک هایپرلینک به صفحه دیگر است. خصوصیت href نشانی مقصد را نشان میدهد. با استفاده از دستور ng g c withhref کامپوننت را میسازیم و فایلهای زیر را در آن قرار میدهیم:
فایل withhref.component.css
فایل withhref.component.html
شکل ظاهری این کامپوننت در مرورگر به صورت زیر است و زمانی که روی لینک کلیک کنیم به صفحه اصلی وبسایت گوگل هدایت میشویم:
جابجایی با Resolver
دو روش قبلی که بررسی کردیم، پیش از هدایت کاربر به وبسایت بیرونی، هیچ چیزی را بررسی نمیکردند. برای نمونه مواردی مانند مجوز یا دسترسی کاربر بررسی نمیشوند. با استفاده از Resolver میتوان پیش از ارسال درخواست ناوبری آن را اعتبارسنجی کرد.
ابتدا باید Resolver را تعریف کنیم و سپس آن را در فایل Resolver بگنجانیم:
فایل app.module.ts
فایل app.resolver.ts
باید resolver را در فایل app-routing.module.ts تعریف کنیم:
در نهایت فایلهای کامپوننت ما به شرح زیر هستند:
فایل withresolver.component.html
فایل withresolver.component.ts
شکل کلی این کامپوننت در مرورگر به صورت زیر است و زمانی که کاربر روی دکمه کلیک کند، به resolver میرود و سپس کاربر را ریدایرکت میکند:
جابجایی با Jquery
همه روشهای قبلی که بحث شدند، در واقع درخواستهای Get هستند. معنی آن این است که نمیتوان دادهای زیادی به مقصد ارسال کرد. امکان ارسال مواردی با پارامترهای query وجود دارد اما مقدار دادههایی که ارسال میشوند محدود هستند و هیچ نوع امنیتی نیز ندارند.
در این وضیعت اگر بخواهیم به یک وبسایت بیرونی برویم و همراه با این جابجایی مقداری داده با خود ببریم و نخواهیم از پارامترهای query استفاده کنیم، سادهترین راه حل استفاده از jquery است. ابتدا باید jquery را با دستور زیر نصب کنیم:
npm install jQuery –save
سپس خط زیر را در بخش اسکریپتهای فایل angular.json مینویسیم:
همچنین باید jquery را به صورت یک متغیر سراسری اعلان کرده و از آن به روش معمول در کامپوننت استفاده کنیم. فایل component.ts به صورت زیر است:
فرم تعریف شده در فایل HTML به صورت زیر است. به id-های فرم و شیوه تنظیم دادهها با jQuery برای value1 و value2 دقت کنید.
فایل withjquery.component.html
نمایش آن در مرورگر به صورت زیر است و زمانی که روی دکمه کلیک کنید، Jquery فرم را با همه دادههای آن به URL شکل someform.htm تحویل میدهد.
با استفاده از ابزارهای توسعهدهنده (DevTools) مرورگر میتوانیم ببینیم که فرم و دادهها تحویل میشوند. حتی با این که URL ساختگی است، میتوانید عملکرد آن را بررسی کنید:
جمعبندی
در این بخش مواردی که در این مقاله مطرح شد را جمعبندی میکنیم.
- اپلیکیشنهای تکصفحهای فایل index و همه فایلهای ضروری CSS و جاوا اسکریپت را در آغاز بارگذاری دانلود میکنند.
- برخی اوقات باید از یک اپلیکیشن تکصفحهای به وبسایت دیگری برویم. برای نمونه فرض کنید میخواهیم به سایت پرداخت برویم و بازگردیم.
- چهار روش برای ناوبری به وبسایت خارجی وجود دارد که شامل استفاده از تگ href، شیء Window، resolver و تحویل فرم Jquery هستند.
- روشهای href و window روشهای چندان سادهای برای اعتبارسنجی درخواست کاربر پیش از ناوبری محسوب نمیشوند.
- در انگولار میتوان از resolver برای اعتبارسنجی استفاده کرد.
- تحویل فرم jQuery برای ارسال دادهها روشی آسان است.
سخن پایانی
ناوبری در اپلیکیشن انگولار به یک وبسایت بیرونی امری کاملاً رایج است. شما میتوانید هر یک از روشهای چهارگانهای که در این راهنما معرفی کردیم را به این منظور انتخاب کرده و بسته به نیازتان مورد استفاده قرار دهید. اگر یک درخواست Get بدون دادههای فرم است میتوانید هر یک از سه روش href ،window و resolver را انتخاب کنید، اما اگر میخواهید حجم زیادی از دادهها را نیز همراه با ناوبری حمل کنید، بهتر است از jQuery بهره بگیرید.
اگر این مطلب برای شما مفید بوده است آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای JavaScript (جاوا اسکریپت)
- مجموعه آموزشهای برنامهنویسی
- آموزش مقدماتی AngularJS برای ساخت اپلیکیشنهای تکصفحهای
- Lazy Loading در انگولار — به زبان ساده
- ۱۰ قابلیت مفید انگولار که احتمالاً از وجودشان اطلاع ندارید — راهنمای کاربردی
==