আমি কৌনিক অ্যাপগুলির জন্য কীভাবে একটি গ্রন্থাগার তৈরি করব?

সম্পূর্ণ ধাপে ধাপে গাইড

অ্যাঙ্গুলার 6 প্রবর্তনের সাথে কৌণিকভাবে হাস্যকরভাবে সরল করা একটি বিষয় অ্যাংুলার লাইব্রেরি তৈরির ক্ষমতা। আপনি যদি আগে এটি ব্যবহার করে থাকেন তবে আপনি জানেন যে এটি কোনও সহজ কাজ ছিল না ...

এখনকার মতো প্রক্রিয়াটি কেমন? আসুন আমরা একটি সাধারণ দৃশ্য ধরে নিই: আমরা একটি লাইব্রেরি তৈরি করব যা একটি পরিষেবা, একটি উপাদান এবং কিছু ইন্টারফেস সরবরাহ করে।

আমরা এমন একটি বিষয় নিয়ে কাজ করব যা আমাদের হৃদয়ের খুব প্রিয়: টিভি শো। লাইব্রেরিটি tvmaze.com এপিআই সরবরাহিত ডেটা নিয়ে কাজ করে। এজন্য আমরা আমাদের লাইব্রেরিকে টিভিমাজে ডাকি।

1. লাইব্রেরি প্রকল্প তৈরি করুন

আমরা এনজি নিউ কমান্ড দিয়ে প্রাথমিক সেটআপ তৈরি করে যথারীতি শুরু করি:

এনজি নিউ লিব-ডেমো - প্রিফিক্স এলডি

কৌণিক সিএলআই এর 6 সংস্করণ সহ, কনফিগারেশন ফাইলের ফর্ম্যাটটি উল্লেখযোগ্যভাবে পরিবর্তিত হয়েছে। অ্যাঙ্গুলার.জসন এখন সম্ভবত বেশ কয়েকটি প্রকল্প সহ একটি তথাকথিত কাজের ক্ষেত্রকে উপস্থাপন করে। ডিফল্টরূপে, lib-demo এবং lib-demo-e2e প্রকল্পগুলি আমাদের জন্য উত্পন্ন হয় তবে আপনি "এনজি জেনারেট অ্যাপ্লিকেশন [mein-app-name]" কমান্ড দিয়ে আরও যোগ করতে পারেন।

অ্যাপ্লিকেশনটির পরিবর্তে আপনি যা তৈরি করতে পারেন তা একটি গ্রন্থাগার:

এনজি লাইব্রেরি টিভিমেজ তৈরি - প্রিফিক্স টিএম

এই কমান্ডের পতাকা হিসাবে, এই বিকল্পগুলির মধ্যে বেশ কয়েকটি রয়েছে তবে উপসর্গটি সেট আপ করা সর্বনিম্ন ন্যূনতম। আপনি যদি উপসর্গটি নির্বাচন না করেন তবে ডিফল্টরূপে lib- ব্যবহৃত হয়।

জেনারেট কমান্ডটি আমাদের অ্যাপে কিছু পরিবর্তন করেছে:

সর্বোপরি, একটি নতুন "প্রকল্পগুলি" ডিরেক্টরি তৈরি করা হয়েছিল যেখানে "টিভিমেজ" ফোল্ডারটি অবস্থিত। এই নতুন প্রকল্পটি আমাদের কৌনিক.জসন কনফিগারেশনেও উল্লেখ করা হয়েছে।

২. কিছু ইন্টারফেস সংজ্ঞায়িত করুন এবং সরবরাহ করুন

একটি এপিআই অনুরোধ এর মতো দেখাচ্ছে: https://api.tvmaze.com/shows/336। আপনি যদি লিঙ্কটি অনুসরণ করেন তবে দেখতে পাবেন যে ফিরে আসা জেসন বেশ জটিল। ইন্টারফেসগুলির পুনরায় ব্যবহারযোগ্য সেটটি সংজ্ঞায়িত করা এবং আমাদের লাইব্রেরি ব্যবহারকারীদের কাছে এগুলি উপলব্ধ করা ভাল ধারণা। পূর্বেরটি করার জন্য আপনি একটি দুর্দান্ত jsontots.com সরঞ্জাম ব্যবহার করতে পারেন:

কেবলমাত্র এপিআইয়ের প্রতিক্রিয়াটি অনুলিপি করুন, jsontots.com ওয়েবসাইটে বক্সে আটকান, এবং ভয়েলা! আপনার ইন্টারফেস আছে! BTW। আরও অনুরূপ টিপসের জন্য, আমার @ সালকো টুইটার অ্যাকাউন্টটি অনুসরণ করুন :-)

আসুন সমস্ত ইন্টারফেসের সাথে একটি ফাইল প্রকল্প / টিভিমাজে / এসসিআর / লিব / টিভিমাজ.মোডেলস.টিস তৈরি করি। তাদের মধ্যে কিছুগুলি নিবিড়ভাবে সম্পর্কিত, সুতরাং তাদের প্রত্যেকের জন্য পৃথক ফাইল তৈরি করার কোনও অর্থ হয় না।

যাতে এই বিকাশকারীদের বিকাশকারীরা আমাদের ইন্টারফেসগুলি অ্যাক্সেস করতে পারে, তাদের অবশ্যই টিভিজ লাইব্রেরির পাবলিক এপিআই হিসাবে সরবরাহ করতে হবে। প্রথম পদক্ষেপে উত্পন্ন প্রকল্পগুলি / টিভিমেজ / এসসিআর / পাবলিক_পিআই.টি ফাইল সম্পাদনা করুন যাতে এটি এর মতো দেখায়:

৩. লাইব্রেরিতে একটি পরিষেবা তৈরি করুন

আমাদের সদ্য নির্মিত টেলিভিশনের নিজস্ব প্যাকেজ.জসন, tsconfig.json, tslint.json এবং karma.conf.js রয়েছে, কারণ এটি মূল অ্যাপ্লিকেশনটির চেয়ে আলাদা সেটআপের প্রয়োজন বোধ করে। আমাদের জন্য একটি নমুনা উপাদান, মডিউল এবং পরিষেবাও উত্পন্ন করে। আমরা অতিরিক্তও যুক্ত করতে পারি, যা আমরা এক মুহুর্তে করব।

এবার / tvmaze / src / lib / tvmaze.service.ts প্রকল্পগুলিতে যুক্তি যুক্ত করা যাক:

এই পরিষেবাটিতে ProvideIn: @ ইনজেক্টেবল ডেকরেটারে রুট কনফিগারেশন ব্যতীত অসাধারণ কিছু নেই। এটি আসলে একটি নতুন শট angle কোণে যুক্ত হয়েছে।

"প্রভিশনইন: রুট" কোনও এনজিডমুলেলে স্পষ্টভাবে নিবন্ধন না করে কোনও পরিষেবার বিধানকে সক্ষম করে।

কেন তা বোঝা যায়? এটি এ জাতীয় পরিষেবার গাছের কাঁপুন সক্ষম করে (এটি ব্যবহার না করে উত্পাদন বান্ডেল থেকে সরানো হয়), যা প্রায়শই লাইব্রেরিতে সংজ্ঞায়িত পরিষেবাদির ক্ষেত্রে দেখা যায়।

৪. লাইব্রেরিতে একটি উপাদান তৈরি করুন

আপনি আমাদের লাইব্রেরিতে সংশ্লিষ্ট শোয়ের পোস্টার প্রদর্শন করতে পারেন। একটি সাধারণ কৌণিক প্রকল্পের মতো, আপনাকে নিজের হাতে কোনও উপাদান তৈরি করতে হবে না - সিএলআই এটির জন্য তৈরি:

এনজি কম্পোনেন্ট পোস্টার জেনারেট করুন - প্রোজেক্ট = টিভিমেজ

আমাদের সবেমাত্র আমাদের টিভিম্যাজ লাইব্রেরিতে পোস্টার তৈরি করতে সিএলআইকে বলতে হয়েছিল।

লাইব্রেরির টিভিমজ.মডিউলের বাইরে উপাদানটি উপলব্ধ করতে আমাদের এটিকে রফতানির ক্ষেত্রে যুক্ত করতে হবে। আপনার প্রকল্পগুলি / টিভিমেজ / এসসিআর / লিব / টিভিমজেড.মডিউল.টগুলি দেখতে দেখতে নিশ্চিত করুন:

আমি এইচটিপিপি্লিয়েন্টমডিউল নির্ভরতাও যুক্ত করেছি কারণ আমাদের টিভিমাজি সার্ভিস এবং কমনমোডুলে এইচটিপিপ্লিয়েন্টের প্রয়োজন ছিল কারণ এটি অ্যাসিনক্রোনাস পাইপ এবং এনজিআইএফ নির্দেশকে সংজ্ঞায়িত করে (যা পোস্টার উপাদানটি ব্যবহার করে)।

৫. নির্মাণের সময়!

আমরা আমাদের লাইব্রেরিটি ব্যবহার করার আগে এটি তৈরি করতে হবে। কৌণিক সিএলআইও এখানে সহায়তা করে। আমরা একটি নির্দিষ্ট প্রকল্প তৈরি করতে এখন এটি বলতে পারি:

এনজি বিল্ড টিভিমাজে

6. লাইব্রেরি ব্যবহার করুন

আমাদের লাইব্রেরিটি চেষ্টা করার জন্য, তৃতীয় পক্ষের এক্সটেনশানগুলির সাথে আমরা সর্বদা যা করতে হবে তা করতে হবে - এটি অ্যাপের এনজিএমডুলের আমদানির ক্ষেত্রে নির্ভরতা হিসাবে সংজ্ঞায়িত করুন:

এখানে লক্ষ করা উচিত যে আমরা টিভিমেজ ডিরেক্টরিটি সম্পর্কিত কোনও আপেক্ষিক পথের মাধ্যমে ক্লাসটি আমদানি করি না, তবে ভান করি যে এটি ইতিমধ্যে নোড_মডিউলগুলিতে রয়েছে। আসলেই কি আছে? নাঃ।

এটা কিভাবে কাজ করে

যখন আমরা লাইব্রেরিটি তৈরি করি (টিভিমেজ লাইব্রেরি উত্পন্ন করি), কৌণিক সিএলআই পথের প্রবেশে টিভিমেজ যুক্ত করে আমাদের প্রকল্পের মূলের tsconfig.json ফাইলটি পরিবর্তন করে।

এর অর্থ হ'ল প্রতিবার আপনি যখন আপনার টাইপস্ক্রিপ্ট কোডটিতে "টিভিম্যাজ" থেকে কিছু আমদানি করেন তখন এটি আসলে ডিস্ট / টিভিমেজ ডিরেক্টরি থেকে আমদানি করা হয় যেখানে আমাদের লাইব্রেরির বিল্ডটি সংরক্ষণ করা হয়েছিল।

এটি খুব সুবিধাজনক কারণ আপনি একবার এনএমপি প্রকৃত সংগ্রহস্থলে গ্রন্থাগারটি প্রকাশ করার পরে এই সংস্করণটি ব্যবহার করতে চাইলে আপনাকে আর অ্যাপ্লিকেশনের উত্সে আমদানি পরিবর্তন করতে হবে না - কেবল এই পথের প্রবেশিকা সরিয়ে ফেলুন।

এখন কিছু প্রদর্শন করা যাক।

Src / app / app.componal.ts এর জন্য ডিফল্ট সেটিংস নীচে পরিবর্তন করুন:

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

7. লাইব্রেরি প্রকাশ করুন

এনপিএম-এ লাইব্রেরিটি উপলভ্য করার জন্য আপনাকে যা করতে হবে তা হল প্রোডাক্ট বিল্ড তৈরি করে প্রজেক্ট ডিস্ট ডিরেক্টরি থেকে এনপিএম প্রকাশ কমান্ড চালানো:

এনজি বিল্ড টিভিমাজ - প্রোড সিডি ডিস্ট / টিভিমেজ এনপিএম রিলিজ

আপনি যদি এখনও কিছু প্রকাশ না করেন তবে আপনাকে প্রথমে একটি এনপিএম অ্যাকাউন্ট তৈরি করতে হবে এবং লগ ইন করতে হবে (নথিতে বিশদটি দেখুন)। অন্যথায় ... এটি :-)

উপসংহার

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

বর্তমান সেটআপে নিখুঁত একটি জিনিস হ'ল সামান্য ভাল অটোমেশন: আপনি যখনই অ্যাপ্লিকেশনটিতে লাইব্রেরিতে করেছেন তার পরিবর্তনগুলি দেখতে চান, আপনাকে লাইব্রেরি এবং প্রায়শই প্রধান সার্ভারটি পুনরায় তৈরি করতে হবে। অ্যাপ্লিকেশনটি পুনরায় চালু করুন। এঙ্গুলার টিম এটিকে আরও দক্ষ করার জন্য কাজ করছে। তবে ইতিমধ্যে, আমি এমন একটি স্ক্রিপ্ট তৈরির পরামর্শ দিতে পারি যাতে আপনি আপনার আইডিইতে (যেমন, ভিজ্যুয়াল স্টুডিও কোড টাস্কগুলি ব্যবহার করে) একটি মূল বাইন্ড নির্ধারণ করবেন। এটাই আমি করি

বলা হচ্ছে, বর্তমান প্রক্রিয়াটি ইতিমধ্যে এমন একটি দুর্দান্ত বিকাশের অভিজ্ঞতা যে আমি কেবল বাস্তুতন্ত্রের জুড়ে প্রচুর নতুন লাইব্রেরি প্রকাশের অপেক্ষায় রয়েছি :-)

BTW। বরাবরের মতো, আপনি এই নিবন্ধটিতে গিটহাবটিতে ব্যবহৃত সমাপ্ত কোডটি পরীক্ষা করতে পারেন। আরও তথ্যের জন্য সিআইএলির সংগ্রহস্থলে উইকি এন্ট্রি পড়ুন, উদাঃ খ। কিছু স্থাপত্য সংক্রান্ত সিদ্ধান্তের কারণ।

আপনি কি নতুন কিছু শিখলেন? যদি তা হয় তবে দয়া করে:

Below নীচের বোতামটি ক্লিক করুন যাতে আরও লোকেরা এটি দেখতে পারে Twitter টুইটারে আমাকে অনুসরণ করুন (@ সালকো) যাতে আপনি ভবিষ্যতের পোস্টগুলি মিস না করেন!