(আমি যখন কৌণিক বলি তখন আমি কৌণিক 2+ বোঝায় এবং আমি কৌনিক 1 উল্লেখ করছি তবে সুস্পষ্টভাবে কৌণিক- js বলব)।
ভূমিকা: এটি বিভ্রান্তিকর
কৌণিক এবং সম্ভবত আরও নির্ভুলভাবে কৌণিক-ক্লাইটি জাভাস্ক্রিপ্টে প্রচুর ট্রেন্ডিং সরঞ্জামগুলিকে একত্রিত করেছে যা বিল্ড প্রক্রিয়াতে জড়িত। এটি কিছুটা বিভ্রান্তির দিকে নিয়ে যায়।
বিভ্রান্তি আরও বাড়ানোর জন্য, শব্দটি compile
প্রায়শই কৌণিক-জেএসে ব্যবহৃত হত টেমপ্লেটের সিউডো-এইচটিএমএল গ্রহণ এবং এটি ডিওএম উপাদানগুলিতে রূপান্তর করার প্রক্রিয়াটির জন্য। এটি সংকলক যা করে তার একটি অংশ তবে ছোট অংশগুলির একটি।
প্রথমত, কৌণিক চালনার জন্য টাইপস্ক্রিপ্ট, কৌণিক-ক্লিপ বা ওয়েবপ্যাক ব্যবহার করার দরকার নেই। আপনার প্রশ্নের উত্তর দিতে। আমাদের একটি সহজ প্রশ্ন করা উচিত: "কৌণিক কী?"
কৌণিক: এটা কি করে?
এই বিভাগটি বিতর্কিত হতে পারে, আমরা দেখব। এর মূল অংশে, কৌনিকটি যে পরিষেবা সরবরাহ করে তা হ'ল একটি নির্ভরতা ইনজেকশন প্রক্রিয়া যা জাভাস্ক্রিপ্ট, এইচটিএমএল এবং সিএসএস জুড়ে কাজ করে। আপনি সমস্ত ছোট বিট এবং টুকরা স্বতন্ত্রভাবে লিখুন এবং প্রতিটি ছোট টুকরোতে আপনি অন্যান্য টুকরো উল্লেখ করার জন্য অ্যাংুলারের বিধি অনুসরণ করেন। কৌণিক তারপর একরকম যে বয়ন।
(কিছুটা) আরও সুনির্দিষ্ট হতে হবে:
- টেমপ্লেটগুলি জাভাস্ক্রিপ্ট উপাদানটিতে এইচটিএমএলকে তারযুক্ত হতে দেয়। এটি নিজেই ডিওএম-এ ব্যবহারকারী ইনপুটটিকে (যেমন একটি বোতামে ক্লিক করা) জাভাস্ক্রিপ্ট উপাদানটিতে ফিড সরবরাহ করতে দেয় এবং জাভাস্ক্রিপ্ট উপাদানটিতে ভেরিয়েবলগুলি ডিওমে কাঠামো এবং মানগুলি নিয়ন্ত্রণ করতে দেয়।
- জাভাস্ক্রিপ্ট ক্লাসগুলি (জাভাস্ক্রিপ্ট উপাদানগুলি সহ) তাদের উপর নির্ভর করে থাকা অন্যান্য জাভাস্ক্রিপ্ট শ্রেণীর উদাহরণগুলিতে অ্যাক্সেস করতে সক্ষম হওয়া প্রয়োজন (যেমন শাস্ত্রীয় নির্ভরতা ইনজেকশন)। একটি বুকলিস্ট কম্পোনেন্টের একটি বুকলিস্ট সার্ভিসের একটি উদাহরণ প্রয়োজন যা বুকলিস্টপলিসির মতো উদাহরণ হতে পারে বা এর মতো কিছু হতে পারে। এই শ্রেণীর প্রত্যেকটির আলাদা আলাদা লাইফটাইম থাকে (যেমন পরিষেবাগুলি সাধারণত সিঙ্গেলন হয়, উপাদানগুলি সাধারণত সিঙ্গেলন হয় না) এবং অ্যাঙ্গুলারকে সেই সমস্ত জীবনকাল, উপাদানগুলির তৈরি এবং নির্ভরতার ওয়্যারিং পরিচালনা করতে হয়।
- সিএসএস বিধিগুলি এমনভাবে লোড করা দরকার যেগুলি কেবলমাত্র ডিওমের একটি সাবসেটে প্রয়োগ হয় (কোনও উপাদানগুলির শৈলী সেই উপাদানটির স্থানীয় হয়)।
সম্ভবত একটি গুরুত্বপূর্ণ বিষয় লক্ষণীয় হ'ল জাভাস্ক্রিপ্ট ফাইলগুলি অন্যান্য জাভাস্ক্রিপ্ট ফাইলগুলিকে কীভাবে রেফারেন্স করে (যেমন import
কীওয়ার্ড) এর জন্য অ্যাংুলার দায়ী নয় । এটি ওয়েবপ্যাক দ্বারা যত্ন নেওয়া হয়।
সংকলক কী করে?
এখন যে আপনি জানেন যে কৌণিক কী করে আমরা কম্পাইলার কী করে সে সম্পর্কে কথা বলতে পারি। আমি খুব বেশি প্রযুক্তিগত হওয়া এড়াব কারণ মূলত আমি অজ্ঞ। তবে নির্ভরতা ইনজেকশন সিস্টেমের মধ্যে আপনি সাধারণত মেটাডেটা কিছু (যেমন কিভাবে একটি বর্গ বলে সঙ্গে আপনার নির্ভরতা প্রকাশ করার আছে I can be injected
, My lifetime is blah
অথবা You can think of me as a Component type of instance
)। জাভাতে, স্প্রিং মূলত এটি এক্সএমএল ফাইলগুলির মাধ্যমে করেছে। জাভা পরে টীকাগুলি গ্রহণ করেছে এবং তারা মেটাডেটা প্রকাশের জন্য পছন্দসই উপায় হয়ে উঠেছে। সি # মেটাটাটা প্রকাশ করার জন্য বৈশিষ্ট্যগুলি ব্যবহার করে।
এই মেটাডেটা বিল্টিনটি প্রকাশের জন্য জাভাস্ক্রিপ্টের দুর্দান্ত ব্যবস্থা নেই। কৌণিক-জেএস একটি চেষ্টা করেছিল এবং এটি খারাপ ছিল না তবে প্রচুর বিধি ছিল যা সহজেই চেক করা যায়নি এবং কিছুটা বিভ্রান্তিকর ছিল। অ্যাঙ্গুলারের সাথে মেটাডেটা উল্লেখ করার দুটি সমর্থিত উপায় রয়েছে। আপনি খাঁটি জাভাস্ক্রিপ্ট লিখতে পারেন এবং ম্যানুয়ালি মেটাডেটা নির্দিষ্ট করতে পারেন, কিছুটা কৌণিক-জেএসের মতো এবং কেবল নিয়মগুলি মেনে চলতে এবং অতিরিক্ত বয়লার-প্লেট কোড লিখে রাখতে পারেন। বিকল্পভাবে, আপনি টাইপস্ক্রিপ্টে স্যুইচ করতে পারেন যা এটি ঠিক যেমন ঘটে, সজ্জায় থাকে (সেই @
চিহ্নগুলি) যা মেটাডেটা প্রকাশ করার জন্য ব্যবহৃত হয়।
সুতরাং এখানে আমরা শেষ পর্যন্ত সংকলক পেতে পারেন। সংকলকের কাজ হ'ল সেই মেটাডেটা নেওয়া এবং আপনার অ্যাপ্লিকেশন হিসাবে কাজ করা পিসের সিস্টেম তৈরি করা। আপনি সমস্ত টুকরো এবং সমস্ত মেটাডেটাতে ফোকাস দিন এবং সংকলক একটি বড় আন্তঃসংযুক্ত অ্যাপ্লিকেশন তৈরি করে।
সংকলক এটি কিভাবে করে?
সংকলকটি কাজ করতে পারে এমন দুটি উপায় রয়েছে, রানটাইম এবং সময়ের-আগে। এখান থেকে আমি ধরে নেব আপনি টাইপস্ক্রিপ্ট ব্যবহার করছেন:
- রানটাইম: যখন টাইপস্ক্রিপ্ট সংকলকটি চালিত হয় তখন এটি সমস্ত সজ্জাকারীর তথ্য নেয় এবং সজ্জিত শ্রেণি, পদ্ধতি এবং ক্ষেত্রগুলির সাথে সংযুক্ত জাভাস্ক্রিপ্ট কোডের মধ্যে সরিয়ে দেয়। আপনার ক্ষেত্রে
index.html
আপনার পদ্ধতিটি main.js
কল করে reference bootstrap
এই পদ্ধতিটি আপনার শীর্ষ স্তরের মডিউলটি পেরিয়ে গেছে।
বুটস্ট্র্যাপ পদ্ধতি রানটাইম সংকলকটিকে আগুন ধরিয়ে দেয় এবং এটিকে শীর্ষ স্তরের মডিউলের একটি রেফারেন্স দেয়। রানটাইম সংকলক তারপরে সেই মডিউলটি, সমস্ত পরিষেবাগুলি, উপাদানগুলি ইত্যাদি module মডিউলটি এবং সম্পর্কিত সমস্ত মেটাডেটা দ্বারা রেফারেন্স করা শুরু করে এবং আপনার অ্যাপ্লিকেশন তৈরি করে।
- এওটি: রানটাইম সময়ে সমস্ত কাজ করার পরিবর্তে অ্যাঙ্গুলারটি বেশিরভাগ কাজ নির্মানের সময় করার জন্য একটি ব্যবস্থা সরবরাহ করে। এটি প্রায় সর্বদা একটি ওয়েবপ্যাক প্লাগইন ব্যবহার করে করা হয় (এটি অবশ্যই সর্বাধিক জনপ্রিয় এনপিএম প্যাকেজগুলির মধ্যে একটি হতে হবে)। এটি টাইপ স্ক্রিপ্ট সংকলন চালুর পরে চলে তাই এটি মূলত রানটাইম সংকলক হিসাবে একই ইনপুট দেখতে পায়। এওটি সংকলক রানটাইম সংকলকের মতো আপনার অ্যাপ্লিকেশনটি তৈরি করে তবে এটি আবার জাভাস্ক্রিপ্টে সংরক্ষণ করে।
এখানে সুবিধাটি কেবল এটি নয় যে আপনি নিজেই সংকলনের জন্য প্রয়োজনীয় সিপিইউ সময় বাঁচাতে পারেন, তবে এটি আপনাকে আপনার অ্যাপ্লিকেশনটির আকারও হ্রাস করতে দেয়।
নির্দিষ্ট উত্তর
কৌণিক সিএলআই প্রথমে টাইপসক্রিপ্টে লিখিত সংকলকটিতে কৌনিক নির্মিত বলে => তারপরে টাইপস্ক্রিপ্ট ট্রান্সপ্লেলার => কল করে তারপরে ওয়েবপ্যাকটিকে ডান্ড / ডিরেক্টরিতে বান্ডিল এবং সঞ্চয় করতে কল করে।
নং, কৌণিক সিএলআই ওয়েবপ্যাক কল করে (কৌণিক সিএলআইয়ের আসল পরিষেবা ওয়েবপ্যাকটি কনফিগার করছে you আপনি যখন চালান ng build
এটি ওয়েবপ্যাক শুরু করার চেয়ে প্রক্সি ছাড়া আর কিছু নয়)। ওয়েবপ্যাক প্রথমে টাইপস্ক্রিপ্ট সংকলককে কল করে, তারপরে কৌনিক সংকলক (এওটি ধরে নিচ্ছে), আপনার কোড একই সাথে বান্ডিল করার সময়।
যদিও বুটস্ট্র্যাপ প্রক্রিয়া ব্যাখ্যা করার জন্য উপরের স্টেটমেন্টে মেইন.টস ব্যবহার করা হয়, তবে কৌনিক অ্যাপটি জাভাস্ক্রিপ্ট .js ফাইলগুলি ব্যবহার করে বুটস্ট্র্যাপ করা বা শুরু করা হয় না?
আপনি এখানে যা জিজ্ঞাসা করছেন তা আমি পুরোপুরি নিশ্চিত নই। main.ts
জাভাস্ক্রিপ্টে লিখে রাখা হবে। জাভাস্ক্রিপ্টটিতে এমন একটি কল থাকবে bootstrap
যা আঙ্গুলের প্রবেশের পয়েন্ট। কখন হয়ে bootstrap
যাবে আপনার সম্পূর্ণ কৌনিক অ্যাপ্লিকেশন চলবে।
এই পোস্টটি বলে যে কৌণিকের দুটি সংকলক রয়েছে:
সংকলক দেখুন
মডিউল সংকলক
সত্যি কথা বলতে আমি এখানে কেবল অজ্ঞতার দাবি করছি। আমি আমাদের স্তরে মনে করি আমরা কেবল এটি সমস্তকে একটি বড় সংকলক হিসাবে ভাবতে পারি।
কেউ কি জানেন কীভাবে সমস্ত অংশ গভীরতার সাথে একত্রে ফিট করে?
আমি উপরোক্ত এটি সন্তুষ্ট আশা করি।
আমাকে @ করবেন না: কৌণিক নির্ভরতা ইনজেকশনের চেয়ে বেশি করে
অবশ্যই এটি রাউটিং, ভিউ বিল্ডিং, সনাক্তকরণ পরিবর্তন এবং অন্যান্য ধরণের সমস্ত কাজ করে। সংকলকটি প্রকৃতপক্ষে দৃশ্য নির্মাণ এবং পরিবর্তন সনাক্তকরণের জন্য জাভাস্ক্রিপ্ট তৈরি করে। আমি মিথ্যা বললাম যখন আমি বলেছিলাম যে এটি কেবল নির্ভরতা ইনজেকশন। যাইহোক, নির্ভরতা ইঞ্জেকশনটি মূলটি এবং বাকি উত্তরটি চালানোর জন্য যথেষ্ট।
আমরা কি এটি একটি সংকলক বলতে পারি?
এটি সম্ভবত প্রচুর পরিমাণে পার্সিং এবং লেক্সিং করে এবং ফলস্বরূপ অবশ্যই প্রচুর কোড তৈরি করে যাতে আপনি এ কারণে এটি সংকলক বলতে পারেন।
অন্যদিকে, এটি সত্যিই আপনার কোডটি কেবল একটি আলাদা উপস্থাপনায় অনুবাদ করছে না। পরিবর্তে এটি কোডের বিভিন্ন অংশের একগুচ্ছ গ্রহণ করছে এবং এটিকে একটি বৃহত সিস্টেমের উপভোগযোগ্য টুকরাগুলিতে বুনছে। তারপরে বুটস্ট্র্যাপ প্রক্রিয়াটি (সংকলনের পরে, যদি প্রয়োজন হয়) সেই টুকরাগুলি নেয় এবং সেগুলি কৌণিক কোণে প্লাগ করে।
The compiler does actually generate
জাভাস্ক্রিপ্ট-এ সন্দেহ ও সন্দেহজনক ধারণা তৈরি এবং পরিবর্তন সনাক্তকরণের জন্য `এটি কোনও মিথ্যা নয় is সংকলক এটি কি না? এবং কৌণিক নির্ভরতা ইঞ্জেকশনটি করে।