মেরুদণ্ড হ'ল ...
... উপাদানগুলির একটি খুব ছোট লাইব্রেরি যা আপনি আপনার কোডটি সংগঠিত করতে সহায়তা করতে পারেন। এটি একক জাভাস্ক্রিপ্ট ফাইল হিসাবে প্যাকেজড আসে। মন্তব্যগুলি বাদ দিলে এতে প্রকৃত জাভাস্ক্রিপ্টের 1000 টিরও কম লাইন রয়েছে। এটি সংবেদনশীলভাবে লেখা এবং আপনি কয়েক ঘন্টার মধ্যে পুরো জিনিসটি পড়তে পারেন।
এটি একটি ফ্রন্ট-এন্ড লাইব্রেরি, আপনি এটিকে স্ক্রিপ্ট ট্যাগ সহ আপনার ওয়েব পৃষ্ঠায় অন্তর্ভুক্ত করেন। এটি কেবল ব্রাউজারকেই প্রভাবিত করে এবং আপনার সার্ভার সম্পর্কে সামান্য কিছু বলে, এটিকে আদর্শভাবে একটি বিশ্রামপ্রাপ্ত এপিআই প্রকাশ করা উচিত।
আপনার যদি একটি এপিআই থাকে, ব্যাকবোনটিতে কয়েকটি সহায়ক বৈশিষ্ট্য রয়েছে যা আপনাকে এটিতে কথা বলতে সহায়তা করবে তবে আপনি কোনও স্থির এইচটিএমএল পৃষ্ঠায় ইন্টারঅ্যাক্টিভিটি যুক্ত করতে ব্যাকবোন ব্যবহার করতে পারেন।
ব্যাকবোনটি ...
... জাভাস্ক্রিপ্টে কাঠামো যুক্ত করা হচ্ছে।
জাভাস্ক্রিপ্ট কোনও নির্দিষ্ট নিদর্শন প্রয়োগ করে না তাই জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনগুলি খুব তাড়াতাড়ি খুব অগোছালো হয়ে উঠতে পারে। যে কেউ জাভাস্ক্রিপ্টে তুচ্ছ কিছু ছাড়িয়ে কিছু তৈরি করেছেন সম্ভবত এমন প্রশ্নের বিপরীতে আপ হবে:
- আমি আমার ডেটা কোথায় রাখব?
- আমি আমার কাজগুলি কোথায় রাখব?
- আমি কীভাবে আমার ফাংশনগুলি একসাথে ওয়্যার করব, যাতে তাদেরকে বুদ্ধিমান উপায়ে ডাকা হয় এবং স্প্যাগেটির দিকে না ফেরা হয়?
- আমি কীভাবে এই কোডটি বিভিন্ন বিকাশকারী দ্বারা রক্ষণাবেক্ষণযোগ্য করতে পারি?
ব্যাকবোন আপনাকে এই প্রশ্নের উত্তর দেওয়ার চেষ্টা করছে:
- আপনাকে ডেটা এবং ডেটা সংগ্রহের প্রতিনিধিত্ব করতে সহায়তা করতে মডেল এবং সংগ্রহগুলি।
- আপনার ডেটা পরিবর্তিত হলে আপনাকে নিজের ডোম আপডেট করতে সহায়তা করার জন্য দর্শনগুলি।
- একটি ইভেন্ট সিস্টেম যাতে উপাদানগুলি একে অপরকে শুনতে পারে। এটি আপনার উপাদানগুলিকে ডি-কাপলড রাখে এবং স্প্যাগেটিফিকেশন রোধ করে।
- বুদ্ধিমান কনভেনশনগুলির একটি ন্যূনতম সেট, যাতে বিকাশকারীরা একই কোডবেসে একসাথে কাজ করতে পারে।
আমরা এটিকে একটি এমভি * প্যাটার্ন বলি। মডেল, ভিউ এবং alচ্ছিক অতিরিক্ত।
মেরুদণ্ড হালকা
প্রাথমিক উপস্থিতি সত্ত্বেও, ব্যাকবোন চমত্কারভাবে হালকা, এটি খুব কমই কিছু করে। এটি যা করে তা খুব সহায়ক।
এটি আপনাকে এমন সামান্য অবজেক্টের একটি সেট দেয় যা আপনি তৈরি করতে পারেন এবং যা ইভেন্টগুলি নির্গত করতে এবং একে অপরকে শুনতে পারে। উদাহরণস্বরূপ কোনও মন্তব্যে প্রতিনিধিত্ব করার জন্য আপনি একটি সামান্য অবজেক্ট তৈরি করতে পারেন এবং তারপরে ব্রাউজারের কোনও নির্দিষ্ট জায়গায় মন্তব্যটির প্রদর্শন উপস্থাপন করার জন্য একটি সামান্য মন্তব্যভিউ অবজেক্ট।
মন্তব্যটি শোনার জন্য আপনি মন্তব্যভিউকে বলতে পারবেন এবং মন্তব্য পরিবর্তিত হলে নিজেই আবার ছবি আঁকতে পারেন। এমনকি আপনার পৃষ্ঠায় বেশ কয়েকটি জায়গায় একই মন্তব্য প্রদর্শিত হলেও এই সমস্ত মতামত একই মন্তব্য মডেলটি শুনতে এবং সিঙ্কে থাকতে পারে।
কোডগুলি রচনা করার এই উপায়টি আপনাকে জটিল করে ফেলতে সহায়তা করে এমনকি আপনার কোডবেস অনেকগুলি ইন্টারঅ্যাকশন সহ খুব বড় হয়ে যায়।
মডেল
যখন শুরু, এটি সাধারণ আপনার ডেটা পারেন একটি বিশ্বব্যাপী পরিবর্তনশীল অথবা সঞ্চয় করতে, যেমন DOM মধ্যে ডেটা বৈশিষ্ট্যাবলী । এই দুজনেরই সমস্যা আছে। গ্লোবাল ভেরিয়েবলগুলি একে অপরের সাথে বিরোধ করতে পারে এবং এটি সাধারণত খারাপ ফর্ম। DOM এ সঞ্চিত ডেটা অ্যাট্রিবিউটগুলি কেবল স্ট্রিংস হতে পারে, আপনাকে সেগুলি আবার এবং পরে পার্স করতে হবে। অ্যারে, খেজুর বা অবজেক্টের মতো জিনিস সঞ্চয় করা এবং কাঠামোগত আকারে আপনার ডেটা পার্স করা কঠিন।
ডেটা অ্যাট্রিবিউটগুলি এর মতো দেখাচ্ছে:
<p data-username="derek" data-age="42"></p>
ব্যাকবোন আপনার ডেটা এবং সম্পর্কিত পদ্ধতিগুলি উপস্থাপনের জন্য একটি মডেল অবজেক্ট সরবরাহ করে এটি সমাধান করে । বলুন আপনার একটি টুডু তালিকা রয়েছে, সেই তালিকার প্রতিটি আইটেমের প্রতিনিধিত্বকারী আপনার কাছে একটি মডেল থাকবে।
যখন আপনার মডেলটি আপডেট হয়, এটি একটি ইভেন্টে আগুন দেয়। আপনার নির্দিষ্ট ভিউটির সাথে একটি ভিউ বাঁধা থাকতে পারে। দর্শনটি মডেল পরিবর্তনের ইভেন্টগুলির জন্য শোনায় এবং নিজেকে পুনরায় রেন্ডার করে।
দেখেছে
ব্যাকবোন আপনাকে ডিওমে কথা বলে এমন বস্তুগুলি সরবরাহ করে। সমস্ত ফাংশন যা ডিওএমকে পরিচালনা করে বা ডিওএম ইভেন্টগুলি শোনায় এখানে যায়।
একটি ভিউ সাধারণত একটি রেন্ডার ফাংশন প্রয়োগ করে যা পুরো দর্শন, বা সম্ভবত দর্শনের অংশটিকে আবার অঙ্কিত করে। রেন্ডার ফাংশন বাস্তবায়নের কোনও বাধ্যবাধকতা নেই, তবে এটি একটি সাধারণ সম্মেলন।
প্রতিটি দৃশ্য ডিওমের একটি নির্দিষ্ট অংশে আবদ্ধ, যাতে আপনার কাছে অনুসন্ধানের ফর্মভিউ থাকতে পারে যা কেবল অনুসন্ধান ফর্মটি এবং শপিংকার্টভিউ শোনে যা কেবল শপিং কার্ট প্রদর্শন করে।
দর্শনগুলি সাধারণত নির্দিষ্ট মডেল বা সংগ্রহগুলির জন্যও আবদ্ধ। যখন মডেল আপডেট হয়, তখন এটি এমন একটি ইভেন্ট চালায় যা দর্শন শোনায়। দৃশ্যটি তাদের পুনরায় চিত্রের জন্য রেন্ডার বলে call
তেমনি, আপনি যখন কোনও ফর্ম টাইপ করেন, তখন আপনার দর্শন একটি মডেল অবজেক্ট আপডেট করতে পারে। সেই মডেলটি শোনার অন্যান্য প্রতিটি ভিউ তার নিজস্ব রেন্ডার ফাংশনটিকে কল করবে।
এটি আমাদের উদ্বেগগুলির একটি পরিষ্কার বিচ্ছিন্নতা দেয় যা আমাদের কোডটি পরিস্কার ও পরিচ্ছন্ন রাখে।
রেন্ডার ফাংশন
আপনি আপনার রেন্ডার ফাংশনটিকে যেভাবেই উপযুক্ত দেখেন তেমন প্রয়োগ করতে পারেন। ম্যানুয়ালি ডিওএম আপডেট করার জন্য আপনি এখানে কিছু jQuery রেখে দিতে পারেন।
আপনি একটি টেমপ্লেটও সংকলন করতে পারেন এবং এটি ব্যবহার করতে পারেন। একটি টেমপ্লেট সন্নিবেশ পয়েন্ট সহ একটি স্ট্রিং। আপনি এটি JSON অবজেক্টের সাথে একটি সংকলন ফাংশনে পাস করুন এবং একটি সংকলিত স্ট্রিং ফিরে পাবেন যা আপনি আপনার ডিওমে intoোকাতে পারবেন।
সংগ্রহগুলি
আপনার সংগ্রহগুলিতেও অ্যাক্সেস রয়েছে যা মডেলের তালিকাগুলি সংরক্ষণ করে, তাই একটি টুডক্লিকেশনটি টুডো মডেলের তালিকা হবে। যখন কোনও সংগ্রহ কোনও মডেল অর্জন করে বা হারায়, তার ক্রম পরিবর্তন করে বা কোনও সংগ্রহের আপডেটে কোনও মডেল দেয়, পুরো সংগ্রহটি কোনও ইভেন্টে আগুন দেয়।
একটি ভিউ একটি সংগ্রহ শুনতে এবং যখনই আপডেট আপডেট হয় তখন নিজেকে আপডেট করতে পারে।
আপনি আপনার সংগ্রহে বাছাই এবং ফিল্টার পদ্ধতি যুক্ত করতে এবং উদাহরণস্বরূপ এটিকে স্বয়ংক্রিয়ভাবে সাজিয়ে তুলতে পারেন।
এবং ইভেন্টগুলি একসাথে টাই করার জন্য
যতটা সম্ভব, অ্যাপ্লিকেশন উপাদানগুলি একে অপর থেকে ডিকোপল করা হয়। তারা ইভেন্টগুলি ব্যবহার করে কথোপকথন করে, তাই শপিংকার্টভিউ শপিংকার্ট সংগ্রহটি শুনতে পারে এবং কার্টটি যুক্ত করা হলে নিজেকে পুনরায় আঁকতে পারে।
shoppingCartView.listenTo(shoppingCart, "add", shoppingCartView.render);
অবশ্যই, অন্যান্য অবজেক্টগুলিও শপিংকার্টে শোনার মতো হতে পারে এবং মোট আপডেট করার মতো অন্যান্য জিনিসও করতে পারে বা স্থানীয় স্টোরেজে রাষ্ট্রটিকে সংরক্ষণ করতে পারে।
- মডেলগুলি শোনার জন্য মডেলগুলি শোনায় এবং মডেলটি পরিবর্তিত হয় Views
- যখন সংগ্রহের কোনও আইটেম পরিবর্তিত হয় তখন দর্শনগুলি সংগ্রহগুলি শুনতে এবং একটি তালিকা (বা একটি গ্রিড, বা একটি মানচিত্র ইত্যাদি) রেন্ডার করে।
- মডেলগুলি দর্শন শোনেন যাতে তারা স্থিতি পরিবর্তন করতে পারে, সম্ভবত কোনও ফর্ম সম্পাদনা করা হয়।
আপনার অবজেক্টগুলিকে এই জাতীয়ভাবে সাজিয়ে তোলা এবং ইভেন্টগুলি ব্যবহার করে যোগাযোগ করার অর্থ আপনি কখনই গিঁটে পড়বেন না এবং নতুন উপাদান এবং আচরণ যুক্ত করা সহজ। আপনার নতুন উপাদানগুলি কেবলমাত্র সিস্টেমে থাকা অন্যান্য অবজেক্টগুলিকে শুনতে হবে।
কনভেনশন
ব্যাকবোনটির জন্য লিখিত কোডটি কনভেনশনগুলির একটি শিথিল সেট অনুসরণ করে। ডোম কোড একটি ভিউতে অন্তর্ভুক্ত। সংগ্রহ কোড একটি সংগ্রহে অন্তর্ভুক্ত belongs ব্যবসায় যুক্তি একটি মডেল যায়। আপনার কোডবেস তুলে নেওয়া অন্য বিকাশকারী গ্রাউন্ডে চলতে সক্ষম হবেন।
যোগফল
ব্যাকবোন হ'ল একটি হালকা গ্রন্থাগার যা আপনার কোডের কাঠামোকে ধার দেয় le উপাদানগুলি decoupled এবং ইভেন্টের মাধ্যমে যোগাযোগ করা হয় যাতে আপনি কোনও গোলমেলে না পড়ে। আপনি সহজেই নতুন কোড তৈরি করে এবং আপনার বিদ্যমান অবজেক্টগুলিকে যথাযথভাবে শোনার মাধ্যমে আপনার কোডবেসটি সহজেই প্রসারিত করতে পারেন। আপনার কোডটি পরিষ্কার, সুন্দর এবং আরও রক্ষণাবেক্ষণযোগ্য হবে।
আমার ছোট বই
আমি ব্যাকবোনকে এত পছন্দ করেছিলাম যে আমি এটি সম্পর্কে একটি সামান্য ভূমিকা বই লিখেছি। আপনি এটি অনলাইনে এখানে পড়তে পারেন: http://nicholasjohnson.com/backbone-book/
আমি উপাদানগুলি একটি ছোট অনলাইন কোর্সেও ভেঙে দিয়েছি, যা আপনি এখানে পেতে পারেন: http://www.forwardadvance.com/course/backbone । আপনি প্রায় এক দিনের মধ্যে কোর্সটি সম্পূর্ণ করতে পারেন।