ব্যাকবোন.জেসের উদ্দেশ্য কী?


442

আমি তার সাইট http://docamentcloud.github.com/backbone থেকে ব্যাকবোন.জেএস এর ইউটিলিটিটি বোঝার চেষ্টা করেছি , তবে আমি এখনও খুব বেশি কিছু বের করতে পারি না।

কেউ কীভাবে এটি কাজ করে তা ব্যাখ্যা করে এবং কীভাবে এটি আরও ভাল জাভাস্ক্রিপ্ট লেখার ক্ষেত্রে সহায়ক হতে পারে আমাকে সাহায্য করতে পারেন?


36
এটি একটি এমভিসি কাঠামো। এটি আপনাকে মডেলগুলিতে আপনার ডেটা বিমূর্ত করতে এবং আপনার ডোম ম্যানিপুলেশনকে দর্শনগুলিতে উত্সাহিত করে এবং ইভেন্টগুলি ব্যবহার করে দুটি একসাথে আবদ্ধ করতে উত্সাহ দেয়।
রায়নস

এমভিসির প্রসঙ্গে একটি "দর্শন" ইভেন্টগুলি কীভাবে পরিচালনা করতে পারে? ব্যাকবোনজস.আরোগ.আর তাদের দাবিতে এটিই দাবি করেছেন।

3
এটি শেখার মূল্য। শুরু করতে আমার বেশ কষ্ট হয়েছিল, তবে শেখার বক্ররে কিছুটা কুঁচকে উঠার পরেও আসলে এটি খুব কঠিন নয়। ওয়াইন সেলার ডেমো দিয়ে শুরু করুন।
kmitchel46725

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

আমি ভেবেছিলাম এটি একটি এমভিভিএম কাঠামো কারণ এটি আসলে নিয়ামক সরবরাহ করে না।
সমাধানযোগ্য নোনাগন

উত্তর:


393

ব্যাকবোন.জেএস মূলত একটি উবার-হালকা কাঠামো যা আপনাকে আপনার জাভাস্ক্রিপ্ট কোডটি এমভিসি (মডেল, দেখুন, নিয়ামক) ফ্যাশনে গঠন করতে দেয় যেখানে ...

মডেলটি আপনার কোডের একটি অংশ যা ডেটা পুনরুদ্ধার করে এবং পপুলেট করে,

দেখুন হ'ল এই মডেলটির এইচটিএমএল উপস্থাপনা (মডেল পরিবর্তিত হওয়ার সাথে সাথে মতামত পরিবর্তিত হয়))

এবং alচ্ছিক নিয়ামক যা এই ক্ষেত্রে আপনাকে আপনার জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনটির অবস্থা হ্যাশবাং ইউআরএল এর মাধ্যমে সংরক্ষণ করতে দেয়, উদাহরণস্বরূপ: http://twitter.com/#search?q=backbone.js

ব্যাকবোন দিয়ে আমি আবিষ্কার করেছি এমন কিছু উত্স:

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

  • আর নেই jQuery.data(bla, bla): ডিওমে ডেটা সঞ্চয় করার দরকার নেই, পরিবর্তে মডেলগুলিতে ডেটা সঞ্চয় করুন

  • ইভেন্ট বাঁধাই কাজ করে

  • ইন্ডোরস্কোর ইউটিলিটি লাইব্রেরি অত্যন্ত দরকারী

  • backbone.js কোড ভাল নথিভুক্ত এবং একটি দুর্দান্ত পঠিত। বেশ কয়েকটি জেএস কোড কৌশলগুলিতে আমার চোখ খুলেছে।

কনস:

  • আমার মাথাটি এটির চারপাশে মুড়িয়ে দেওয়ার জন্য এবং আমার কোডটিতে এটি কীভাবে প্রয়োগ করতে হবে তা নির্ধারণ করতে আমাকে কিছুটা সময় নিয়েছিল তবে আমি জাভাস্ক্রিপ্টের নবাগত।

ব্যাক-এন্ড হিসাবে রেলগুলির সাথে ব্যাকবোনটি ব্যবহার করার জন্য এখানে দুর্দান্ত টিউটোরিয়ালগুলির একটি সেট রয়েছে:

ক্লাউডএডিট: একটি ব্যাকবোন.জেএস রিয়েল সহ টিউটোরিয়াল:

http://www.jamesyu.org/2011/01/27/cloudedit-a-backbone-js-tutorial-by-example/

http://www.jamesyu.org/2011/02/09/backbone.js-tutorial-with-rails-part-2/

PS এছাড়াও এই দুর্দান্ত সংগ্রহ ক্লাস রয়েছে যা আপনাকে মডেলগুলির সংগ্রহ এবং নেস্টেড মডেলগুলির নকল করার সুযোগ দেয় তবে আমি আপনাকে শুরু থেকেই বিভ্রান্ত করতে চাই না।



16
এই উত্তরটি ভুল। ব্যাকবোন একটি এমভিসি কাঠামো নয়। এটি একটি এমভি * ফ্রেমওয়ার্ক। মূল উপাদানগুলি বোঝা এক ধরণের গুরুত্বপূর্ণ। এবং এটিতে কন্ট্রোলার নেই। শুভকামনা।

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

3
জ্যামমিট কি? ɯnɯıuıɯ ʇunoɔ ɹǝʇɔɐɹɐɥɔ
ব্যবহারকারী 1717828

1
RE: "jQuery.data (bla, bla): DOM এ ডেটা সংরক্ষণ করার দরকার নেই" আইআইআরসি, jQuery যেভাবেই মেমরির মধ্যে সঞ্চয় করে। অর্থাত্ এটি data-ডিওএম উপাদানগুলিতে ফিরিয়ে দেয় না। (সুতরাং data-পৃষ্ঠাটি লোড করার সময় যদি আপনার এইচটিএমএলটির বৈশিষ্ট্যগুলি থাকে এবং সেগুলি পরিবর্তন করা হয়, তবে ডিওএম এবং মেমরির ইন-মেমরি উপস্থাপনাটি ওওএস হতে পারে - তবে আপনার যেভাবেই হোক
মেমরির

250

আপনি যদি ব্রাউজারে জটিল ব্যবহারকারী ইন্টারফেস তৈরি করতে যাচ্ছেন তবে আপনি সম্ভবত অবশেষে ব্যাকবোন.জেএস এবং স্যামি.জেএস এর মতো ফ্রেমওয়ার্ক তৈরির বেশিরভাগ টুকরো আবিষ্কার করতে পারেন yourself সুতরাং প্রশ্নটি হল, আপনি ব্রাউজারটিতে এটি ব্যবহারের যোগ্যতার জন্য যথেষ্ট জটিল কিছু তৈরি করছেন (যাতে আপনি একই জিনিসটি নিজে আবিষ্কার করেন না)।

যদি আপনি যা তৈরির পরিকল্পনা করেন এমন কিছু যদি ইউআই নিয়মিতভাবে এটি প্রদর্শিত হয় তা পরিবর্তিত করে তবে পুরো নতুন পৃষ্ঠাগুলি পেতে সার্ভারে না যায় তবে আপনার সম্ভবত ব্যাকবোন.জেএস বা স্যামি.জেএস এর মতো কিছু দরকার। এরকম কোনও কিছুর মূল উদাহরণ হ'ল গুগলের জিমেইল। আপনি যদি এটি কখনও ব্যবহার করেছেন তবে খেয়াল করবেন যে এটি আপনি প্রথমে লগ ইন করার পরে এইচটিএমএল, সিএসএস এবং জাভাস্ক্রিপ্টের একটি বড় অংশটি ডাউনলোড করেন এবং তারপরে পটভূমিতে সবকিছু ঘটে। এটি কোনও ইমেল পড়া এবং ইনবক্স প্রক্রিয়াকরণ এবং অনুসন্ধানের মাধ্যমে এবং পুরো নতুন পৃষ্ঠার রেন্ডারিংয়ের জন্য কখনও জিজ্ঞাসা না করে আবার সেগুলির মধ্যে ফিরে যেতে পারে।

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

তবে আপনি যেটি নির্মাণের পরিকল্পনা করছেন তা কোনও কাঠামোর সাথে সম্পর্কিত লার্নিং কার্ভের পক্ষে যথেষ্ট জটিল না হলে এর কোনওটিরই গুরুত্ব নেই। আপনি যদি এখনও পিএইচপি, জাভা বা অন্য কোনও সাইট নির্মাণ করছেন যেখানে ব্যবহারকারীর অনুরোধে ওয়েব পৃষ্ঠাগুলি তৈরির পিছনে সার্ভার এখনও সমস্ত ভারী উত্তোলন করছে এবং জাভাস্ক্রিপ্ট / জ্যাকুয়েরি কেবল সেই প্রক্রিয়াটির উপরেই আইসিং দিচ্ছে, আপনি ' দরকার নেই বা ব্যাকবোন.জেএস এর জন্য এখনও প্রস্তুত নয়।


21
Gmail এর সাথে তুলনা করার জন্য ধন্যবাদ আমার পক্ষে এটি নির্ধারণের একটি সহজ উপায় ছিল যে সাইটটি আমি বিকাশ করছি তার জন্য আমাকে আরও সন্ধান করার দরকার নেই।
এরিক হু

15
আপনার প্রকল্পটি যথেষ্ট বড় হয়ে গেলে আপনি যেভাবেই ব্যাকবোন.জেস এর মতো কিছু লেখার সমাপ্তি ঘটানোর জন্য +1 উল্লেখ করুন: গ্রিনস্পানের দশম বিধি পুনরায়
ম্যাথিউ লক

আপনি যদি পিএইচপি বা ঠিক তেমন কিছু ব্যবহার করছেন কেবল কোনও ওয়েব সার্ভিসের জন্য শেষ পয়েন্ট হিসাবে তবে আপনি traditionalতিহ্যগত অনুরোধ / প্রতিক্রিয়া শৈলীর ওয়েব বিকাশের ফ্রেমওয়ার্কের 80 বা 90% ব্যবহার করছেন না। সুতরাং এই জাতীয় অ্যাপ্লিকেশনটি বনাম আরও একটি traditionalতিহ্যবাহী ওয়েব অ্যাপ তৈরির মধ্যে কীভাবে শেষ হয় তার মধ্যে একটি বড় পার্থক্য রয়েছে।
জন মুনসচ

2
আপনার জবাবের জন্য ধন্যবাদ জন এটির সত্যই আলোকিত
সুশীল ভরওয়ানি

1
জিমেইল রেফারেন্স সত্যিই আমার চোখ খুলেছে। ধন্যবাদ!
টি.কৌকোরন্ত

95

মেরুদণ্ড হ'ল ...

... উপাদানগুলির একটি খুব ছোট লাইব্রেরি যা আপনি আপনার কোডটি সংগঠিত করতে সহায়তা করতে পারেন। এটি একক জাভাস্ক্রিপ্ট ফাইল হিসাবে প্যাকেজড আসে। মন্তব্যগুলি বাদ দিলে এতে প্রকৃত জাভাস্ক্রিপ্টের 1000 টিরও কম লাইন রয়েছে। এটি সংবেদনশীলভাবে লেখা এবং আপনি কয়েক ঘন্টার মধ্যে পুরো জিনিসটি পড়তে পারেন।

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

আপনার যদি একটি এপিআই থাকে, ব্যাকবোনটিতে কয়েকটি সহায়ক বৈশিষ্ট্য রয়েছে যা আপনাকে এটিতে কথা বলতে সহায়তা করবে তবে আপনি কোনও স্থির এইচটিএমএল পৃষ্ঠায় ইন্টারঅ্যাক্টিভিটি যুক্ত করতে ব্যাকবোন ব্যবহার করতে পারেন।

ব্যাকবোনটি ...

... জাভাস্ক্রিপ্টে কাঠামো যুক্ত করা হচ্ছে।

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

  1. আমি আমার ডেটা কোথায় রাখব?
  2. আমি আমার কাজগুলি কোথায় রাখব?
  3. আমি কীভাবে আমার ফাংশনগুলি একসাথে ওয়্যার করব, যাতে তাদেরকে বুদ্ধিমান উপায়ে ডাকা হয় এবং স্প্যাগেটির দিকে না ফেরা হয়?
  4. আমি কীভাবে এই কোডটি বিভিন্ন বিকাশকারী দ্বারা রক্ষণাবেক্ষণযোগ্য করতে পারি?

ব্যাকবোন আপনাকে এই প্রশ্নের উত্তর দেওয়ার চেষ্টা করছে:

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

আমরা এটিকে একটি এমভি * প্যাটার্ন বলি। মডেল, ভিউ এবং 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 । আপনি প্রায় এক দিনের মধ্যে কোর্সটি সম্পূর্ণ করতে পারেন।


1
ভিউ প্রযুক্তিগতভাবে কোনও টেম্পলেট রেন্ডার করে না, আসলে 'নিজেই' নয়? মনে হচ্ছে এটি 'উপস্থাপক' বা 'ভিউমোডেল' চরিত্রে আরও অভিনয় করবে।
জোব্রোকহাউস

1
ভাল পয়েন্ট, যদিও ভিউ আপনাকে যা জিজ্ঞাসা করেছে তা রেন্ডার করতে পারে। এটি কোনও টেমপ্লেট, কিছু স্বেচ্ছাসেবী jQuery, বা এমনকি কোনও ফর্মের মানের মতো ছোট একটি কিছু বা ব্যাজে কোনও সংখ্যা হতে পারে।
সুপারলুমিনিয়ারি

3
@ সুপারলুমিনারি পুনরায় সাহায্য করে !!
এন্টোপস

2
অসাধারণ ব্যাখ্যা!
টেস্টি কোড 21

3
বইটি খুব সহায়ক। এটি লেখার জন্য ধন্যবাদ।
সুর ​​চো

32

এখানে একটি আকর্ষণীয় উপস্থাপনা:

ব্যাকবোন.জেএস-এ একটি পরিচিতি

ইঙ্গিত (স্লাইডগুলি থেকে):

  • ব্রাউজারে রেলস? কোন
  • জাভাস্ক্রিপ্টের জন্য একটি এমভিসি কাঠামো? Sorta
  • একটি বড় ফ্যাট রাষ্ট্র মেশিন? হ্যাঁ !

14

ব্যাকবোন.জেএস একটি জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক যা আপনাকে আপনার কোডটি সংগঠিত করতে সহায়তা করে। এটি আক্ষরিক অর্থে এমন একটি মেরুদণ্ড যা আপনি নিজের অ্যাপ্লিকেশনটি তৈরি করেন। এটি উইজেট সরবরাহ করে না (যেমন jQuery ইউআই বা দোজো)।

এটি আপনাকে বেস ক্লাসগুলির একটি দুর্দান্ত সেট দেয় যা আপনি পরিস্কার জাভাস্ক্রিপ্ট কোড তৈরি করতে প্রসারিত করতে পারেন যা আপনার সার্ভারে RESTful এন্ডপয়েন্টগুলির সাথে ইন্টারফেস করে।


আমি আমার প্রকল্পে jQuery এবং moolools এবং সাধারণ জাভাস্ক্রিপ্ট প্রচুর ব্যবহার করি। ব্যাকবোন.জেগুলি কীভাবে লরিং করা আমাকে এবং রিফুল এন্ডপয়েন্টে কী সাহায্য করবে my আমার প্রশ্নটি যদি বোঝায় না তবে দুঃখিত।
সুশীল ভরওয়ানি

1
jQuery মূলত ডিওএম ম্যানিপুলেশনের জন্য যেখানে ব্যাকবোনটি ইভেন্ট চালিত কাঠামোর হিসাবে পাশাপাশি মডেলিং ডেটার জন্য ব্যবহৃত হয়।
রবার্ট পিট

14

আপনার প্রকল্পের প্রচুর সরঞ্জাম সহ জিক্যুরি এবং মটুলগুলি কেবল একটি সরঞ্জামবাক্স। ব্যাকবোন আপনার প্রকল্পের জন্য একটি আর্কিটেকচার বা ব্যাকবোনগুলির মতো কাজ করে যার উপর আপনি JQuery বা Mootools ব্যবহার করে কোনও অ্যাপ্লিকেশন তৈরি করতে পারেন।


হ্যাঁ, নামটি ধারণ করা সহজ, উদাহরণস্বরূপ 'জ্যাকুয়ারি' এর অর্থ সম্ভবত 'জাভাস্ক্রিপ্ট ক্যোয়ারী' যা আসলে নিজের দ্বারা বোঝানো হয় না। তবে
এক্ষেত্রে এর পুরো

11

এটি একটি বেশ ভাল প্রাথমিক ভিডিও: http://vimeo.com/22685608

আপনি যদি রেলস এবং ব্যাকবোন সম্পর্কে আরও সন্ধান করে থাকেন, থটবোটের কাছে এই সুন্দর একটি ভাল বই রয়েছে (নিখরচায় নয়): https://workshops.thoughtbot.com/backbone-js-on-rails


11

আমাকে স্বীকার করতে হবে যে এমভিসির সমস্ত "সুবিধা" আমার কাজকে কখনও সহজ, দ্রুত বা আরও ভাল করে তুলেনি made এটি পুরো কোডিংয়ের অভিজ্ঞতাকে আরও বিমূর্ত এবং সময়সাপেক্ষ করে তোলে। বিচ্ছেদ বলতে কী বোঝায় এলিসের ধারণাকে ডিবাগ করার চেষ্টা করার সময় রক্ষণাবেক্ষণ একটি দুঃস্বপ্ন। জানেন না আপনি কতজন লোক কখনও এফএএলএক্স সাইট আপডেট করার চেষ্টা করেছেন যেটি কেয়ারঙ্গর্মকে এমভিসি মডেল হিসাবে ব্যবহার করেছে তবে আপডেট হতে 30 সেকেন্ড সময় লাগবে যা প্রায়শই 2 ঘন্টা সময় নিতে পারে (কেবল কোনও একক ঘটনা সন্ধানের জন্য শিকার / ট্রেসিং / ডিবাগিং) নিতে পারে )। এমভিসি ছিল এবং এখনও, আমার পক্ষে একটি "সুবিধা" যা আপনি স্টাফ করতে পারেন।


2
সত্যিই কোনও কাঠামো কাঠামো অজ্ঞান প্রোগ্রামার বা প্রোগ্রামার দ্বারা বিকৃত এবং বিকৃত করা যেতে পারে যা কেবল কোনও যত্ন দেয় না। আমি একবার একটি কোডআইগনিটার সাইটে কাজ করেছি যা নির্মাণের জন্য খুব সোজা এবং সহজ হওয়া উচিত ছিল। তবে আমি যে নির্বোধের সাথে কাজ করেছি সেগুলি 90 এর মতো কাজগুলি করতে অভ্যস্ত ছিল যে সে এটি একটি পরিষ্কার OOP পদ্ধতির থেকে ওওপি-র মধ্যে একটি বিকৃত পদ্ধতিগত পদ্ধতির কাছে পরিবর্তন করেছিল।
প্যাট্রিক 16

9
আমি কাউকে স্ক্র্যাচ থেকে কোনও সাইট লিখতে এবং কোনও ফ্রেমওয়ার্ক ব্যবহার না করে সুন্দর করে লিখতে দেখেছি। এক উপলক্ষে এটি অপেক্ষাকৃত নতুন / সবুজ পিএইচপি প্রোগ্রামার দ্বারা করা হয়েছিল। তিনি কেবলমাত্র খুব যুক্তিযুক্ত মন নিয়ে এসেছিলেন যা জিনিসগুলি বাস্তবায়নের জন্য বেশ চটজলদি উপায় তৈরি করে। একটি ভাল কাঠামো ব্যবহার করা আপনাকে কেবলমাত্র এতদূর পেতে পারে। যেখানে দুর্দান্ত প্রোগ্রামিং অনুশীলনগুলি ব্যবহার করা আপনাকে ভবিষ্যতে হালকা বছর নেবে।
প্যাট্রিক

2
@ ব্যবহারকারী ১৪১৪৪৪৪: আপনি যা বলছেন তা মূলত এর অর্থ হ'ল একক শ্রেণি থাকা যা ডেটা লজিক, রেন্ডারিং লজিক এবং প্রেজেন্টেশন লেয়ার উইজেট এবং ডেটা স্টোরেজ / পুনরুদ্ধার কোডের মধ্যে যোগাযোগ করে এই প্রতিটি উদ্বেগ পৃথক শ্রেণি / অবজেক্ট দ্বারা পরিচালিত হওয়ার চেয়ে বজায় রাখা সহজ। যা বিশ্বাস করা শক্ত। আপনি যদি
এমভিসির

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

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


3

backbone.js জাভাস্ক্রিপ্ট সহ মডেল-ভিউ-কন্ট্রোলার (এমভিসি) তবে জাভা স্ক্রিপ্ট দ্বারা এমভিসি প্যাটার্নের জন্য ব্যাকবোন থেকে ভাল এক্সট্রাজ

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


3

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

ব্যাকবোন বিকাশকারীদের তাদের ক্লায়েন্ট-সাইড ওয়েব অ্যাপ্লিকেশনটিতে একটি ডেটা মডেল পরিচালনা করতে সহায়তা করে যতটা শৃঙ্খলা এবং কাঠামো হিসাবে আপনি traditionalতিহ্যগত সার্ভার-সাইড অ্যাপ্লিকেশন যুক্তিতে পাবেন।

ব্যাকবোন.জেএস ব্যবহার করার অতিরিক্ত সুবিধা

  1. ব্যাকবোনটি লাইব্রেরি হিসাবে দেখুন, ফ্রেমওয়ার্ক হিসাবে নয়
  2. জাভাস্ক্রিপ্ট এখন কাঠামোগত উপায়ে (এমভিভিএম) মডেল সংগঠিত হচ্ছে
  3. বৃহত ব্যবহারকারীর সম্প্রদায়

2

এটি কেভিওর সাথে কন্ট্রোলার এবং ভিউগুলি ব্যবহার করে রাউটিং যুক্ত করে। আপনি এটির সাথে "AJAXy" অ্যাপ্লিকেশন বিকাশ করতে সক্ষম হবেন।

এটি একটি লাইটওয়েট স্প্রোটকোর বা ক্যাপুচিনো ফ্রেমওয়ার্ক হিসাবে দেখুন।


1

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


0

ইতিমধ্যে অনেক ভাল উত্তর। ব্যাকবোন জেএস কোডটি সংগঠিত রাখতে সহায়তা করে। মডেল / সংগ্রহ পরিবর্তন করা ভিউ রেন্ডারিং অটোমেটিক্যালটিটির যত্ন নেয় যা প্রচুর ওভারহেডকে হ্রাস করে।

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


-3

অনেকগুলি এজেএক্স অনুরোধগুলির সাথে প্রচুর ব্যবহারকারীর ইন্টারঅ্যাকশনের সাথে জড়িত একটি ওয়েব অ্যাপ্লিকেশন, যা সময়ে সময়ে পরিবর্তন করা দরকার এবং যা রিয়েল টাইমে চলে (যেমন ফেসবুক বা স্ট্যাকওভারফ্লো) ব্যাকবোন.জেএস এর মতো একটি এমভিসি কাঠামো ব্যবহার করা উচিত। এটি ভাল কোড তৈরির সেরা উপায়।

যদি অ্যাপ্লিকেশনটি কেবল সামান্য হয় তবে ব্যাকবোন.জেগুলি বিশেষত প্রথমবারের ব্যবহারকারীদের জন্য ওভারকিল হয়।

ব্যাকবোন আপনাকে ক্লায়েন্টের পক্ষে এমভিসি দেয় এবং এর দ্বারা নিযুক্ত সমস্ত সুবিধা।


5
"অবশ্যই" ব্যাকবোন ব্যবহার করবেন? আমি স্ট্যাকওভারফ্লো বা ফেসবুক দেখতে পাচ্ছি না, আপনার দুটি উদাহরণ, ব্যাকবোন বা আন্ডারস্কোর মোটেও ব্যবহার করে। আপনার কি সেই দাবির জন্য রেফারেন্স রয়েছে?
ডেভিড মিস্টার

অবশ্যই আরও অনেক এমভি * গ্রন্থাগার রয়েছে, ব্যাকবোন তাদের অন্যতম being সাধারণত যদিও, এমভিসি কোডের বড় অংশগুলিকে বিকাশ করার সময় জিনিসগুলিকে পরিষ্কার-পরিচ্ছন্ন রাখতে সহায়তা করে।
সুপারলুমিনারি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.