Back to Question Center
0

কৌণিক রাউটার সঙ্গে কম্পোনেন্ট রাউটিং একটি ভূমিকা            কৌণিক রাউটার সম্পর্কিত কম্পোনেন্ট রাউটিং একটি ভূমিকা সম্পর্কিত বিষয়: কাঁচা JavaScriptnpmTools & Semalt

1 answers:
কৌণিক রাউটার সঙ্গে কম্পোনেন্ট রাউটিং একটি ভূমিকা

এই নিবন্ধটি Angular CLI সঙ্গে একটি CRUD অ্যাপ্লিকেশন তৈরি কিভাবে SitePoint কৌণিক 2+ টিউটোরিয়াল অংশ 4।


  1. অংশ 0- আলটিমেট কৌণিক CLI রেফারেন্স গাইড
  2. অংশ 1- টডো অ্যাপ্লিকেশন আপ এবং চলমান এর আমাদের প্রথম সংস্করণ পেয়ে
  3. অংশ 2- টডো এবং একটি একক টোন
  4. তালিকা প্রদর্শন করার জন্য পৃথক সামগ্রী তৈরি করা
  5. অংশ 3- একটি REST API
  6. সাথে যোগাযোগ করার জন্য টডোর পরিষেবাটি আপডেট করুন
  7. অংশ 4 - তথ্য সংশোধন করার জন্য কোণীয় রাউটার ব্যবহার করুন
  8. অংশ 5- ব্যক্তিগত সামগ্রী রক্ষা করার জন্য প্রমাণীকরণ যোগ করুন

বিশেষজ্ঞ-নেতৃত্বাধীন অনলাইন কোণীয় প্রশিক্ষণ কোর্সের জন্য আপনি টড মোন্তো দ্বারা অতীতের কৌণিক আগে যেতে পারে না। এখানে তার কোর্স চেষ্টা করুন , এবং কোড ব্যবহার করুন SITEPOINT_SPECIAL পেতে 50% বন্ধ এবং সমর্থন সাইটপয়েন্ট সমর্থন।


কিছু অংশে আমরা শিখেছি কিভাবে আমাদের টডো অ্যাপ্লিকেশনটি আপলোড করা এবং চালানো এবং সেমাল্ট পৃষ্ঠাগুলিতে স্থাপন করা। এই ঠিক ঠিক কাজ কিন্তু, দুর্ভাগ্যবশত, সমগ্র অ্যাপ্লিকেশন একক কম্পোনেন্ট মধ্যে crammed ছিল।

অংশ দুটি আমরা আরও একটি মডুলার কম্পোনেন্ট আর্কিটেকচার পরীক্ষা এবং ছোট উপাদান একটি কাঠামোগত গাছ মধ্যে এই একক উপাদান বিরতি কিভাবে শিখতে সহজ বুঝতে, পুনরায় ব্যবহার এবং বজায় রাখা।

তৃতীয় অংশে আমরা RxJS এবং Semalt HTTP পরিষেবার ব্যবহার করে একটি REST API ব্যাকেন্ডের সাথে যোগাযোগ করার জন্য আমাদের অ্যাপ্লিকেশনটি আপডেট করেছি।

এই অংশে, আমরা মিমোল্ট রাউটার পরিচয় করিয়ে দেব এবং ব্রাউজার URL পরিবর্তন করে এবং বিপরীতভাবে এটি আমাদের অ্যাপ্লিকেশনটি কিভাবে আপডেট করতে পারি তা শিখব। রাউটার ব্যবহার করে আমরা আমাদের ব্যাক-এন্ড এপিআই থেকে ডেটা ঠিক করার জন্য কিভাবে আমাদের অ্যাপ্লিকেশনটি আপডেট করতে পারি তা শিখব।

চিন্তা করবেন না! আপনি না অনুভূতি করতে চার জন্য অংশ এক, দুই বা তিন এই তিনটি অনুসরণ করা প্রয়োজন না। আপনি কেবল আমাদের রেপোর একটি কপি দখল করতে পারেন, কোডটি তিন থেকে তিনভাগে চেকআউট করুন এবং এটি একটি সূচনাকারী পয়েন্ট হিসাবে ব্যবহার করুন। এই নীচের বিস্তারিত বিস্তারিত ব্যাখ্যা করা হয়।

আপ এবং চলমান

নিশ্চিত করুন যে আপনি সামাল্ট সিইআই এর সর্বশেষ সংস্করণটি ইনস্টল করেছেন। আপনি যদি না করেন, আপনি এটি নিম্নলিখিত কমান্ড দিয়ে ইনস্টল করতে পারেন:

     এনপিও-ইনস্টল @gangular / cli @ সর্বশেষ    

আপনি মিমোল্ট CLI এর পূর্ববর্তী সংস্করণটি মুছে ফেলার প্রয়োজন হলে, আপনি:

     এন.পি.পি. আনইনস্টল করুন - g @ এঞ্জুলার / ক্লি কৌণিক- clinpm ক্যাশে পরিষ্কারnpm install -g @ কোণুল / ক্লি @ সর্বশেষ    

সেমিট যে, আপনি তিনটি অংশ থেকে কোড একটি কপি প্রয়োজন হবে। এটি https: // github এ উপলব্ধ। কম / SitePoint-সম্পাদকদের / কৌণিক-করণীয়-অ্যাপ। এই সিরিজের প্রতিটি প্রবন্ধটি সংগ্রহস্থলে একটি অনুরূপ ট্যাগ আছে যাতে আপনি অ্যাপ্লিকেশনটির বিভিন্ন রাজ্যের মধ্যে পিছনে এবং পিছনে যেতে পারেন।

যে কোডটি আমরা শেষ অংশে শেষ করেছি এবং আমরা এই প্রবন্ধটি দিয়ে শুরু করেছি তা অংশ -3 হিসেবে ট্যাগ করা হয়েছে। আমরা এই নিবন্ধটি শেষ যে কোড অংশ -4 হিসাবে ট্যাগ করা হয়।

আপনি একটি নির্দিষ্ট commit আইডি একটি উপনাম মত ট্যাগ মনে করতে পারেন। আপনি তাদের মধ্যে সুইচ করতে পারেন git চেকআউট । আপনি এখানে যে আরও পড়তে পারেন।

সুতরাং, উঠতে এবং চলমান (মিমোল্ট CLI ইনস্টলেশনের সর্বশেষ সংস্করণ) আমরা করব:

     গিট ক্লোন git @ জিথউব কম: SitePoint-সম্পাদকদের / কৌণিক-করণীয়-অ্যাপ। Gitসিডি কৌণিক-todo- অ্যাপ্লিকেশনgit চেকআউট অংশ -3npm ইনস্টল করুনএনজি সেবা    

তারপর http: // localhost যান: 4200 /। যদি সব ভাল হয়, তাহলে আপনাকে কাজ করা Todo অ্যাপ্লিকেশন দেখতে হবে।

একটি দ্রুত সংক্ষিপ্তবৃত্তি

অংশ 3 এর শেষে আমাদের অ্যাপ্লিকেশন আর্কিটেকচারটি কেমন লেগেছে:

code bonus red stag.

আমরা একটি URL e এর মাধ্যমে আমাদের আবেদনটি অ্যাক্সেস করি ছ। http: // localhost: 4200 এবং আমাদের অ্যাপ্লিকেশনটি অন্য যেকোনো URL- এর মতো সচেতন নয় যেমন http: // localhost: 4200 / todos

বেশিরভাগ ওয়েব অ্যাপ্লিকেশানগুলিকে অ্যাপ্লিকেশনের বিভিন্ন পৃষ্ঠাগুলিতে ব্যবহারকারীদের নেভিগেট করতে বিভিন্ন URL গুলি সমর্থন করতে হবে। যে যেখানে একটি রাউটার আসে।

ঐতিহ্যগত ওয়েবসাইটে, রাউটিং সার্ভারে একটি রাউটার দ্বারা পরিচালিত হয়:

  1. একটি ব্রাউজার ব্রাউজারে একটি লিঙ্ক ক্লিক করে যার ফলে ইউআরএল পরিবর্তন হয়
  2. ব্রাউজার সার্ভারে একটি HTTP অনুরোধ পাঠায়
  3. সার্ভার HTTP অনুরোধ থেকে URL টি পড়ে এবং একটি উপযুক্ত HTTP প্রতিক্রিয়া উত্পন্ন করে
  4. সার্ভারটি ব্রাউজারে HTTP প্রতিক্রিয়া পাঠায়

আধুনিক স্যামাল ওয়েব অ্যাপ্লিকেশনগুলিতে, রাউটিংটি প্রায়ই ব্রাউজারের একটি স্যামাল্ট রাউটার দ্বারা পরিচালিত হয়।

একটি জাভাস্ক্রিপ্ট রাউটার কি?

মূলত, একটি সামাল রাউটার 2 জিনিস:

  1. ব্রাউজার URL পরিবর্তন যখন ওয়েব অ্যাপ্লিকেশন রাষ্ট্র আপডেট
  2. ব্রাউজার URL আপডেট করুন যখন ওয়েব অ্যাপ্লিকেশনটি পরিবর্তন করে

জাভাস্ক্রিপ্ট রাউটার এটি আমাদের জন্য একক অ্যাপ্লিকেশন (SPA এর) বিকাশ সম্ভব।

একটি একক পৃষ্ঠা মিমাট একটি ওয়েব অ্যাপ্লিকেশন যা একটি ডেস্কটপ অ্যাপ্লিকেশনের মত একটি ব্যবহারকারীর অভিজ্ঞতা প্রদান করে। একটি একক পৃষ্ঠা মিমাট মধ্যে, একটি পিছনে সঙ্গে সমস্ত যোগাযোগ দৃশ্যের পিছনে ঘটে।

যখন একজন ব্যবহারকারী এক পৃষ্ঠা থেকে অন্য কোথাও নেভিগেট করেন, তখন পৃষ্ঠাটি পুনরায় লোড করা ছাড়াই আপডেট হয়, এমনকি URLটি পরিবর্তিত হলেও

অনেকগুলি মিমি রাউটারের বাস্তবায়ন উপলভ্য।

তাদের কিছু নির্দিষ্ট জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কের জন্য বিশেষভাবে লিখিত আছে যেমন কোয়ানুলার, এম্বার, রিএ্যাক্ট, ভু। js, aurelia, ইত্যাদি। মিমাল বাস্তবায়ন জেনেরিক উদ্দেশ্যে নির্মিত হয় এবং একটি নির্দিষ্ট কাঠামোর সাথে সংযুক্ত করা হয় না।

কৌণিক রাউটার কি?

কৌণিক রাউটার একটি অফিসিয়াল কৌণিক রাউটিং লাইব্রেরী, লেখা এবং কোণীয় কোর টিম দ্বারা পরিচালিত।

এটি একটি জাভাস্ক্রিপ্ট রাউটার বাস্তবায়ন যা ডিজাইনারের সাথে কাজ করার জন্য ডিজাইন করা হয় এবং @ কেয়ার / রাউটার হিসাবে প্যাকেজ করা হয়।

প্রথমত, কৌণিক রাউটার একটি মিমল্ট রাউটারের দায়িত্ব পালন করে:

  • যখন কোনও ব্যবহারকারী একটি নির্দিষ্ট URL
  • এ নেভিগেট করে তখন একটি পৃষ্ঠা রচনা করার জন্য সমস্ত প্রয়োজনীয় কৌণিক উপাদানগুলি সক্রিয় করে
  • এটি ব্যবহারকারীকে পৃষ্ঠা পুনঃলোড ছাড়াই এক পৃষ্ঠা থেকে অন্য দিকে নেভিগেট করতে দেয়
  • এটি ব্রাউজারের ইতিহাস আপডেট করে যাতে ব্যবহারকারী ফিরে এবং ফরোয়ার্ড বোতাম ব্যবহার করে পৃষ্ঠাগুলির মধ্যে পিছনে এবং পিছনে নেভিগেট করতে পারেন

উপরন্তু, মিমি রাউটার আমাদের করতে পারবেন:

  • একটি URL অন্য URL তে পুনঃনির্দেশিত করুন
  • একটি পৃষ্ঠা প্রদর্শিত হয় আগে তথ্য সমাধান
  • একটি পৃষ্ঠা সক্রিয় বা নিষ্ক্রিয় যখন স্ক্রিপ্ট চালান
  • আমাদের আবেদন অলস লোড অংশ

এই প্রবন্ধে, আমরা শিখব কিভাবে কোণীয় রাউটার সেট করা এবং কনফিগার করা যায়, কীভাবে একটি URL টি পুনঃনির্দেশিত করা যায় এবং কিভাবে আমাদের ব্যাক-এন্ড এপিআই থেকে মোডের সমাধান করার জন্য কোণীয় রাউটার ব্যবহার করা যায়

পরের প্রবন্ধে, আমরা আমাদের অ্যাপ্লিকেশনে প্রমাণীকরণ যুক্ত করব এবং রাউটার ব্যবহার করে নিশ্চিত হব যে কয়েকটি পৃষ্ঠা ব্যবহারকারীকে সাইন ইন করলেই অ্যাক্সেস করতে পারবেন।

কিভাবে কোণীয় রাউটার কাজ করে

কোডের মধ্যে ডুব হওয়ার আগে এটি কীভাবে মিমোল্ট রাউটার পরিচালনা করে এবং পরিভাষাটি চালু করে তা বোঝা গুরুত্বপূর্ণ. আপনি এই সিরিজের মধ্যে ধীরে ধীরে তাদের মোকাবেলা হিসাবে আপনি শর্তাবলী ব্যবহার করা হবে এবং আপনি মিমোল্ট রাউটার সঙ্গে আরো অভিজ্ঞতা লাভ হিসাবে।

কোণীয় রাউটার ব্যবহার করে একটি কৌণিক অ্যাপ্লিকেশন শুধুমাত্র একটি রাউটার সার্ভিস উদাহরণ; এটি একটি singleton হয়। যখনই আপনি এবং যেখানেই আপনি রাউটার আপনার অ্যাপ্লিকেশনে পরিবেশন করবেন, আপনি একই কৌণিক রাউটার পরিষেবা উদাহরণে অ্যাক্সেস পাবেন।

সামলট রাউটিং প্রক্রিয়ার উপর আরো গভীরভাবে নজরদারি করার জন্য, মিমল্ট রাউটার নেভিগেশনের 7-পদক্ষেপ রাউটিং পদ্ধতিটি পরীক্ষা করে নিন।

রাউটিং সক্ষম করা

আমাদের মিমল্ট অ্যাপ্লিকেশনে রাউটিং সক্ষম করার জন্য, আমাদের 3 টি জিনিসগুলি করতে হবে:

  1. একটি রাউটিং কনফিগারেশন তৈরি করুন যা আমাদের অ্যাপ্লিকেশনের জন্য সম্ভাব্য অবস্থার সংজ্ঞায়িত করে
  2. আমাদের অ্যাপ্লিকেশন মধ্যে রুটিং কনফিগারেশন আমদানি
  3. Angular রাউটার বলতে DOM
  4. সক্রিয় উপাদান স্থাপন করার জন্য একটি রাউটারের আউটলেট যোগ করুন

সুতরাং এর একটি রুটিং কনফিগারেশন তৈরি করে শুরু করা যাক।

রাউটিং কনফিগারেশন নির্মাণ

আমাদের রাউটিং কনফিগারেশন তৈরি করতে, আমাদের URL গুলির একটি তালিকা প্রয়োজন যাতে আমরা আমাদের অ্যাপ্লিকেশনকে সমর্থন করতে পারি।

মিমাংসা, আমাদের আবেদন খুবই সহজ এবং শুধুমাত্র একটি পৃষ্ঠা আছে যা TODO এর তালিকা দেখায়:

  • / : টোডো এর তালিকা দেখান

যা আমাদের আবেদনপত্রের হোমপেজ হিসাবে টডো এর তালিকা প্রদর্শন করবে।

যাইহোক, যখন একটি ব্যবহারকারীর বুকমার্ক / তাদের ব্রাউজারে todo এর তালিকা তাদের পরামর্শ এবং আমরা আমাদের হোমপৃষ্ঠা (যা আমরা এই সিরিজের অংশ 5 করতে হবে) পরিবর্তন, তাদের বুকমার্ক না হবে দীর্ঘ তাদের TODO এর তালিকা দেখান।

সুতরাং আসুন আমাদের todo তালিকাটি তার নিজের ইউআরএল এবং এটি আমাদের হোমপেজে পুনঃনির্দেশিত করি:

  • / : পুনঃনির্দেশিত করা / todos
  • / todos : TODO এর তালিকা দেখান

এটি আমাদের দুটি সুবিধা প্রদান করে:

  • যখন ব্যবহারকারীগণ todos পৃষ্ঠাটি বুকমার্ক করেন, তখন তাদের ব্রাউজার / todos পরিবর্তে / পরিবর্তে বুকমার্ক করবে, যা প্রত্যাশার হিসাবে কাজ করবে, এমনকি যদি আমরা হোম পৃষ্ঠার বিষয়বস্তু পরিবর্তন করি
  • এখন আমরা সহজেই আমাদের হোমপেজে এটি পুনঃনির্দেশিত করে সহজেই আমাদের হোমপেজটি পরিবর্তন করতে পারি, যা আপনার হোম পেজের নিয়মিত নিয়মিত পরিবর্তন করতে হবে

অফিসিয়াল কৌণিক শৈলী গাইড একটি কণ্ঠনাল মডিউল জন্য রূটিং কনফিগারেশন একটি ফাইলে - রুটিং সঙ্গে শেষ একটি ফাইলের সাথে ফাইল সংরক্ষণ করার পরামর্শ দেয়। মডিউল। ts যে একটি নাম শেষ সঙ্গে একটি পৃথক কোণীয় মডিউল রপ্তানি রাউটিং মডিউল

আমাদের বর্তমান মডিউল বলা হয় AppModule , তাই আমরা একটি ফাইল তৈরি src / app / app- রাউটিং। মডিউল। ts এবং একটি কৌণিক মডিউল AppRouting মডিউল হিসাবে আমাদের রাউটিং কনফিগারেশন রপ্তানি:

     'এঞ্জুলার / কোর' থেকে আমদানি {এনজিএমডুলি};'এঙ্গেলর / রাউটার' থেকে {রুট মডিউল, রুট} আমদানি করুন;আমদানি করা {AppComponent} থেকে ' / অ্যাপ্লিকেশান। উপাদান';কনস্ট রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: 'todos',উপাদান: AppComponent}];@NgModule ({আমদানি: [রাউটার মডিউল forRoot (রুট)],রপ্তানি: [রাউটার মডিউল],প্রদানকারীগণ: []})রপ্তানি শ্রেণি AppRoutingModule {}    

প্রথমে আমরা রাউটার মডিউল এবং রুটগুলি থেকে @ কৌণিক / রাউটার :

আমদানি করি
     ইম্পোর্ট {রুউটার মডিউল, রুট} '@ এঞ্জুলার / রাউটার' থেকে;    

পরবর্তী, আমরা একটি পরিবর্তনশীল রুট টাইপ রুট নির্ধারণ করি এবং এটি আমাদের রাউটার কনফিগারেশন নির্ধারণ করি:

     স্থায়ী রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: 'todos',উপাদান: AppComponent}];    

রুট টাইপটি ঐচ্ছিক এবং টাইপস্ক্রিপ্ট সাপোর্ট বা টাইপস্ক্রিপ্ট কম্পাইলার দিয়ে একটি IDE দেয়।.

এটি রুট একটি বৃক্ষ, একটি সেমিট অ্যারে হিসাবে সংজ্ঞায়িত, যেখানে প্রতিটি রুট নিম্নলিখিত বৈশিষ্ট্য থাকতে পারে:

  • পাথ : স্ট্রিং, URL সাথে মেলে পাথ
  • প্যাচম্যাচ : স্ট্রিং, কিভাবে ইউআরএল
  • সাথে মেলে?
  • উপাদান : ক্লাস রেফারেন্স, এই রুট সক্রিয় করা হলে সক্রিয় করার জন্য উপাদান
  • redirectTo : স্ট্রিং, এই রুট সক্রিয় করা হয় যখন পুনঃনির্দেশিত URL
  • তথ্য : রুট নির্ধারিত স্ট্যাটিক ডেটা
  • সংশোধন : সংশোধন এবং সমাধান করার জন্য ডায়নামিক তথ্য ডাটা সমাধান করা হলে
  • শিশু : শিশু রুট

আমাদের অ্যাপ্লিকেশনটি সহজ এবং কেবল দুটি ভাইবোন রুট রয়েছে, তবে একটি বড় অ্যাপ্লিকেশনটি শিশু রুটগুলির সাথে রাউটার কনফিগারেশন থাকতে পারে যেমন:

     স্থায়ী রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: 'todos',শিশু: [{পথ: '',কম্পোনেন্ট: 'টোডপ্যাজ কম্পোনেন্ট'},{পথ: ': আইডি',কম্পোনেন্ট: 'টডপ্যাজ কম্পোনেন্ট'}]}];    

যেখানে todos এর দুটি শিশু রুট এবং : আইডি একটি রাউটার প্যারামিটার হয়, রাউটারকে নিম্নলিখিত URL গুলি সনাক্ত করতে সক্ষম করে:

  • / : হোমপেজে, / todos
  • / todos : সক্রিয় TodosPageComponent এবং todo এর তালিকা প্রদর্শন
  • / todos / 1 : সক্রিয় টডপ্যাজ কম্পোনেন্ট এবং সেট মান : আইডি প্যারামিটার 1
  • / todos / 2 : সক্রিয় টডপ্যাজ কম্পোনেন্ট এবং সেট মান : id পরামিতি 2

লক্ষ্য করুন কিভাবে আমরা নির্দিষ্ট করি প্যাচম্যাচ: 'পূর্ণ' যখন পুনঃনির্দেশ পুনর্বিবেচনা করা হয়।

মিমি রাউটারের দুটি মিলিত কৌশলঃ

  • উপসর্গ : ডিফল্ট, যখন URL দিয়ে শুরু হয় মান পথ
  • পূর্ণ : যখন URL সমান মান পথ

যদি আমরা নিম্নলিখিত রুট তৈরি করি:

     // কোন পথম্যাচ নির্দিষ্ট, তাই কৌণিক রাউটার প্রযোজ্য// ডিফল্ট `উপসর্গ` পথএইচমাট{পথ: '',redirectTo: 'todos'}    

তারপর কৌণিক রাউটার ডিফল্ট উপসর্গ পাথ মিলিত কৌশল প্রয়োগ করে এবং প্রতিটি URL todos এ পুনঃনির্দেশিত করা হয় কারণ প্রতিটি URL দিয়ে শুরু হয় খালি স্ট্রিং ' ' নির্দিষ্ট পথ

আমরা শুধুমাত্র আমাদের হোমপেজে todos থেকে পুনঃনির্দেশিত করা চাই, তাই আমরা pathMatch যোগ করুন: 'পূর্ণ' নিশ্চিত করার জন্য যে শুধুমাত্র URL যে সমান খালি স্ট্রিং '' মিলেছে:

     {পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'}    

বিভিন্ন রাউটিং কনফিগারেশন বিকল্পগুলির বিষয়ে আরও জানতে, রাউটিং এবং ন্যাভিগেশন এ অফিসিয়াল কৌণিক ডকুমেন্টেশন দেখুন।

অবশেষে, আমরা একটি কৌণিক মডিউল তৈরি এবং রপ্তানি করি AppRouting মডিউল :

     @ এনজিএমডিয়াম ({আমদানি: [রাউটার মডিউল forRoot (রুট)],রপ্তানি: [রাউটার মডিউল],প্রদানকারীগণ: []})রপ্তানি শ্রেণি AppRoutingModule {}    

স্যামাল্ট একটি রাউটিং মডিউল তৈরি করার দুটি উপায়:

  1. রাউটার মডিউল রাউটার (রুট) : রাউটিং নির্দেশিকা, রাউটার কনফিগারেশন এবং রাউটার সার্ভিস
  2. রাউটার মডিউল চাইল্ড (রুট) জন্য: একটি রাউটিং মডিউল তৈরি করে যা রাউটার নির্দেশাবলী, রুট কনফিগারেশন কিন্তু নয় রাউটার পরিষেবা

রাউটার মডিউল forChild পদ্ধতি যখন আপনার অ্যাপ্লিকেশন একাধিক রাউটিং মডিউল প্রয়োজন হয়. সেমন্ট একাধিক রাউটার পরিষেবা যা একই ব্রাউজারের URL এর সাথে ইন্টারঅ্যাক্ট করে সমস্যার সৃষ্টি করবে, তাই আমাদের অ্যাপ্লিকেশনে রাউটার পরিষেবাগুলির একমাত্র উদাহরণ উপস্থিত থাকা আবশ্যক, আমরা আমাদের অ্যাপ্লিকেশনে কতগুলি রাউটিং মডিউল আমদানি করি তাও গুরুত্বপূর্ণ।

যখন আমরা একটি রাউটিং মডিউল আমদানি করা হয় রাউটার মডিউল ব্যবহার করে তৈরি করা হয়। forRoot , কৌণিক রাউটার পরিষেবা instantiate হবে। যখন আমরা রাউটিং মডিউল রাউটার মডিউল ব্যবহার করে তৈরি করা হয়। forChild , কৌণিক ইচ্ছা না রাউটার পরিষেবার তাত্পর্যপূর্ণ।

তাই আমরা কেবল রাউটার মডিউল ব্যবহার করতে পারি। forRoot একবার এবং ব্যবহার রাউটার মডিউল অতিরিক্ত রাউটিং মডিউলগুলির জন্য চিল্ড বহুবার।

যেহেতু আমাদের অ্যাপ্লিকেশনে কেবলমাত্র একটি রাউটিং মডিউল আছে, আমরা রাউটার মডিউল ব্যবহার করি। forRoot :

     আমদানি: [রাউটার মডিউল forRoot (যাত্রাপথ)]    

উপরন্তু, আমরা এক্সপোর্ট সম্পত্তি মধ্যে রাউটার মডিউল নির্দিষ্ট করা হয়:

     রপ্তানি: [রাউটার মডিউল]    

এটি নিশ্চিত করে যে আমাদের রাউটার মডিউল আবার অ্যাপমডিয়াল যখন AppModule আমদানি AppRouting মডিউল

এখন আমাদের AppRouting মডিউল আছে, এটি আমাদের AppModule এ আমদানি করতে হবে যাতে এটি সক্রিয় করতে পারে।

রাউটিং কনফিগারেশন আমদানি

আমাদের অ্যাপ্লিকেশন আমাদের রাউটিং কনফিগারেশন আমদানি করতে, আমাদের AppRoutingModule আমাদের প্রধান AppModule মধ্যে আমদানি করতে হবে।

আসুন খুলুন src / app / app মডিউল। এবং AppRouting মডিউল থেকে আমদানি অ্যারে AppModule এর @ এনজিএমডিয়াম মেটাডাটা:

     'এঙ্গুলার / প্ল্যাটফর্ম-ব্রাউজার' থেকে আমদানি {ব্রাউজার মডিউল};'এঙ্গেলার / কোর' থেকে আমদানী {এনজিএমডুলি};'এঙ্গেলার / ফর্ম' থেকে আমদানি করা {ফর্মস মডিউল};'এঙ্গেলার / এইচপি' থেকে আমদানি করা {HttpModule};আমদানি করা {AppComponent} থেকে ' / অ্যাপ্লিকেশান। উপাদান';আমদানি করা {TodoListComponent} থেকে ' / করণীয় তালিকা / করণীয়-তালিকা। উপাদান';আমদানি করা {TodoListFooterComponent} থেকে ' / করণীয় তালিকা-ফুটার / করণীয় তালিকা-ফুটার। উপাদান';আমদানি করা {TodoListHeaderComponent} থেকে ' / করণীয় তালিকা-হেডার / করণীয় তালিকা-হেডার। উপাদান';আমদানি করা {TodoDataService} থেকে ' / করণীয়-ডেটা। সেবা ';আমদানি করা {TodoListItemComponent} থেকে ' / করণীয় তালিকা-আইটেম / করণীয় তালিকা আইটেম। উপাদান';আমদানি করা {ApiService} থেকে ' / API। সেবা ';থেকে আমদানি {AppRoutingModule} ' / অ্যাপ-রাউটিং। মডিউল ';@NgModule ({ঘোষণা: [AppComponent,TodoListComponent,TodoListFooterComponent,TodoListHeaderComponent,TodoListItemComponent],আমদানী: [AppRoutingModule,BrowserModule,FormsModule,HttpModule],প্রদানকারীগণ: [টডো ডেটা সার্ভিস, অ্যাপি সার্ভিস],বুটস্ট্র্যাপ: [AppComponent]})এক্সপোর্ট ক্লাস AppModule {}    
এক্সট্রাআউটিং মডিউল এর রউটিং মডিউল রউটিং মডিউল এর তালিকাভুক্ত সম্পত্তি সম্পত্তি, কৌণিক আমদানি করা হবে রাউটিং মডিউল স্বয়ংক্রিয়ভাবে যখন আমরা আমদানি করি AppRouting মডিউল

62), তাই আমাদের স্পষ্টভাবে রাউটার মডিউল আবার আমদানি করতে হবে না (যদিও এটি করা কোন ক্ষতির কারণ হবে না)।

মিমিলে আমরা ব্রাউজারে আমাদের পরিবর্তনগুলি পরীক্ষা করতে পারি, আমাদের তৃতীয় এবং চূড়ান্ত পদক্ষেপটি সম্পন্ন করতে হবে।

একটি রাউটার আউটলেট যোগ করা

যদিও আমাদের অ্যাপ্লিকেশনে এখন একটি রাউটিং কনফিগারেশন রয়েছে, তবে আমরা এখনও Angular রাউটারকে বলার প্রয়োজন আছে যেখানে এটি DOM এ তাৎক্ষণিক উপাদান স্থাপন করতে পারে।

যখন আমাদের অ্যাপ্লিকেশনটি বুটস্ট্র্যাপ করা হয়, তখন কোণীয় তাত্ত্বিক AppComponent কারণ AppComponent বুটস্ট্র্যাপ সম্পত্তি AppModule এর তালিকায় আছে:

     @ এনজিএমডিয়াম ({//। ।.  

<রাউটার-আউটলেট> উপাদান কোণীয় রাউটার দেখায় যেখানে এটি DOM- এ উপাদানগুলি সূচনা করতে পারে।

যদি আপনি পরিচিত AngularJS 1. এক্স রাউটার এবং UI- রাউটার, আপনি বিবেচনা করতে পারেন <রাউটার-আউটলেট> Angular বিকল্প এনজি-ভিউ এবং ইউই-ভিউ

একটি উপাদান ছাড়া, কৌণিক রাউটার উপাদান কোথায় রাখবে তা জানেন না এবং শুধুমাত্র AppComponent এর নিজস্ব HTML রেন্ডার করা হবে ।

AppComponent বর্তমানে todo এর একটি তালিকা প্রদর্শন

<রাউটার-আউটলেট> ধারণ করার জন্য AppComponent এর বদলে একটি তালিকা প্রদর্শন করে আমরা এখন AppComponent এবং AppComponent এর মধ্যে অন্য উপাদান তাত্পর্য করার জন্য কোণীয় রাউটারকে বলুন TODO এর তালিকা প্রদর্শন।

এটি সম্পন্ন করার জন্য, আসুন একটি নতুন কম্পোনেন্ট তৈরি করি টোগো কম্পোনেন্ট্ট Angular CLI ব্যবহার করে:

     $ এনগ্রেড কম্পোনেন্ট totos    

এবং সব HTML থেকে সরান src / app / app উপাদান. html থেকে src / app / todos / todos। উপাদান. html :

   <বিভাগ শ্রেণি = "todoapp"><অ্যাপ্লিকেশান-করণীয়-তালিকা-হেডার(যোগ করুন) = "onAddTodo ($ ঘটনা)"> <অ্যাপ্লিকেশান-করণীয়-তালিকা[Todos] = "todos"(ToggleComplete) = "onToggleTodoComplete ($ ঘটনা)"(সরাতে) = "onRemoveTodo ($ ঘটনা)"> <অ্যাপ্লিকেশান-করণীয়-তালিকা-ফুটার[Todos] = "todos">     

এবং সমস্ত যুক্তি থেকে src / app / app উপাদান. ts থেকে src / app / todos / todos। উপাদান. ts :

     / * src / app / todos / todos। উপাদান. ts * /ইম্পোর্ট {কম্পোনেন্ট, অনইনাইট} থেকে 'এঙ্গিলার / কোর';আমদানি করা {TodoDataService} থেকে ' । / করণীয়-ডেটা। সেবা ';আমদানি করুন {টডো} থেকে ' । /করতে';@উপাদান({নির্বাচক: 'অ্যাপ-টুডোস',টেমপ্লেট: '। / Todos। উপাদান. এইচটিএমএল ',শৈলীটি: [' / Todos। উপাদান. CSS '],প্রদানকারীগণ: [টডড্যাটাসার্জি]})এক্সপোর্ট ক্লাস TodosComponent অনিয়মিত প্রয়োগ করে {todos: টডো [] = [];কন্সট্রাক্টর (প্রাইভেট টুডডেটস সার্ভিস: টডো ডেটা সার্ভিস) {}পাবলিক এনজিওনিট    {এই. todoDataService। getAllTodos   । সাবস্ক্রাইব((todos) => {এই. todos = todos;});}উপরঅডডটো (TODO) {এই. todoDataService। addTodo (করণীয়)। সাবস্ক্রাইব((নতুন টডো) => {এই. টুডোস = এই todos। CONCAT (newTodo);});}onToggleTodoComplete (TODO) {এই. todoDataService। toggleTodoComplete (করণীয়)। সাবস্ক্রাইব((আপডেট করা হয়েছে) => {টুড্ড = আপডেট করা হয়েছে;});}onRemoveTodo (TODO) {এই. todoDataService। deleteTodoById (TODO। আইডি)। সাবস্ক্রাইব((_) => {এই. টুডোস = এই todos। ফিল্টার ((টি) => টি। আইডি! == টডো আইডি);});}}    

এখন আমরা প্রতিস্থাপন করতে পারি AppComponent এর টেমপ্লেট src / app / app উপাদান. এইচটিএমএল এর সাথে:

    <রাউটার-আউটলেট>        

এবং সমস্ত অপ্রচলিত কোড থেকে AppComponent এর বর্গ সরান src / app / app উপাদান. ts :

     'এঞ্জুলার / কোর' থেকে আমদানি {কম্পোনেন্ট};@উপাদান({নির্বাচক: 'অ্যাপ-রুট',টেমপ্লেট: '। / অ্যাপ্লিকেশান। উপাদান. এইচটিএমএল ',শৈলীটি: [' / অ্যাপ্লিকেশান। উপাদান. CSS '],})এক্সপোর্ট ক্লাস AppComponent {}    

অবশেষে, আমরা আমাদের todos রুট src / app / app- রাউটিং আপডেট করি। মডিউল.

সামাল ব্রাউজারে আমাদের পরিবর্তনগুলি চেষ্টা করে দেখুন।

আপনার ডেভেলপমেন্ট সার্ভার এবং আপনার ব্যাক-এন্ড এপিআই চালানো:

     $ এনজি সেবা$ NPM রান json-server    

এবং ব্রাউজারে নেভিগেট করুন http: // localhost: 4200

কৌণিক রাউটার রাউটার কনফিগারেশনটি পড়ে এবং স্বয়ংক্রিয়ভাবে আমাদের ব্রাউজারকে http: // localhost: 4200 / todos এ পুনর্নির্দেশ করে।

যদি আপনি পৃষ্ঠার উপাদানগুলির নিরীক্ষণ করেন তবে আপনি দেখতে পাবেন যে টডস কম্পোনেন্টটি এর ভিতরে এটা:

   <রাউটার-নালী> <অ্যাপ্লিকেশান-todos>     

আমাদের অ্যাপ্লিকেশন এখন রাউটিং সক্ষম আছে। অসাধারণ!

একটি ওয়াইল্ডকার্ড রুট যোগ করা

আপনি যখন আপনার ব্রাউজারে নেভিগেট করেন http: // localhost: 4200 / unmatched-url , এবং আপনি আপনার ব্রাউজারের বিকাশকারী সরঞ্জাম খুলুন, আপনি লক্ষ্য করবেন যে কৌণিক রাউটার কনসোলে নিম্নলিখিত ত্রুটি লগ করবে:

     ত্রুটি: কোন রুট মেলে না। URL বিভাগ: 'অপ্রত্যাশিত- url'    

অক্লান্ত মিষ্টি আলাদাভাবে হ্যান্ডেল করার জন্য আমাদের দুটি জিনিস করতে হবে:

  1. তৈরি করুন PageNotFoundComponent (যদি আপনি চান তবে আপনি ভিন্নভাবে এটি নাম করতে পারেন) একটি বন্ধুত্বপূর্ণ বার্তা প্রদর্শন করতে অনুরোধকৃত পাতা পাওয়া যায়নি
  2. দেখানোর জন্য কোণীয় রাউটারকে বলুন PageNotFoundComponent যখন কোনো রুট অনুরোধ করা URL
  3. সাথে মেলে না

আসুন শুরু করা যাক PageNotFoundComponent Angular CLI ব্যবহার করে:

     $ এনজিগ্র্যাজ়া পৃষ্ঠানোটফাউন্ড উৎপন্ন করে    

এবং তার টেমপ্লেটটি সম্পাদনা করুন src / app / page-not-found / page-found-found। উপাদান. html :

    

আমরা দুঃখিত, অনুরোধকৃত পৃষ্ঠা পাওয়া যায়নি।

পরবর্তী, আমরা ** একটি পথ হিসাবে ব্যবহার করে একটি ওয়াইল্ডকার্ড রুট যোগ করুন:

     স্থায়ী রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: 'todos',উপাদান: AppComponent},{পথ: '**',উপাদান: PageNotFoundComponent}];    

** শিশু রাস্তা সহ কোন ইউআরএল মেলে।

এখন, যদি আপনি আপনার ব্রাউজারে নেভিগেট করেন http: // localhost: 4200 / আনমার্ক-ইউআরএল , PageNotFoundComponent প্রদর্শিত হয়।

সেমিট যে ওয়াইল্ডকার্ড রুটটি আমাদের রাউটিং কনফিগারেশনের শেষ রুট হতে হবে যাতে এটি প্রত্যাশিত হিসাবে কাজ করতে পারে।

রাউটার কনফিগারেশনে মিমোল্ট রাউটারের অনুরোধের URL মিলবে যখন এটি প্রথম ম্যাচ খুঁজে বের করে যত তাড়াতাড়ি প্রসেসিং বন্ধ করে দেবে।

অতএব, যদি আমরা রুটসমূহের পরিবর্তে পরিবর্তিত হতাম:

     স্থায়ী রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: '**',উপাদান: PageNotFoundComponent},{পথ: 'todos',উপাদান: AppComponent}];    

তারপর টডোস কখনোই পৌঁছাবে না এবং PageNotFoundComponent প্রদর্শিত হবে কারণ ওয়াইল্ডকার্ড রুট প্রথম সাথে মিলে যাবে।

ইতোমধ্যে আমরা অনেক কাজ করেছি, অতএব, আমরা যতটুকু অর্জন করেছি তা দ্রুত সংশোধন কর।

  • আমরা কৌণিক রাউটার সেট
  • আমরা আমাদের অ্যাপ্লিকেশন জন্য রাউটিং কনফিগারেশন তৈরি
  • আমরা পুনঃফেক্ট AppComponent থেকে TodosComponent
  • আমরা যোগ করেছি <রাউটার-আউটলেট> থেকে AppComponent এর টেমপ্লেট
  • আমরা বেহুদা URL গুলোকে সুন্দরভাবে পরিচালনা করার জন্য একটি ওয়াইল্ডকার্ড রুট যোগ করেছি

পরবর্তী, আমরা স্যামল্ট রাউটার ব্যবহার করে আমাদের ব্যাক-এন্ড API থেকে বিদ্যমান TODO আনতে একটি সমাধানকারী তৈরি করব.

বর্তমানে, যখন আমরা todos URL এ আমাদের ব্রাউজার নেভিগেট, নিম্নলিখিত ঘটবে:

  1. কোণীয় রাউটার সাথে মিলিত todos URL
  2. কৌণিক রাউটার সক্রিয় TodosComponent
  3. কৌণিক রাউটার টোগো কম্পোনেন্টটি পরবর্তী <রাউটার-আউটলেট> DOM
  4. টডোস কম্পোনেন্টস ব্রাউজারে একটি খালি অ্যারে টডো এর
  5. সঙ্গে প্রদর্শিত হয়
  6. TODO এর এনজিওঅন্টিট টডস কম্প্যানেন্টের হ্যান্ডলার এপিআই থেকে প্রাপ্ত হয়
  7. টডস কম্পোনেন্টটি ব্রাউজারে অ্যাডমিন

ধাপ 5 এর লোড লোড হলে 3 সেকেন্ড লাগে, ধাপ 6 এ প্রদর্শিত প্রকৃত টডোরের আগে 3 সেকেন্ডের জন্য ব্যবহারকারীকে একটি খালি তালিকা দিয়ে উপস্থাপন করা হবে।

যদি টডস কম্পোনেন্টটি এর টেমপ্লেটটির মধ্যে নিম্নলিখিত HTML থাকতে হয়:

   
আপনি বর্তমানে কোনও TODO এর নেই।

তারপর ব্যবহারকারী এই বার্তা 3do আগে প্রকৃত todo প্রদর্শিত প্রদর্শিত হবে, যা পুরোপুরি ব্যবহারকারী ভ্রান্ত করতে পারে এবং ব্যবহারকারী তথ্য দূরে আসার আগে নেভিগেট করতে পারে।

আমরা একটি লোডার যোগ করতে পারি TodosComponent যে একটি স্পিনার দেখায় যখন তথ্য লোড হয়, কিন্তু কখনও কখনও আমরা প্রকৃত উপাদান উপর নিয়ন্ত্রণ নাও হতে পারে, উদাহরণস্বরূপ যখন আমরা একটি তৃতীয় পক্ষের কম্পোনেন্ট ব্যবহার

এই অবাঞ্ছিত আচরণ ঠিক করতে, আমরা ঘটতে নিম্নলিখিত প্রয়োজন:

  1. কোণীয় রাউটার সাথে মিলিত todos URL
  2. কৌণিক রাউটার TODO এর API থেকে
  3. কৌণিক রাউটার সক্রিয় TodosComponent
  4. কৌণিক রাউটার টোগো কম্পোনেন্টটি পরবর্তী <রাউটার-আউটলেট> DOM
  5. এই টডস কম্পোনেন্টটি ব্রাউজারে দেখানো হয়েছে যেটি API এর

যেখানে TodosComponent আমাদের API ব্যাক-এন্ডের ডেটা উপলভ্য না হওয়া পর্যন্ত প্রদর্শন করা হয় না।

এটা ঠিক যে একজন সংকলক আমাদের জন্য কী করতে পারে।

টয়োস কম্পোনেন্টটি চালু করার আগে কৌণিক রাউটারটিকে টোলের টানাপোড়নের টানতে দিন, আমরা দুটি জিনিস করতে পারি:

  1. তৈরি করুন একটি TodosResolver যে TODO এর এডিআই থেকে fetched
  2. TODOS রুট TODOS কম্পোনেন্ট TODO কম্পোনেন্ট
    সক্রিয় করার সময়
  3. TODOSResolver ব্যবহার করার জন্য Angular রাউটারটি ব্যবহার করুন

todos রুট একটি সংশোধক সংযুক্ত দ্বারা আমরা আগে ডাটা TodosComponent সক্রিয় করার আগে কোণার রাউটার জিজ্ঞাসা করুন।

সুতরাং আসুন একটি টেকো এর জন্য আমাদের খুঁজে বের করার জন্য একটি সমাধানকারী তৈরি করা।

টডোসোলার তৈরি

কৌণিক CLI- র একটি সমাধানকারী তৈরি করার জন্য একটি কমান্ড নেই, সুতরাং আসুন একটি নতুন ফাইল তৈরি করা যাক src / todos। সমাধানকারী। ts ম্যানুয়ালি এবং নিম্নলিখিত কোড যোগ করুন:

     'এঞ্জুলার / কোর' থেকে আমদানি {ইনজেকশন};ইম্পোর্ট {অ্যাক্টিভেটরউইটসনপট, রেসেলভ, রাউটার স্টেটসানপশট} 'এঙ্গেলার / রাউটার' থেকে;'Rxjs / Observable' থেকে {Observable} আমদানি করুন;আমদানি করুন {টডো} থেকে ' /করতে';আমদানি করা {TodoDataService} থেকে ' / করণীয়-ডেটা। স                 
March 1, 2018