ব্যাকবোন.জেএস এর ভিত্তিতে অনেক ফ্রেমওয়ার্কের আসল-বিশ্ব শক্তি এবং দুর্বলতাগুলি কী কী? [বন্ধ]


186

আশা করি কেউ কেউ তার অভিজ্ঞতা সাম্প্রতিক উদীয়মান ব্যাকবোন.জেএস ভেরিয়েন্টগুলির সাথে ভাগ করে নিতে পারেন। বেশ কয়েকটি প্রকল্পে ব্যাকবোন / আন্ডারস্কোর / প্রয়োজনের সাথে আমার কিছু ভাল অভিজ্ঞতা রয়েছে এবং আমি জটিল অ্যাপ্লিকেশন কাঠামোর জন্য আরও উন্নত সমাধানের দিকে পরবর্তী পদক্ষেপ নিতে চাই।

আমি জানি যে নিম্নলিখিত ফ্রেমওয়ার্কগুলি উপলব্ধ:

এবং সম্ভবত আমি কয়েক মিস।

পার্থক্য সম্পর্কে এখানে একটি সংক্ষিপ্ত ভূমিকা রয়েছে:

তবে এটি খুব সাধারণ। আমি ভাবছিলাম যে কেউ যদি এই ফ্রেমওয়ার্কগুলি ব্যবহার করে বাস্তব জীবনের অ্যাপ্লিকেশনগুলির সাথে তাদের অভিজ্ঞতা ভাগ করে নিতে পারে।

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

অবশ্যই, সুস্পষ্ট উত্তরটি হ'ল " আপনার প্রয়োজনের জন্য সবচেয়ে ভাল ব্যবহার করুন ", তবে তাদের শক্তি / উদ্দেশ্য / সুবিধাগুলি বা পছন্দসই পরিস্থিতিগুলি জানার জন্য আমার এই ফ্রেমওয়ার্কগুলির সাথে অভিজ্ঞতার অভাব রয়েছে।

ধন্যবাদ!

সম্পাদনা 1: এই পোস্টটি খুঁজে পেয়েছে: ব্যাকবোন.মারিওনেট বনাম ব্যাকবোন-বয়লারপ্লেট

সম্পাদনা 2: ম্যাথিয়াস শিফার (চ্যাপলিন) এর মাধ্যমে মেইলের মাধ্যমে উত্তর দিন:

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

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

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

চ্যাপলিনে, আপনি কয়েকটি রুটকে কন্ট্রোলারগুলিতে মানচিত্রের ঘোষণা দেন এবং চ্যাপলিন রুটটি মিলে গেলে নিয়ামক শুরু করে। এটি পুরানো কন্ট্রোলারগুলির নিষ্পত্তি এবং প্রধান দৃষ্টিভঙ্গি প্রদর্শন এবং গোপনের যত্নও নেয়, যা একটি নিয়ামক তৈরির কথা বলে। এটি প্রাথমিক ধারণা, তবে চ্যাপলিন এই রানটি সুচারুভাবে চালাতে কুরুচিপূর্ণ বিশদটির যত্ন নেয়।

এই কাঠামোর সাথে এখানে দুটি প্রিন্সিপাল রয়েছে: - মডুলারাইজেশন, ডিকোপলিং এবং স্যান্ডবক্সিং - প্রকাশ / সদস্যতা এবং মধ্যস্থতাকারী (গুলি) ব্যবহার করে ক্রস-মডিউল যোগাযোগ

সফ্টওয়্যার ডেভলপমেন্ট বিশ্বে অবশ্যই এই নিদর্শনগুলি নতুন নয় এবং চ্যাপলিন একমাত্র লাইব্রেরি নয় যা সেগুলি ব্যাকবোন.জেএস অ্যাপগুলিতে প্রয়োগ করে।

চ্যাপলিন ভিউ স্তরের জন্য উন্নততাও সরবরাহ করে, উদাহরণস্বরূপ একটি অত্যন্ত পরিশীলিত কালেকশন ভিউ, তবে মোট অঞ্চল এবং লেআউটগুলির সাথে মেরিয়েনেটের মতো মোটামুটি নয়। তবে চ্যাপলিন ভিউ সরবরাহকারী উপায়গুলি ব্যবহার করে এ জাতীয় মেটা ক্লাস লিখতে তুলনামূলক সহজ।


12
+1 আপনার প্রশ্নটি স্পটটিতে এসেছিল। গত এক-দুই বছরে কাঠামোর হাইপ কিছু প্রকারের অগনিত আর্কিটেকচার দ্বারা অনুপ্রাণিত প্রকল্পগুলির সাথে ল্যান্ডস্কেপটি প্রস্ফুটিত হয়েছে যা সত্যই পার্থক্য করা শক্ত each প্রত্যেকটি কিছুটা নিজস্ব করার জন্য এবং প্রায়শই জিনিসগুলি করার জন্য ফুলকৃত পদ্ধতির বেশি প্রয়োগ করে। উল্লেখ্য এটি একটি মন্তব্য :)
কনটুর

উত্তর:


132

বেশিরভাগ (সমস্ত?) ফ্রেমওয়ার্ক যা আপনি একই সমস্যার সমাধানের দিকে তাকিয়ে রয়েছেন, তবে তারা কিছুটা ভিন্ন লক্ষ্যে কিছুটা ভিন্ন লক্ষ্যে এটি করেন।

আমি মনে করি যে এটা বলা মোটেও সঠিক যে এই সমস্ত প্রকল্পগুলি এই বিভাগগুলির সমস্যাগুলি সমাধান করবে:

  • ডিফল্টগুলির বোধগম্য সেট সরবরাহ করুন
  • বয়লারপ্লেট কোড হ্রাস করুন
  • ব্যাকবোনজেএস বিল্ডিং ব্লকগুলির উপরে অ্যাপ্লিকেশন কাঠামো সরবরাহ করুন
  • লেখকরা তাদের অ্যাপগুলিতে ব্যবহার করেন এমন নিদর্শনগুলি বের করুন Ext

মেরিনেট, যা আমি ২০১১ সালের ডিসেম্বর থেকে তৈরি করছি, এর কয়েকটি খুব স্বতন্ত্র লক্ষ্য এবং আদর্শও রয়েছে, যেমন:

  • সমন্বিত অ্যাপ্লিকেশন আর্কিটেকচার
  • এন্টারপ্রাইজ মেসেজিং প্যাটার্ন প্রভাব
  • Modulariization বিকল্পসমূহ
  • বর্ধিত ব্যবহার (কোনও কিছুর প্রয়োজন নেই)
  • কোনও সার্ভার লক-ইন নেই
  • এই ডিফল্টগুলি পরিবর্তন করা সহজ করুন
  • কনফিগারেশন / ওভার কনফিগারেশন হিসাবে কোড

আমি বলছি না অন্য ফ্রেমওয়ার্কগুলির কোনওটিরই একই লক্ষ্য নেই। তবে আমি মনে করি মেরিওনেটের স্বতন্ত্রতা এই লক্ষ্যগুলির সংমিশ্রণ থেকে এসেছে।

সমন্বিত অ্যাপ্লিকেশন আর্কিটেকচার

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

মূল ধারণাটি হ'ল আপনার অ্যাপ্লিকেশনটির রানটাইম অভিজ্ঞতা এবং রচনাটি অনেক ছোট, স্বতন্ত্র টুকরো যেগুলি একে অপরের সম্পর্কে অগত্যা জানে না of তারা সামগ্রিক সংমিশ্রণ অ্যাপ্লিকেশন সিস্টেমের সাথে নিজেকে নিবন্ধভুক্ত করে এবং তারপরে তারা ডিউপলড বার্তা এবং কলগুলির বিভিন্ন মাধ্যমে যোগাযোগ করে।

আমি আমার ব্লগে এই সম্পর্কে কিছুটা লিখেছি, মেরিবোনেটকে ব্যাকবোনটির জন্য একটি যৌগিক অ্যাপ্লিকেশন আর্কিটেকচার হিসাবে পরিচয় করিয়ে দিয়েছি:

বার্তা সারি / প্যাটার্নস

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

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

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

modularization

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

মেরিনেট এটির moduleসংজ্ঞা দিয়ে সরাসরি মডুলারাইজেশন সরবরাহ করে । তবে আমি এটিও স্বীকৃতি দিয়েছি যে কিছু লোক RequireJS পছন্দ করে এবং এটি ব্যবহার করতে চায়। সুতরাং আমি একটি স্ট্যান্ডার্ড বিল্ড এবং একটি প্রয়োজনীয় জেএস সুসংগত বিল্ড উভয়ই সরবরাহ করি।


MyApp = new Backbone.Marionette.Application();

MyApp.module("MyModule", function(MyModule, MyApp, Backbone, Marionette, $, _){

  // your module code goes here

});

(এখনও এর জন্য কোনও ব্লগ পোস্ট উপলব্ধ নেই)

বর্ধিত ব্যবহার

মেরিয়েনেটের প্রতিটি অংশে আমি যে মূল দর্শন পেয়েছি তা হ'ল: মেরিওনেট ব্যবহারের জন্য কোনও "অল-অ-কিছুই" প্রয়োজন নেই।

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

সে লক্ষ্যে, আমি মেরিওনেটে তৈরি করেছি বেশিরভাগ টুকরাগুলি একা দাঁড়িয়ে, ব্যাকবোনটির মূল টুকরো নিয়ে কাজ করার জন্য এবং আরও ভালভাবে একসাথে কাজ করার জন্য নির্মিত।

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


MyApp.addRegions({
  someRegion: "#some-div"
});

MyApp.someRegion.show(new MyView());

তবে অঞ্চলটি ব্যবহার করার জন্য আপনাকে মেরিওনেটের দৃষ্টিভঙ্গি ব্যবহার করার দরকার নেই। একমাত্র প্রয়োজন হ'ল আপনি ব্যাকবোন থেকে প্রসারিত করছেন the অবজেক্টের প্রোটোটাইপ শৃঙ্খলার কোনও পর্যায়ে দেখুন। আপনি যদি কোনও closeপদ্ধতি, কোনও onShowপদ্ধতি বা অন্যকে সরবরাহ করা চয়ন করেন তবে মেরিওনেট অঞ্চলটি আপনার জন্য এটি সঠিক সময়ে কল করবে।

সার্ভার লক-ইন নেই

আমি বিভিন্ন সার্ভার প্রযুক্তির উপরে ব্যাকবোন / মেরিওনেট অ্যাপস তৈরি করি:

  • এএসপি.নেট এমভিসি
  • রুবেলে রেল
  • রুবি / সিনেট্রা
  • নোডজেএস / এক্সপ্রেসজেএস
  • পিএইচপি / স্লিম
  • জাভা
  • Erlang
  • ... এবং আরও অনেক কিছু

জাভাস্ক্রিপ্টটি জাভাস্ক্রিপ্ট, যখন এটি ব্রাউজারে চলার বিষয়টি আসে। সার্ভার সাইড জাভাস্ক্রিপ্টও দুর্দান্ত, তবে আমি কীভাবে আমার ব্রাউজার ভিত্তিক জাভাস্ক্রিপ্ট লিখি তার উপরে শূন্য প্রভাব বা প্রভাব রয়েছে।

যে প্রকল্পগুলিতে আমি তৈরি করেছি এবং তার ক্লায়েন্টগুলি ব্যাক-এন্ড প্রযুক্তিগুলি ব্যবহার করে তার বৈচিত্রের কারণে আমি কোনও কারণে কোনও একক সার্ভার সাইড প্রযুক্তি স্ট্যাকের মধ্যে মেরিয়নেটকে লক করতে পারি না এবং করব না। আমি একটি বয়লারপ্লেট প্রকল্প সরবরাহ করব না। আমি কোনও রুবি রত্ন বা এনপিএম প্যাকেজ সরবরাহ করব না। আমি চাই লোকেরা বুঝতে পারে যে মেরিওনেটের জন্য নির্দিষ্ট ব্যাক-এন্ড সার্ভারের প্রয়োজন হয় না। এটি ব্রাউজারটি জাভাস্ক্রিপ্ট ভিত্তিক, এবং পিছনের দিকটির কোনও বিষয় নেই।

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

সহজেই ডিফল্ট পরিবর্তন করুন

বয়লারপ্লেট কোড হ্রাস করার এবং বুদ্ধিমান ডিফল্টগুলি সরবরাহ করার জন্য আমার প্রচেষ্টায় (যা একটি ধারণা যা আমি সরাসরি টিম ব্রায়েনের লেআউটম্যানেজারের কাছ থেকে "ধার" পেয়েছি), আমি অন্যান্য বিকাশকারীদের আমার চেয়ে কিছুটা আলাদা বাস্তবায়ন ব্যবহার করার প্রয়োজনীয়তাকে স্বীকার করি।

আমি <script>ডিফল্টরূপে টেম্পলেটগুলি বোঝার জন্য টেমপ্লেটগুলির জন্য ইনলাইন ট্যাগগুলির উপর ভিত্তি করে রেন্ডারিং সরবরাহ করি । তবে আপনি মেরিয়নেটে Rendererএবং / অথবা TempalteCacheঅবজেক্টগুলি পরিবর্তন করে এটি প্রতিস্থাপন করতে পারেন । এই দুটি বস্তু রেন্ডারিং ক্ষমতাগুলির মূল সরবরাহ করে এবং এখানে উইকি পৃষ্ঠাগুলি রয়েছে যা নির্দিষ্ট টেম্প্লেটিং ইঞ্জিন এবং টেম্পলেট লোড করার বিভিন্ন উপায়ে কীভাবে এটি পরিবর্তন করতে পারে তা দেখায়।

মেরিনেটের v0.9 এর সাথে এটি আরও সহজ হয়ে যায়। উদাহরণস্বরূপ, আপনি যদি প্রাক-সংকলিত টেম্পলেটগুলির সাথে ইনলাইন টেম্পলেট স্ক্রিপ্ট ব্লকগুলির ব্যবহার প্রতিস্থাপন করতে চান তবে আপনাকে কেবলমাত্র রেন্ডারারে একটি পদ্ধতি প্রতিস্থাপন করতে হবে:


Backbone.Marionette.Renderer.render = function(template, data){
  return template(data);
};

এবং এখন পুরো অ্যাপ্লিকেশনটি প্রাক-সংকলিত টেম্পলেটগুলি ব্যবহার করবে যা আপনি আপনার দর্শনের templateবৈশিষ্ট্যের সাথে সংযুক্ত করেন ।

এমনকি আমি একটি মেরিনেট সরবরাহ করি v v0.9 এর সাথে একটি অ্যাঙ্ক-অন্যাস যা আপনাকে অবিচ্ছিন্নভাবে রেন্ডারিং ভিউগুলিকে সমর্থন করতে সহায়তা করে। মেরিনিয়েটে ডিফল্ট আচরণগুলি প্রতিস্থাপন করা যতটা সম্ভব সহজ করার জন্য আমি অবিরাম চেষ্টা করছি ve

কনফিগারেশন হিসাবে কোড

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

এটি উদ্দেশ্য এবং উদ্দেশ্য নিয়ে করা হয়।

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

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

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

আপনি মেরিওনেটে কোনও "কনফিগার" বা "বিকল্পগুলি" API খুঁজে পাবেন না। তবে আপনি বিপুল সংখ্যক পদ্ধতি আবিষ্কার করতে পারবেন যা প্রত্যেকে স্বচ্ছ স্বাক্ষর সহ খুব নির্দিষ্ট উদ্দেশ্যে পরিবেশন করে, যা মেরিওনেট কীভাবে কাজ করে তা পরিবর্তন করা সহজ করে তোলে।


16
কেন এটি সর্বোচ্চ রেটযুক্ত উত্তর? এটি প্রশ্নের উত্তর দেয় না - এটি মূলত মেরিনেটের জন্য একটি ইতিহাস / বিজ্ঞাপন ...
জেস টেলফোর্ড

@ জেসটেলফোর্ড আপনি এই প্রশ্নটি পুনরায় পড়তে চাইতে পারেন, এটির উত্তরের এটি একটি দুর্দান্ত উত্তর।
মোর

@ আরও প্রশ্নটি হল What is the benefit of choosing one over the other?- এই উত্তরটি Marionette [...] has a few very distinct goals and ideals in mind, যা একবার নিজেকে অন্য কাঠামোর সাথে তুলনা করে না। যদি প্রশ্নটি ছিল তবে দয়া করে এই ফ্রেমওয়ার্কগুলির প্রতিটি কী করতে পারে তা ব্যাখ্যা করুন , তবে নিশ্চিত, এটি দুর্দান্ত উত্তর। তবে তা হয়নি। এবং এটা না।
জেস টেলফোর্ড

@ জেসটেলফোর্ড প্রশ্নটি পরিষ্কারভাবে একাধিক উত্তর চেয়েছে। এই একটি মেরিয়নেটকে যে শক্তি এবং সমস্যাগুলি দেখায় তা উল্লেখ করে। প্রশ্নটি পড়ার পরে, আমি এই উত্তরটি সত্যই সহায়ক বলে মনে করেছি। অগত্যা আমার মতে সেরা, তবে তা তবে এটি একটি ভাল উত্তর। ওহ, এবং প্রশ্ন হচ্ছে, What are the strengths and weaknesses of...
mor লেহন

@ এমএম আমাকে ভুল করবেন না - এটি মেরিওনেটের একটি খুব সম্পূর্ণ এবং সুস্পষ্ট বর্ণনা and আমি মনে করি না যে এটি প্রশ্নের উত্তর দেয়। যে কোনও হারে, উত্তোলনগুলি এটির একটি উত্তরের উত্তর।
জেস টেলফোর্ড

25

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

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


13

আমি ব্যাকবোন.জেএস দিয়ে তৈরি বিভিন্ন ফ্রেমওয়ার্কগুলি অধ্যয়ন করেছি এবং হাটলুক-এ একটি প্রকল্পের জন্য ভার্টব্রে তৈরি করেছি। প্রকল্পের লক্ষ্য অন্তর্ভুক্ত ... ডায়নামিক স্ক্রিপ্ট লোডিং, এএমডি মডিউল ফর্ম্যাট, নির্ভরতা পরিচালন, বেশিরভাগ ওপেন সোর্স লাইব্রেরি দিয়ে তৈরি করা, প্যাকেজগুলিতে কোড সংগঠিত করা, এক বা একাধিক একক পৃষ্ঠার অ্যাপ্লিকেশনগুলির জন্য অনুকূলিতকরণ এবং বিল্ড করা, সম্পূর্ণ ক্যাশেড সার্ভারে হোস্ট, যেমন কোনও সার্ভার নয় প্রকল্পের জন্য কেবল চালিত ডেটা এবং কেবল মজাদার জন্য এপিআই ব্যবহার করে স্ক্রিপ্টিং side প্রকল্পটিতে এখানে একটি বিবরণ রয়েছে: http://www.hautelooktech.com/2012/05/24/vertebrae-front-end-framework-built-with-backbone-js-and-requirejs- using-amd/

আমাদের সমস্যা:

বাছাই করা লাইব্রেরি (jQuery, বুঝি , যেমন (প্রতিশ্রুতি) ডিফার্ডস, কলব্যাক্স। কাঠামোটি সম্পূর্ণ করতে প্রয়োজনীয় যুক্তিগুলির মধ্যে রয়েছে:

  • একক-পৃষ্ঠার অ্যাপ্লিকেশনটির অবস্থা পরিচালনা করতে একটি অবজেক্ট (মডেল);
  • একটি লেআউট ম্যানেজার উপস্থাপন, বিন্যাস / রূপান্তর এবং দর্শনগুলি পরিষ্কার করার জন্য এবং
  • নিয়ন্ত্রণকারীরা যা রুটগুলিতে প্রতিক্রিয়া জানায়, আবেদনের স্থিতি সেট / সেট করে এবং লেআউট ম্যানেজারকে কাজ বন্ধ করে দেয়।

আমাদের সমাধান (ভার্টব্রিতে প্রয়োগ করা):

আবেদনের স্থিতি ব্যবস্থাপক -

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

লেআউট ম্যানেজার -

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

নিয়ামক -

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

টোডোস অ্যাপটি ডেভ মোডে হোস্ট করা হয়েছে এবং হিরোকুতে অনুকূলিত হয়েছে ...

অন্যান্য ফ্রেমওয়ার্কের অনেকগুলি ধারণা ধার করা হয়, যেমন ডেরিক বেইলি দ্বারা নির্দেশিত মেমরির ফাঁসগুলির পূর্বরূপ দেখতে ডেসটরি ভিউগুলির প্রয়োজনীয়তা - http://lostechies.com/derickbailey/ ; টিম ব্রানায়েন লেআউট ম্যানেজার http://tbranyen.github.com/backbone.layoutmanager/

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

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


বিস্তারিত উত্তর দেওয়ার জন্য ধন্যবাদ।
ড্যানিকোরেন

13

আমি বেঞ্চপ্রেপে কাজ করার সময় লুকা ফ্রেমওয়ার্কটি বিকাশ করেছি যেখানে আমরা এটি ব্যাকবোন.জেএস লাইব্রেরির শীর্ষে বেশ কয়েকটি বড় একক পৃষ্ঠার অ্যাপ্লিকেশন বিকাশ করতে ব্যবহার করেছি।

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

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

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

দর্শন, উপাদান, ধারক

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

টুইটার বুটস্ট্র্যাপ স্টাইল এবং বিনামূল্যে জন্য মার্কআপ

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

অ্যাপ্লিকেশন উপাদান

  • ব্যাকবোন.মোডেল ভিত্তিক স্টেট মেশিনটি গিটার / সেটার পদ্ধতি সরবরাহ করে এবং অ্যাপ্লিকেশন নিয়ন্ত্রণ প্রবাহের স্টাইল হিসাবে বৈশিষ্ট্য পরিবর্তন ইভেন্টগুলি সরবরাহ করে
  • ইন্টিগ্রেটেড কন্ট্রোলার উপাদান যা ব্যাকবোন.রউটার বা স্টেট মেশিন ইভেন্টের প্রতিক্রিয়া হিসাবে অ্যাপ্লিকেশনের পৃষ্ঠাগুলি লুকায় / দেখায়
  • ইন্টিগ্রেটেড কালেকশন ম্যানেজার যা আপনার তৈরি করা সংগ্রহগুলি ট্র্যাক করে রাখে, আপনাকে সেগুলিকে সুযোগ দেয়, তাদের গোষ্ঠী দেয়, তাদের ডিফল্ট পরামিতি নির্ধারণ করে assign
  • একটি সকেট ম্যানেজার যা ওয়েবসকেট পরিষেবাগুলির শীর্ষে একটি বিমূর্ত স্তর যা ব্যাকবোন.এভেন্টের মতো ধাক্কাটিকে সহজ করে তোলে
  • একটি কীবোর্ড ইভেন্ট রাউটার যা এই জাতীয় ইভেন্টগুলিতে প্রতিক্রিয়া জানায় এমন উপাদানগুলিতে মূল ইভেন্টগুলিকে ট্রিগার করে gers

সংগ্রহ এবং মডেল বর্ধন

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

ইভেন্টস এবং হুকস

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

আপনি কোনও বিশ্বব্যাপী প্রকাশ / সাবস্ক্রাইব চ্যানেলে ইভেন্টগুলি প্রকাশের জন্য লুকা.এভেন্টস শ্রেণিকে কনফিগার করতে পারেন, যা একটি বৃহত অ্যাপ্লিকেশন তৈরি করা সহজতর করে এবং আন্তঃ মডিউল যোগাযোগে সহায়তা করে।

রুবি রত্ন

রেল এবং সিনাট্রা এপিআইয়ের বিরুদ্ধে কাজ করার সময় লুকা বিশেষভাবে বিকশিত হয়েছিল এবং এর কারণে বর্তমানে একটি নির্দিষ্ট স্ট্যাকের জন্য অনুকূলিত করা হয়েছে তবে এটি কোনওভাবেই আপনাকে একটি নির্দিষ্ট সার্ভারে লক করে না।

লুকা সম্পদ পাইপলাইনে কাজ করার জন্য কনফিগার করা রুবি রত্নের অংশ হিসাবে বা ডাউনলোডযোগ্য জেএস ফাইল হিসাবে বিতরণ করে comes

আপনার কাছে রেলস বা সিনট্রা ব্যবহার করার দরকার নেই। তবে আপনি যদি করেন তবে আমি প্রচুর দরকারী জিনিস অন্তর্ভুক্ত করেছি:

  • .Luca এক্সটেনশানযুক্ত ফাইলগুলি JST স্টাইলের ভেরিয়েবল ইন্টারপোলেশন সহ এইচএএমএল হিসাবে প্রক্রিয়াজাত হয়। সম্পদ পাইপলাইন দ্বারা (.jst.ejs.haml সমতুল্য)
  • ব্রাউজারের জন্য একটি টেস্ট হারনেস, বা অনেক ব্যাকবোন এবং অ্যান্ডস্কোর পরীক্ষার সাহায্যকারীদের সাথে হেডলেস জেসমিন ভিত্তিক ইউনিট টেস্ট।
  • লুকার সাথে জাহাজীকরণের উন্নয়নের সরঞ্জামসেটের জন্য একটি এপিআই এন্ডপয়েন্ট
  • একটি এপিআই এন্ডপয়েন্ট যা আপনাকে লুকা.নিম্নতম কনফিগারেশন সহ সংগ্রহের জন্য স্কিমহীন স্টোরেজ ইঞ্জিন হিসাবে রেডিস ব্যবহার করতে দেয়

বিকাশ সরঞ্জাম

  • লুকা অ্যাপ্লিকেশনগুলি লুকার নির্দিষ্ট সহায়ক এবং কমান্ডগুলির সাহায্যে ব্রাউজারের কফিসিপি কনসোল সক্ষম করতে পারে যা লুকা অ্যাপ্লিকেশন এবং উপাদানগুলি পর্যবেক্ষণ, পরিদর্শন, ডিবাগিংয়ে সহায়তা করে

কফিস্ক্রিপ্ট দ্বারা চালিত ব্রাউজার ডেভেলপমেন্ট কনসোলে লুকার একটি উদাহরণ

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

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

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

উপাদান পরীক্ষকটির একটি স্ক্রিনশট

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


11

আমি চ্যাপলিনের সহ-লেখক এবং আমি চ্যাপলিন.জেএস এবং মেরিওনেট.জেএস এর মধ্যে গভীরতর তুলনা লিখেছি:

http://9elements.com/io/index.php/comparison-of-marionette-and-chaplin/

এটি কোনও "শ্যুটআউট" নয় তবে উভয় পদ্ধতির ভারসাম্যপূর্ণভাবে ব্যাখ্যা করার চেষ্টা করে।


লিংক-কেবল উত্তরগুলি এখানে ভাল ফিট নয়। আপনার উত্তরে একটি প্রকৃত উত্তর অন্তর্ভুক্ত করুন।
ঝাঁকুনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.