AngularJS বনাম jQuery
AngularJS এবং jQuery খুব আলাদা মতাদর্শ গ্রহণ করে। আপনি jQuery থেকে এসে যদি অবাক হন কিছু পার্থক্য। কৌণিক আপনাকে রাগ করতে পারে।
এটি স্বাভাবিক, আপনার মাধ্যমে ধাক্কা দেওয়া উচিত। কৌণিক এটি মূল্য।
বড় পার্থক্য (টিএলডিআর)
jQuery আপনাকে ডিওএমের স্বেচ্ছাসেবী বিট নির্বাচন করতে এবং এগুলিতে অ্যাড-হক পরিবর্তন করার জন্য একটি সরঞ্জামকিট দেয়। আপনি টুকরো টুকরো টুকরো টুকরো পছন্দ মতো কিছু করতে পারেন।
পরিবর্তে AngularJS আপনাকে একটি সংকলক দেয় ।
এর অর্থ হ'ল অ্যাঙ্গুলারজেএস আপনার পুরো ডিওএমটি উপরে থেকে নীচে পর্যন্ত পড়ে এবং কোডার সাথে আক্ষরিক অর্থে সংকলককে নির্দেশ হিসাবে বিবেচনা করে। এটি ডিওএমকে অতিক্রম করার সাথে সাথে এটি সুনির্দিষ্ট নির্দেশাবলীর (সংকলক নির্দেশিকা) সন্ধান করে যা অ্যাঙ্গুলারজেএস সংকলককে কীভাবে আচরণ করতে হবে এবং কী করতে হবে তা বলে। নির্দেশাবলী জাভাস্ক্রিপ্টে পূর্ণ এমন ছোট ছোট বস্তু যা বৈশিষ্ট্য, ট্যাগ, শ্রেণি বা এমনকি মন্তব্যের বিপরীতে মেলে।
যখন কৌণিক সংকলকটি নির্ধারণ করে যে ডিওমের একটি অংশ কোনও নির্দিষ্ট নির্দেশের সাথে মেলে, তখন এটি ডায়রেক্টিভ ফাংশন বলে, এটি ডিওএম উপাদান, কোনও বৈশিষ্ট্য, বর্তমান $ স্কোপ (যা একটি স্থানীয় ভেরিয়েবল স্টোর) এবং অন্যান্য কিছু দরকারী বিটকে পাস করে calls এই বৈশিষ্ট্যগুলির মধ্যে এমন অভিব্যক্তি থাকতে পারে যা নির্দেশক দ্বারা ব্যাখ্যা করা যেতে পারে এবং যা কীভাবে রেন্ডার করতে হবে এবং কখন এটি পুনরায় চিত্রিত করা উচিত।
এরপরে নির্দেশকরা অতিরিক্ত কৌণিক উপাদান যেমন নিয়ামক, পরিষেবা ইত্যাদির মধ্যে টানতে পারে the সংকলকটির নীচের অংশে যা আসে তা সম্পূর্ণরূপে গঠিত ওয়েব অ্যাপ্লিকেশন, ওয়্যার্ড আপ এবং যেতে প্রস্তুত।
এর অর্থ অ্যাঙ্গুলারটি টেম্পলেট চালিত । আপনার টেম্পলেটটি জাভাস্ক্রিপ্টটিকে চালিত করে, অন্যভাবে নয়। এটি ভূমিকাগুলির একটি র্যাডিক্যাল বিপরীতমুখী, এবং আমরা গত ১০ বছর বা তার বেশি সময় ধরে লেখার মতো অবিচ্ছিন্ন জাভাস্ক্রিপ্টের সম্পূর্ণ বিপরীত। এটি কিছুটা অভ্যস্ত হয়ে যেতে পারে।
এটি যদি মনে হয় এটি অত্যধিক ব্যবস্থাপত্র এবং সীমিত হতে পারে তবে সত্য থেকে আর কিছু হতে পারে না। অ্যাঙ্গুলারজেএস আপনার এইচটিএমএলকে কোড হিসাবে বিবেচনা করে, আপনি আপনার ওয়েব অ্যাপ্লিকেশনটিতে এইচটিএমএল স্তরের গ্রানুলারিটি পাবেন । সমস্ত কিছু সম্ভব এবং একবার আপনি কয়েকটি ধারণামূলক লাফিয়ে উঠলে বেশিরভাগ জিনিস আশ্চর্যজনকভাবে সহজ।
আসুন নীচে কৌতুক নেমে আসা যাক।
প্রথমত, কৌণিক jQuery প্রতিস্থাপন করে না
কৌণিক এবং jQuery বিভিন্ন কাজ করে। AngularJS আপনাকে ওয়েব অ্যাপ্লিকেশন উত্পাদন করার জন্য সরঞ্জামগুলির একটি সেট দেয়। jQuery প্রধানত আপনাকে ডিওএম সংশোধন করার জন্য সরঞ্জাম দেয়। JQuery আপনার পৃষ্ঠায় উপস্থিত থাকলে, AngularJS এটি স্বয়ংক্রিয়ভাবে ব্যবহার করবে। যদি তা না হয় তবে অ্যাংুলারজেএস জাহাজ jQuery লাইট সহ, যা একটি কাটা ডাউন, তবে এখনও jQuery এর পুরোপুরি ব্যবহারযোগ্য সংস্করণ।
মিসকো jQuery পছন্দ করে এবং এটি ব্যবহার করে আপনার আপত্তি করে না। তবে আপনি অগ্রিম হিসাবে খুঁজে পাবেন যে সুযোগ, টেমপ্লেট এবং নির্দেশের সংমিশ্রণ ব্যবহার করে আপনি আপনার সমস্ত কাজ পুরোপুরি করতে পারবেন এবং যেখানে সম্ভব সেখানে আপনার এই কর্মপ্রবাহটি পছন্দ করা উচিত কারণ আপনার কোডটি আরও বিচ্ছিন্ন, আরও কনফিগারযোগ্য এবং আরও অনেক কিছু হতে পারে কৌণিক।
আপনি যদি jQuery ব্যবহার করেন তবে আপনার এটি সমস্ত জায়গায় ছিটানো উচিত নয়। অ্যাঙ্গুলারজেএস-এ ডিওএম ম্যানিপুলেশনের জন্য সঠিক জায়গাটি একটি দিকনির্দেশনায়। এগুলি সম্পর্কে আরও পরে।
নির্বাচক বনাম ঘোষণামূলক টেম্পলেটগুলির সাথে আপত্তিজনক জাভাস্ক্রিপ্ট
jQuery সাধারণত নিরবিচ্ছিন্নভাবে প্রয়োগ করা হয়। আপনার জাভাস্ক্রিপ্ট কোডটি শিরোনামে (বা পাদলেখের সাথে) লিঙ্কযুক্ত রয়েছে এবং এটি কেবলমাত্র এটিই উল্লেখ করা হয়েছে। আমরা পৃষ্ঠাগুলির বিটগুলি বেছে নিতে এবং সেই অংশগুলি সংশোধন করার জন্য প্লাগইনগুলি লিখতে নির্বাচনকারীদের ব্যবহার করি।
জাভাস্ক্রিপ্ট নিয়ন্ত্রণে আছে। এইচটিএমএল একটি সম্পূর্ণ স্বাধীন অস্তিত্ব আছে। আপনার এইচটিএমএল জাভাস্ক্রিপ্ট ছাড়াই শব্দার্থক থাকে remains অনক্লিক বৈশিষ্ট্যগুলি খুব খারাপ অনুশীলন।
অ্যাঙ্গুলারজেএস সম্পর্কে আপনার প্রথম যে জিনিসটি লক্ষ্য করা যাবে তা হ'ল কাস্টম বৈশিষ্ট্যগুলি সর্বত্র । আপনার এইচটিএমএল এনজি অ্যাট্রিবিউট দ্বারা লিটার করা হবে, যা স্টেরয়েডগুলিতে মূলত অন ক্লিক বৈশিষ্ট্য। এগুলি হ'ল নির্দেশাবলী (সংকলক নির্দেশিকা) এবং মডেলটিতে টেমপ্লেটটি আঁকানো প্রধান উপায়গুলির মধ্যে একটি।
আপনি যখন এটি প্রথম দেখেন তখন আপনি অ্যাঙ্গুলারজেএস লিখতে প্ররোচিত হতে পারেন পুরানো স্কুল অনুপ্রবেশকারী জাভাস্ক্রিপ্ট হিসাবে (যেমন আমি প্রথমে করেছি)। আসলে, AngularJS those বিধি দ্বারা খেলা হয় না। অ্যাঙ্গুলারজেএস-এ, আপনার এইচটিএমএল 5 একটি টেম্পলেট। এটি আপনার ওয়েব পৃষ্ঠাটি তৈরি করতে AngularJS দ্বারা সংকলিত।
এটি প্রথম বড় পার্থক্য। JQuery এর কাছে, আপনার ওয়েব পৃষ্ঠাটি হ'ল ম্যানোপুলেট করার জন্য একটি ডোম। অ্যাঙ্গুলারজেএস-এর কাছে আপনার এইচটিএমএল কোডটি সংকলিত হতে হবে। AngularJS আপনার সম্পূর্ণ ওয়েব পৃষ্ঠায় পড়ে এবং আক্ষরিকভাবে এটি একটি নতুন ওয়েব পৃষ্ঠায় অন্তর্নির্মিত সংকলকটি ব্যবহার করে সংকলন করে।
আপনার টেম্পলেটটি ঘোষণামূলক হতে হবে; এটি পড়ার দ্বারা এর অর্থটি পরিষ্কার হওয়া উচিত। আমরা অর্থবহ নাম সহ কাস্টম বৈশিষ্ট্য ব্যবহার করি। আমরা আবার অর্থপূর্ণ নাম সহ নতুন এইচটিএমএল উপাদান তৈরি করি। নূন্যতম এইচটিএমএল জ্ঞান এবং কোনও কোডিং দক্ষতা নেই এমন ডিজাইনার আপনার অ্যাংুলারজেএস টেম্পলেটটি পড়তে পারে এবং বুঝতে পারে যে এটি কী করছে। সে বা সে পরিবর্তন করতে পারে। এটি কৌণিক উপায়।
টেমপ্লেটটি ড্রাইভিং সিটে রয়েছে।
অ্যাংুলারজেএস শুরু করার সময় এবং টিউটোরিয়ালগুলির মধ্য দিয়ে চলার সময় আমি নিজেকে প্রথম জিজ্ঞাসা করি "আমার কোডটি কোথায়?" । আমি কোনও জাভাস্ক্রিপ্ট লিখেছি না, এবং এখনও আমার এই সমস্ত আচরণ রয়েছে। উত্তরটি সুস্পষ্ট। অ্যাঙ্গুলারজেএস ডোমকে সংকলন করার কারণে, অ্যাঙ্গুলারজেএস আপনার এইচটিএমএলকে কোড হিসাবে বিবেচনা করছে। অনেকগুলি সাধারণ ক্ষেত্রে এটি কেবলমাত্র একটি টেম্পলেট লিখতে এবং AngularJS এটিকে আপনার জন্য একটি অ্যাপ্লিকেশনে সংকলন করতে যথেষ্ট।
আপনার টেম্পলেটটি আপনার অ্যাপ্লিকেশনটিকে চালিত করে। এটি একটি ডিএসএল হিসাবে ধরা হয় । আপনি AngularJS উপাদানগুলি লেখেন, এবং AngularJS আপনার টেমপ্লেটের কাঠামোর ভিত্তিতে এগুলিকে টানতে এবং এগুলিকে সঠিক সময়ে উপলব্ধ করার যত্ন নেবে। এটি একটি স্ট্যান্ডার্ড এমভিসি প্যাটার্নের থেকে খুব আলাদা , যেখানে টেমপ্লেটটি কেবল আউটপুট দেওয়ার জন্য।
উদাহরণস্বরূপ এটি রেলের অন রুবির তুলনায় এটি এক্সএসএলটির সাথে আরও সমান ।
এটি নিয়ন্ত্রণের একটি র্যাডিক্যাল ইনভারস্শন যা কিছুটা অভ্যস্ত হয়ে যায়।
আপনার জাভাস্ক্রিপ্ট থেকে আপনার অ্যাপ্লিকেশনটি চালানোর চেষ্টা বন্ধ করুন। টেমপ্লেটটিকে অ্যাপ্লিকেশনটি চালিত হতে দিন এবং অ্যাঙ্গুলারজেএসকে একসাথে উপাদানগুলির তারের যত্ন নিতে দেওয়া উচিত। এটিও কৌণিক উপায়।
অর্থপূর্ণ এইচটিএমএল বনাম সিমেন্টিক মডেলগুলি
JQuery এর সাথে আপনার এইচটিএমএল পৃষ্ঠাতে অর্থপূর্ণ অর্থবোধক সামগ্রী থাকা উচিত। যদি জাভাস্ক্রিপ্ট বন্ধ করা থাকে (কোনও ব্যবহারকারী বা অনুসন্ধান ইঞ্জিন দ্বারা) আপনার সামগ্রী অ্যাক্সেসযোগ্য থাকে।
কারণ AngularJS আপনার HTML পৃষ্ঠাটিকে একটি টেম্পলেট হিসাবে বিবেচনা করে। টেমপ্লেটটি সিনমেটিক বলে মনে করা হয় না কারণ আপনার সামগ্রীগুলি সাধারণত আপনার মডেলটিতে সঞ্চিত থাকে যা শেষ পর্যন্ত আপনার এপিআই থেকে আসে। AngularJS আপনার ডমকে মডেলটির সাথে একটি শব্দার্থক ওয়েব পৃষ্ঠা তৈরি করতে সংকলন করে।
আপনার এইচটিএমএল উত্স আর শব্দার্থক নয়, পরিবর্তে, আপনার এপিআই এবং সংকলিত ডিওএম শব্দার্থক।
অ্যাঙ্গুলারজেএসে, যার অর্থ মডেলটিতে থাকে, এইচটিএমএল কেবলমাত্র প্রদর্শনের জন্য একটি টেম্পলেট।
এই মুহুর্তে আপনার কাছে সম্ভবত এসইও এবং অ্যাক্সেসযোগ্যতা সম্পর্কিত সব ধরণের প্রশ্ন রয়েছে এবং ঠিক তাই। এখানে মুক্ত বিষয় আছে। বেশিরভাগ স্ক্রিন পাঠক এখন জাভাস্ক্রিপ্ট পার্স করবেন। অনুসন্ধান ইঞ্জিনগুলি এজেএক্সড সামগ্রীকেও সূচক করতে পারে । তবুও, আপনি নিশ্চিত করতে চাইবেন যে আপনি পুশস্টেট ইউআরএল ব্যবহার করছেন এবং আপনার একটি শালীন সাইটম্যাপ রয়েছে। সমস্যাটির আলোচনার জন্য এখানে দেখুন: https://stackoverflow.com/a/23245379/687677
উদ্বেগের বিচ্ছেদ (এসওসি) বনাম এমভিসি
উদ্বেগের বিচ্ছেদ (এসওসি) এমন একটি প্যাটার্ন যা বহু বছরের জন্য ওয়েব বিকাশে বড় হয়ে এসইও, অ্যাক্সেসযোগ্যতা এবং ব্রাউজারের অসঙ্গতি সহ বিভিন্ন কারণে রয়েছে for দেখে মনে হচ্ছে:
- এইচটিএমএল - অর্থপূর্ণ অর্থ। এইচটিএমএল একা দাঁড়িয়ে থাকা উচিত।
- সিএসএস - স্টাইলিং, সিএসএস ছাড়া পৃষ্ঠাটি এখনও পঠনযোগ্য।
- জাভাস্ক্রিপ্ট - আচরণ, স্ক্রিপ্ট ছাড়া বিষয়বস্তু অবশেষ।
আবার, AngularJS তাদের নিয়ম করে না। স্ট্রোকের সময়, অ্যাংুলারজেএস এক দশক প্রাপ্ত বুদ্ধির সাথে দূরে থাকে এবং পরিবর্তে একটি এমভিসি প্যাটার্ন প্রয়োগ করে যেখানে টেমপ্লেটটি আর শব্দার্থক নয়, কিছুটা হলেও নয়।
দেখে মনে হচ্ছে:
- মডেল - আপনার মডেলগুলিতে আপনার অর্থপূর্ণ ডেটা রয়েছে। মডেলগুলি সাধারণত JSON অবজেক্ট। মডেলগুলি object স্কোপ নামে পরিচিত কোনও সামগ্রীর বৈশিষ্ট্য হিসাবে উপস্থিত রয়েছে। আপনার টেমপ্লেটগুলি তারপরে অ্যাক্সেস করতে পারে এমন স্কোপে আপনি হ্যান্ডিল ইউটিলিটি ফাংশনও সঞ্চয় করতে পারেন।
- দেখুন - আপনার মতামত এইচটিএমএল লিখিত হয়। দৃশ্যটি সাধারণত শব্দার্থক হয় না কারণ আপনার ডেটা মডেলটিতে থাকে।
- কন্ট্রোলার - আপনার নিয়ামক একটি জাভাস্ক্রিপ্ট ফাংশন যা মডেলটির দর্শনটিকে হুক করে। এর ফাংশনটি $ স্কোপটি শুরু করা। আপনার অ্যাপ্লিকেশন উপর নির্ভর করে, আপনি একটি নিয়ামক তৈরি করতে বা প্রয়োজন হতে পারে না। আপনার একটি পৃষ্ঠায় অনেকগুলি নিয়ামক থাকতে পারে।
এমভিসি এবং এসওসি একই স্কেলের বিপরীত প্রান্তে নয়, তারা সম্পূর্ণ আলাদা অক্ষে রয়েছে। এসওসি কোনও অ্যাঙ্গুলারজেএস প্রসঙ্গে কোনও অর্থ দেয় না। আপনাকে এটি ভুলে যেতে হবে এবং এগিয়ে যেতে হবে।
যদি আমার মতো আপনিও ব্রাউজার যুদ্ধের মধ্য দিয়ে থাকেন তবে আপনি এই ধারণাটি বেশ আপত্তিজনক মনে করতে পারেন। এটি শেষ, এটি মূল্য হবে, আমি প্রতিশ্রুতি।
প্লাগইন বনাম দিকনির্দেশনা
প্লাগইনগুলি jQuery প্রসারিত করে। কৌণিক জেএস নির্দেশিকা আপনার ব্রাউজারের সক্ষমতা বাড়ায়।
JQuery এ আমরা jQuery.prototype এ ফাংশন যুক্ত করে প্লাগইনগুলি সংজ্ঞায়িত করি। এরপরে আমরা উপাদানগুলিকে নির্বাচন করে ফলাফলটিতে প্লাগইন কল করে এটি ডোমটিতে প্রবেশ করি। ধারণাটি হল jQuery এর সক্ষমতা বাড়ানো।
উদাহরণস্বরূপ, আপনি যদি আপনার পৃষ্ঠায় ক্যারোসেল চান, আপনি সম্ভবত একটি এনএভি এলিমেন্টে আবৃত পরিসংখ্যানের একটি নিরক্ষিত তালিকাটি সংজ্ঞায়িত করতে পারেন। তারপরে আপনি পৃষ্ঠায় তালিকাটি নির্বাচন করতে কিছু jQuery লিখতে পারেন এবং স্লাইডিং অ্যানিমেশনটি করার জন্য টাইমআউট সহ গ্যালারী হিসাবে এটি পুনরায় সাজান।
AngularJS এ, আমরা নির্দেশকে সংজ্ঞায়িত করি। দিকনির্দেশনা এমন একটি ফাংশন যা কোনও JSON অবজেক্ট ফেরত দেয়। এই অবজেক্টটি অ্যাঙ্গুলারজেএসকে জানিয়েছে যে ডোম উপাদানগুলি কী সন্ধান করতে হবে এবং কী কী পরিবর্তন করতে হবে। আপনার উদ্ভাবিত বৈশিষ্ট্য বা উপাদানগুলি ব্যবহার করে দিকনির্দেশগুলি টেম্পলেটটিতে আবদ্ধ। ধারণাটি হ'ল নতুন বৈশিষ্ট্য এবং উপাদানগুলির সাথে এইচটিএমএলের সক্ষমতা বাড়ানো।
অ্যাঙ্গুলারজেএস উপায় হ'ল নেটিভ লুকিং এইচটিএমএলগুলির সক্ষমতা বাড়ানো। আপনার এইচটিএমএল লেখা উচিত যা HTML এর মতো দেখতে, কাস্টম বৈশিষ্ট্য এবং উপাদানগুলির সাথে প্রসারিত।
আপনি যদি কারোসেল চান, কেবল একটি <carousel />
উপাদান ব্যবহার করুন , তারপরে কোনও টেমপ্লেটে টানতে নির্দেশকে সংজ্ঞায়িত করুন এবং সেই স্তন্যপায়ী কাজটি করুন।
কনফিগারেশন সুইচ সহ বিশাল প্লাগইন বনাম প্রচুর ছোট্ট নির্দেশাবলী c
JQuery এর প্রবণতা হ'ল লাইটবক্সের মতো দুর্দান্ত বড় প্লাগইন লিখতে যা আমরা তারপরে অসংখ্য মান এবং বিকল্পগুলি পাস করে কনফিগার করে।
এটি AngularJS এ একটি ভুল।
ড্রপডাউন উদাহরণ নিন। ড্রপডাউন প্লাগইন লেখার সময় আপনি ক্লিক হ্যান্ডলারগুলিতে কোডে প্রলুব্ধ হতে পারেন, সম্ভবত কোনও ফ্যাশন যা শেভ্রনটিতে উপরে বা নীচে রয়েছে, সম্ভবত উন্মুক্ত উপাদানটির শ্রেণি পরিবর্তন করতে, মেনুতে লুকিয়ে থাকা, সমস্ত সহায়ক স্টাফ প্রদর্শন করুন।
যতক্ষণ না আপনি একটি ছোট পরিবর্তন করতে চান।
বলুন যে আপনার কাছে এমন একটি মেনু রয়েছে যা আপনি হোভারে প্রকাশ করতে চান। আচ্ছা এখন আমাদের সমস্যা আছে। আমাদের প্লাগইনটি আমাদের জন্য ক্লিক হ্যান্ডলারের সাথে তারযুক্ত হয়েছে, আমাদের নির্দিষ্ট ক্ষেত্রে এটি অন্যরকমভাবে আচরণ করার জন্য একটি কনফিগারেশন বিকল্প যুক্ত করতে হবে।
অ্যাঙ্গুলারজেএস-এ আমরা ছোট ছোট নির্দেশিকা লিখি। আমাদের ড্রপডাউন নির্দেশিকা হাস্যকরভাবে ছোট হবে। এটি ভাঁজ করা অবস্থাটি বজায় রাখতে পারে এবং (), আনফোল্ড () বা টগল () ফোল্ড করার পদ্ধতি সরবরাহ করতে পারে। এই পদ্ধতিগুলি সহজভাবে আপডেট করে $ স্কোপ.মেনু.ভিজিবল যা রাজ্যের অধিবেশন বুলিয়ান।
এখন আমাদের টেমপ্লেটে আমরা এটিকে ওয়্যার আপ করতে পারি:
<a ng-click="toggle()">Menu</a>
<ul ng-show="menu.visible">
...
</ul>
মাউসওভার আপডেট করা প্রয়োজন?
<a ng-mouseenter="unfold()" ng-mouseleave="fold()">Menu</a>
<ul ng-show="menu.visible">
...
</ul>
টেমপ্লেটটি অ্যাপ্লিকেশনটিকে চালিত করে যাতে আমরা এইচটিএমএল স্তরের গ্রানুলারিটি পাই। যদি আমরা কেস ব্যতিক্রম করে কেস করতে চাই তবে টেমপ্লেটটি এটিকে সহজ করে তোলে।
বন্ধ বনাম $ সুযোগ $
জিকুয়েরি প্লাগইনগুলি একটি বন্ধে তৈরি করা হয়। সেই বন্ধের মধ্যেই গোপনীয়তা বজায় থাকে। এই ক্লোজারের মধ্যে আপনার স্কোপ চেইন বজায় রাখা আপনার ব্যাপার। আপনার কাছে কেবল jQuery দ্বারা প্লাগইনে পাস করা DOM নোডগুলির সেট, পাশাপাশি ক্লোজারে সংজ্ঞায়িত কোনও স্থানীয় ভেরিয়েবল এবং আপনার সংজ্ঞায়িত কোনও গ্লোবালগুলির অ্যাক্সেস রয়েছে। এর অর্থ প্লাগইনগুলি বেশ স্বনির্ভর। এটি একটি ভাল জিনিস, তবে একটি সম্পূর্ণ অ্যাপ্লিকেশন তৈরি করার সময় সীমাবদ্ধ হতে পারে। ডায়নামিক পৃষ্ঠার বিভাগগুলির মধ্যে ডেটা পাস করার চেষ্টাটি নৃত্যভঙ্গ হয়ে যায়।
AngularJS এর $ স্কোপ অবজেক্ট রয়েছে। এগুলি অ্যাঙ্গুলারজেএস দ্বারা তৈরি এবং রক্ষণাবেক্ষণ করা বিশেষ সামগ্রী যা আপনি আপনার মডেলটি সঞ্চয় করেন। নির্দিষ্ট নির্দেশাবলী একটি নতুন স্কোপ তৈরি করবে, যা জাভাস্ক্রিপ্ট প্রোটোটাইপিক উত্তরাধিকার ব্যবহার করে ডিফল্টরূপে তার মোড়ক $ স্কোপ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। $ স্কোপ অবজেক্টটি নিয়ামক এবং দৃশ্যে অ্যাক্সেসযোগ্য।
এটি চতুর অংশ। যেহেতু $ স্কোপ উত্তরাধিকারের কাঠামো মোটামুটিভাবে ডিওএমের কাঠামো অনুসরণ করে, উপাদানগুলির নিজস্ব ক্ষেত্রের অ্যাক্সেস রয়েছে এবং কোনও বিস্তৃত স্কোপ রয়েছে, সমস্তভাবে গ্লোবাল $ স্কোপ পর্যন্ত (যা বৈশ্বিক স্কোপের মতো নয়)।
এটি চারপাশের ডেটাগুলি পাস করা এবং একটি উপযুক্ত স্তরে ডেটা সঞ্চয় করা আরও সহজ করে তোলে। যদি একটি ড্রপডাউন উন্মুক্ত হয়, তবে কেবল ড্রপডাউন-স্কোপ সম্পর্কে এটি জানা দরকার। যদি ব্যবহারকারী তাদের পছন্দগুলি আপডেট করে তবে আপনি বিশ্বব্যাপী update স্কোপ আপডেট করতে চাইতে পারেন এবং ব্যবহারকারীর পছন্দগুলি শুনে কোনও নেস্টেড স্কোপগুলি স্বয়ংক্রিয়ভাবে সতর্ক হয়ে যাবে।
এটিকে জটিল মনে হতে পারে, বাস্তবে একবার আপনি এতে আরাম নেওয়ার পরে এটি উড়ানের মতো। আপনার template স্কোপ অবজেক্ট তৈরি করার দরকার নেই, AngularJS এটি আপনার জন্য সঠিকভাবে এবং যথাযথভাবে আপনার টেম্পলেট শ্রেণিবিন্যাসের উপর ভিত্তি করে ইনস্ট্যান্ট করে কনফিগার করে। এর পরে AngularJS নির্ভরতা ইনজেকশনটির যাদু ব্যবহার করে এটি আপনার উপাদানগুলিতে উপলব্ধ করে (আরও পরে এটি)।
ম্যানুয়াল ডিওএম বনাম ডেটা বাইন্ডিং পরিবর্তন করে
JQuery এ আপনি হাত দ্বারা আপনার সমস্ত DOM পরিবর্তন করেন। আপনি প্রোগ্রামিংয়ে নতুন ডিওএম উপাদান তৈরি করেন। আপনার যদি জেএসওএন অ্যারে থাকে এবং আপনি এটি ডিওমে রাখতে চান, আপনার এইচটিএমএল তৈরি করতে এবং এটি সন্নিবেশ করানোর জন্য আপনাকে অবশ্যই একটি ফাংশন লিখতে হবে।
AngularJS এ আপনি এটিও করতে পারেন, তবে আপনাকে ডেটা বাইন্ডিং ব্যবহার করতে উত্সাহিত করা হয়। আপনার মডেলটি পরিবর্তন করুন এবং এটি কোনও টেম্প্লেটের মাধ্যমে ডিওএমের সাথে আবদ্ধ কারণ আপনার ডোম স্বয়ংক্রিয়ভাবে আপডেট হবে, কোনও হস্তক্ষেপের প্রয়োজন হবে না।
ডেটা বাইন্ডিং টেমপ্লেট থেকে সম্পন্ন করা হয়, কোনও বৈশিষ্ট্য বা কোঁকড়ানো ব্রেস সিনট্যাক্স ব্যবহার করে, এটি করা অত্যন্ত সহজ। এর সাথে সামান্য জ্ঞানীয় ওভারহেড যুক্ত রয়েছে যাতে আপনি নিজেকে সর্বদা এটি করতে দেখবেন।
<input ng-model="user.name" />
ইনপুট উপাদানকে বেঁধে রাখে $scope.user.name
। ইনপুট আপডেট করা আপনার বর্তমান সুযোগের মান এবং তদ্বিপরীত আপডেট করবে।
অনুরূপভাবে:
<p>
{{user.name}}
</p>
অনুচ্ছেদে ব্যবহারকারীর নাম আউটপুট দেবে। এটি একটি লাইভ বাইন্ডিং, সুতরাং $scope.user.name
মানটি আপডেট করা হলে টেমপ্লেটটিও আপডেট হবে update
অজাক্স সময়
JQuery করার জন্য একটি আজাক্স কল মোটামুটি সহজ, তবে এটি এখনও এমন কিছু যা আপনি দ্বিগুণ ভাবেন। এটি সম্পর্কে ভাবার যুক্ত জটিলতা এবং বজায় রাখতে স্ক্রিপ্টের ন্যায্য অংশ রয়েছে।
অ্যাঙ্গুলারজেএস-এ, অ্যাজাক্স হ'ল আপনার ডিফল্ট গো টু সমাধান এবং এটি প্রায়শই আপনি লক্ষ্য না করেই ঘটে। আপনি এনজি-অন্তর্ভুক্ত টেম্পলেট অন্তর্ভুক্ত করতে পারেন। আপনি সাধারণ কাস্টম নির্দেশাবলীর সাহায্যে একটি টেম্পলেট প্রয়োগ করতে পারেন। আপনি কোনও পরিষেবাতে একটি অ্যাজাক্স কলটি लपेटতে পারেন এবং নিজেকে একটি গিটহাব পরিষেবা বা একটি ফ্লিকার পরিষেবা তৈরি করতে পারেন, যা আপনি অবাক করা স্বাচ্ছন্দ্যের সাথে অ্যাক্সেস করতে পারেন।
পরিষেবা বিষয়বস্তু বনাম সহায়ক কার্যাদি
JQuery- এ, আমরা যদি কোনও ছোট্ট নন-ডোম সম্পর্কিত কাজ যেমন কোনও এপিআই থেকে কোনও ফিড টানতে চাই, তবে আমাদের বন্ধ হয়ে যাওয়ার জন্য আমরা কিছুটা ফাংশন লিখতে পারি। এটি একটি বৈধ সমাধান, তবে আমরা যদি সেই ফিডটি প্রায়শই অ্যাক্সেস করতে চাই তবে কী হবে? আমরা যদি অন্য অ্যাপ্লিকেশনটিতে সেই কোডটি পুনরায় ব্যবহার করতে চাই?
AngularJS আমাদের পরিষেবা বস্তু দেয়।
পরিষেবাদিগুলি ফাংশন এবং ডেটা ধারণ করে এমন একটি সহজ অবজেক্ট contain এগুলি সর্বদা সিঙ্গেলন, যার অর্থ তাদের মধ্যে কখনও বেশি হতে পারে না। বলুন যে আমরা স্ট্যাক ওভারফ্লো এপিআই অ্যাক্সেস করতে চাই, আমরা এমন একটি লিখতে পারি StackOverflowService
যা এটি করার জন্য পদ্ধতিগুলি সংজ্ঞায়িত করে।
ধরা যাক আমাদের একটি শপিং কার্ট আছে। আমরা একটি শপিংকার্ট সার্ভিস সংজ্ঞায়িত করতে পারি যা আমাদের কার্ট বজায় রাখে এবং আইটেমগুলি যুক্ত এবং অপসারণের জন্য পদ্ধতি রয়েছে। কারণ পরিষেবাটি একটি সিঙ্গলটন, এবং অন্যান্য সমস্ত উপাদানগুলির দ্বারা ভাগ করা হয়, যে কোনও বস্তুর শপিং কার্টে লিখতে এবং এ থেকে ডেটা টানতে পারে needs এটি সর্বদা একই কার্ট।
পরিষেবা অবজেক্টসগুলি স্ব-অন্তর্ভুক্ত AngularJS উপাদান যা আমরা উপযুক্ত হিসাবে দেখতে ব্যবহার করতে এবং পুনরায় ব্যবহার করতে পারি। এগুলি ফাংশন এবং ডেটা সহ সহজ জাসন বস্তু। এগুলি সর্বদা সিঙ্গেলন, সুতরাং আপনি যদি কোনও পরিষেবাতে কোনও জায়গায় ডেটা সঞ্চয় করেন তবে আপনি একই পরিষেবাটির অনুরোধের মাধ্যমে সেই ডেটা অন্য কোথাও খুঁজে পেতে পারেন।
নির্ভরতা ইনজেকশন (ডিআই) বনাম ইনস্টিটিশন - ওরফে ডি-স্প্যাগটিটিফিকেশন
AngularJS আপনার জন্য আপনার নির্ভরতা পরিচালনা করে। আপনি যদি কোনও জিনিস চান, কেবল এটি উল্লেখ করুন এবং AngularJS এটি আপনার জন্য পাবেন।
যতক্ষণ না আপনি এটি ব্যবহার শুরু করেন, এটি বোঝা কঠিন যে এটি কীভাবে একটি বড় সময় বরাদ্দ। অ্যাঙ্গুলারজেএস ডিআই এর মতো কিছুই jQuery এর ভিতরে নেই।
ডিআই এর অর্থ হল আপনার অ্যাপ্লিকেশনটি লেখার এবং একসাথে তারের পরিবর্তে আপনি তার পরিবর্তে উপাদানগুলির একটি লাইব্রেরি সংজ্ঞায়িত করুন, প্রতিটি স্ট্রিং দ্বারা চিহ্নিত।
বলুন আমার কাছে 'ফ্লিকার সার্ভিস' নামে একটি উপাদান রয়েছে যা ফ্লিকার থেকে জেএসএন ফিডগুলি টানার জন্য পদ্ধতিগুলি সংজ্ঞায়িত করে। এখন, আমি যদি ফ্লিকারকে অ্যাক্সেস করতে পারে এমন কোনও নিয়ামক লিখতে চাই, আমি যখন নিয়ামক ঘোষণা করি তখন কেবল নাম অনুসারে আমাকে 'ফ্লিকারসেবার' উল্লেখ করতে হবে। AngularJS উপাদানটি ইনস্ট্যান্ট করার এবং এটি আমার নিয়ামকের কাছে উপলভ্য করার যত্ন নেবে care
উদাহরণস্বরূপ, আমি এখানে একটি পরিষেবা সংজ্ঞায়িত করেছি:
myApp.service('FlickrService', function() {
return {
getFeed: function() { // do something here }
}
});
এখন যখন আমি এই পরিষেবাটি ব্যবহার করতে চাই আমি কেবল নাম হিসাবে এটি উল্লেখ করি:
myApp.controller('myController', ['FlickrService', function(FlickrService) {
FlickrService.getFeed()
}]);
অ্যাঙ্গুলারজেএস স্বীকৃতি দেবে যে ফ্লিকার সার্ভিস অবজেক্টটি নিয়ামককে ইনস্ট্যান্ট করার জন্য প্রয়োজন, এবং এটি আমাদের জন্য সরবরাহ করবে।
এটি তারের জিনিসগুলি একসাথে খুব সহজ করে তোলে এবং স্পেগেটাইফিকেশনয়ের দিকে কোনও প্রবণতা দূর করে। আমাদের উপাদানগুলির একটি সমতল তালিকা রয়েছে, এবং কৌনিক জেএসগুলি যখন আমাদের প্রয়োজন হয় তখন সেগুলি একে একে আমাদের হাতে দেয়।
মডুলার পরিষেবা আর্কিটেকচার
আপনার কোডটি কীভাবে সংগঠিত করা উচিত সে সম্পর্কে jQuery খুব কম বলে। AngularJS এর মতামত রয়েছে।
AngularJS আপনাকে এমন মডিউল দেয় যাতে আপনি নিজের কোডটি রাখতে পারেন। আপনি যদি কোনও স্ক্রিপ্ট লিখছেন যা ফ্লিকারের সাথে কথা বলে উদাহরণস্বরূপ, আপনি আপনার ফ্লিকার সম্পর্কিত সমস্ত কার্যাদি মোড়ানোর জন্য একটি ফ্লিকার মডিউল তৈরি করতে চাইতে পারেন Mod মডিউলগুলিতে অন্যান্য মডিউল (ডিআই) অন্তর্ভুক্ত থাকতে পারে। আপনার প্রধান অ্যাপ্লিকেশনটি সাধারণত একটি মডিউল হয় এবং এতে আপনার অ্যাপ্লিকেশন নির্ভর করবে এমন সমস্ত মডিউলও এতে অন্তর্ভুক্ত করা উচিত।
আপনি সাধারণ কোডের পুনঃব্যবহার পাবেন, যদি আপনি ফ্লিকারের উপর ভিত্তি করে অন্য কোনও অ্যাপ্লিকেশন লিখতে চান তবে আপনি কেবল ফ্লিকার মডিউল এবং ভয়েলা অন্তর্ভুক্ত করতে পারেন, আপনার নতুন অ্যাপ্লিকেশনটিতে আপনার সমস্ত ফ্লিকার সম্পর্কিত ফাংশন অ্যাক্সেস রয়েছে।
মডিউলগুলিতে AngularJS উপাদান থাকে contain যখন আমরা একটি মডিউল অন্তর্ভুক্ত করি তখন সেই মডিউলটির সমস্ত উপাদানগুলি তাদের অনন্য স্ট্রিং দ্বারা চিহ্নিত একটি সাধারণ তালিকা হিসাবে আমাদের কাছে উপলব্ধ হয়ে যায় । এরপরে আমরা AngularJS এর নির্ভরতা ইনজেকশন প্রক্রিয়াটি ব্যবহার করে সেই উপাদানগুলিকে একে অপরের সাথে ইনজেক্ট করতে পারি।
যোগফল
AngularJS এবং jQuery শত্রু নয়। অ্যাংুলারজেএস-এর মধ্যে খুব সুন্দরভাবে jQuery ব্যবহার করা সম্ভব। যদি আপনি অ্যাংুলারজেএস ভালভাবে ব্যবহার করেন (টেমপ্লেটস, ডেটা-বাঁধাই, $ স্কোপ, নির্দেশিকা, ইত্যাদি) আপনি অন্যথায় প্রয়োজন হতে পারে তার চেয়ে আপনার অনেক কম jQuery প্রয়োজন।
আপনার প্রধান টেমপ্লেটটি আপনার অ্যাপ্লিকেশনটিকে চালিত করে realize বড় আকারের প্লাগইনগুলি লেখার চেষ্টা বন্ধ করুন যা সবকিছু করে। পরিবর্তে একটি ছোট্ট নির্দেশনা লিখুন যা একটি কাজ করে, তারপরে সেগুলি একসাথে তারের জন্য একটি সাধারণ টেম্পলেট লিখুন।
আপত্তিজনক জাভাস্ক্রিপ্ট সম্পর্কে কম চিন্তা করুন, এবং পরিবর্তে এইচটিএমএল এক্সটেনশনের বিবেচনা করুন।
আমার ছোট বই
অ্যাংুলার জেএস সম্পর্কে আমি খুব উচ্ছ্বসিত হয়েছি, আমি এটি নিয়ে একটি ছোট বই লিখেছি যা আপনাকে অনলাইন http://nicholasjohnson.com/angular-book/ পড়তে খুব স্বাগত জানায় । আমি আশা করি এটি সহায়ক।