মুছা.জে এবং হ্যান্ডলবারস.জেএস এর মধ্যে পার্থক্য কী?


333

আমি যে প্রধান পার্থক্যগুলি দেখেছি সেগুলি হ'ল:

  • Handlebars যোগ #if, #unless, #with, এবং#each
  • হ্যান্ডেলবারস সাহায্যকারী যোগ করে
  • হ্যান্ডলবারস টেম্পলেটগুলি সংকলিত হয়েছে (গোঁফগুলিও হতে পারে)
  • হ্যান্ডেলবারগুলি পাথ সমর্থন করে
  • {{this}}ব্লকগুলিতে ব্যবহারের অনুমতি দেয় (যা বর্তমান আইটেমের স্ট্রিংয়ের মানকে ছাড়িয়ে যায়)
  • Handlebars.SafeString() (এবং সম্ভবত কিছু অন্যান্য পদ্ধতি)
  • হ্যান্ডলবারগুলি 2 থেকে 7 গুণ দ্রুত হয়
  • গোঁফ বিপরীত বিভাগগুলিকে সমর্থন করে (যেমন if !x ...)

(আমি উপরের সাথে ভুল হয়ে থাকলে আমাকে সংশোধন করুন।)

আমি অনুপস্থিত অন্য কোন বড় পার্থক্য আছে?


9
এখানে আরো একটি কর্মক্ষমতা পরীক্ষা তুলনা এই দুটি হল jsperf.com/dom-vs-innerhtml-based-templating/366 ); - ভাল বিকল্প আছে
Mikko Ohtamaa

1
... এবং আমি বিশ্বাস করি এটি # টিচ, # তালিকা নয়।
শ্যাডো ম্যান

ধন্যবাদ @ শ্যাডোক্রাইপার আপডেট পোস্ট।
চাদ জনসন

1
আমি এ সম্পর্কে গভীরভাবে লিখেছি এবং এটিও দেখিয়েছি যে কীভাবে আপনি গতিশীল সামগ্রীর জন্য সুপার বেসিক জাভাস্ক্রিপ্ট টেম্পলেটগুলির জন্য অনুরূপ কিছু করতে পারেন: http://stephentvedt.com/2013/09/23/html-templating-compistance/
স্টিফেন টেভেড

3
আমি অবাক হয়েছি কে সর্বশেষ সম্পাদনাটি গ্রহণ করেছেন (2014-10-16)? এটি একটি উত্তর করা উচিত ছিল।
ওয়াল্টার ট্রস

উত্তর:


125

আপনি এটি বেশ পেরেক দিয়ে গেছেন, তবে গোঁফের টেমপ্লেটগুলিও সংকলন করা যেতে পারে।

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

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


7
স্ক্যান্ডলবার্স, স্কালা-হ্যান্ডলবারস বাস্তবায়নটি ভুলে যাবেন না!
কোড হুইস্পেরার

1
রুবি বাস্তবায়নের জন্য একটি জাভাস্ক্রিপ্ট ইন্টারপ্রেটার দরকার, সুতরাং এটি সত্যই কোনও রুবি সংকলক নয়।
এলেটিয়ার

72

গোঁফ পেশাদার:

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

গোঁফ কনস:

  • কিছুটা যুক্তিযুক্ত-কম: মূল কাজগুলি (যেমন বিভিন্ন সিএসএস ক্লাসের সাথে লেবেল বিকল্প সারিগুলি) কঠিন are
  • ভিউ লজিক প্রায়শই সার্ভারে ফিরে যায় বা "ল্যাম্বদা" (কলযোগ্য ফাংশন) হিসাবে প্রয়োগ করা হয়।
  • ল্যাম্বডাস ক্লায়েন্ট এবং সার্ভারে কাজ করার জন্য আপনাকে সেগুলি জাভাস্ক্রিপ্টে লিখতে হবে।

হ্যান্ডলবারস পেশাদার:

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

হ্যান্ডলবারস কনস:

  • সার্ভারে রেন্ডার করতে সার্ভার-সাইড জাভাস্ক্রিপ্টের প্রয়োজন।

উত্স: ক্লায়েন্ট-সাইড টেম্প্লেটিং নিক্ষেপ: গোঁফ, হ্যান্ডেলবারস, ডাস্ট.জেএস এবং আরও অনেক কিছু


37
রে গোঁফ কন "কিছুটা বেশি লজিক-কম"। আমি তর্ক করা চাই যে পর্যায়ক্রমে সারি সিএসএস এর মত সিএসএস ছদ্ম বর্গ সঙ্গে সম্পন্ন করতে হবে tr:nth-child(even)এবং tr:nth-child(odd)বা tr:nth-child(2n)। যদিও এটি কেবল একটি উদাহরণ, আমি মনে করি (বেশিরভাগ সময়) যদি গোঁফের সাথে কোনও জিনিস শক্ত বা বিশ্রী হয় তবে আপনি এটি ভুল করছেন; এর জন্য আরও ভাল জায়গা আছে।
আইএএমএনএন


2
@ আইএমএনএএন এটি নবম-সন্তানের সম্পর্কে সুষ্ঠু .. যদি আপনি কোনও ইমেলের জন্য এইচটিএমএল না লিখে থাকেন, যেখানে আপনি কেবল ইনলাইন সিএসএস ব্যবহার করতে পারেন - নবম নির্বাচকদের ব্যবহার করা খুব কঠিন করে তোলে!
ডিলান ওয়াটসন

24

একটি দুটি সূক্ষ্ম তবে তাৎপর্যপূর্ণ পার্থক্য হ'ল দুটি গ্রন্থাগার যেভাবে সুযোগের দিকে এগিয়ে যায়। বর্তমান প্রসঙ্গে যদি কোনও পরিবর্তনশীল না পাওয়া যায় তবে গোঁফগুলি পিতামাতার স্কোপে ফিরে যাবে; হ্যান্ডলবারগুলি একটি ফাঁকা স্ট্রিং প্রদান করবে।

গিটহাব রিডমিতে এটি সবেমাত্র উল্লেখ করা হয়েছে, যেখানে এর জন্য একটি লাইন রয়েছে:

হ্যান্ডলবারগুলি গোঁফ থেকে কিছুটা বিচ্যুত হয় যাতে এটি ডিফল্টরূপে পুনরাবৃত্ত অনুসন্ধান করতে পারে না।

তবে, সেখানে উল্লিখিত হিসাবে, হ্যান্ডলবার্সকে গোঁফের মতো আচরণ করার জন্য একটি পতাকা রয়েছে - তবে এটি কার্য সম্পাদনকে প্রভাবিত করে।

আপনি #কন্ডিশনাল হিসাবে ভেরিয়েবলগুলি যেভাবে ব্যবহার করতে পারবেন তাতে এটির একটি প্রভাব রয়েছে ।

গোঁফ উদাহরণস্বরূপ আপনি এটি করতে পারেন:

{{#variable}}<span class="text">{{variable}}</span>{{/variable}}

এর মূল অর্থ "যদি চলক বিদ্যমান থাকে এবং সত্যবাদী হয় তবে এর ভেরিয়েবলের সাথে একটি স্প্যান প্রিন্ট করুন"। তবে হ্যান্ডলবার্সে আপনাকে হয়:

  • {{this}}পরিবর্তে ব্যবহার করুন
  • কোনও {{../variable}}প্রাসঙ্গিক পথটি ব্যবহার করুন, অর্থাত্, প্রাসঙ্গিক সুযোগটিতে ফিরে যেতে
  • পিতামাত্ত বস্তুর variableমধ্যে একটি সন্তানের মান সংজ্ঞায়িত করুনvariable

আপনি যদি এগুলি চান তবে এখানে আরও বিশদ ।


23

দ্রষ্টব্য: এই উত্তরটি পুরানো। এটি পোস্ট হওয়ার সময় এটি সত্য ছিল, তবে আর নেই।

গোঁফের অনেক ভাষায় দোভাষী রয়েছে, আর হ্যান্ডলবার্স কেবল জাভাস্ক্রিপ্ট।


11

তাদের মধ্যে অন্য একটি পার্থক্য ফাইলের আকার:

  • গোঁফ.জেএস এর 9 কেবি রয়েছে,
  • প্রাকম্পম্পাইল টেম্পলেট ব্যবহার করে হ্যান্ডলবার্স.জেএস এর 86kb বা 18kb রয়েছে ।

Handlebars.js এর পারফরম্যান্স সুবিধাগুলি দেখতে আমাদের অবশ্যই প্রম্পম্পাইলযুক্ত টেম্পলেট ব্যবহার করতে হবে।

উত্স: জাভাস্ক্রিপ্ট টেম্প্লেটিং ইঞ্জিনগুলির একটি ওভারভিউ


7

আরও একটি সূক্ষ্ম পার্থক্য হ'ল {{#property}}...{{/property}}ব্লকগুলিতে মিথ্যা মানগুলির চিকিত্সা । বেশিরভাগ গোঁফ বাস্তবায়ন এখানে কেবল জেএস মিথ্যাচারের কথা মেনে চলবে, ব্লকটি যদি '0' propertyহয় না তবে তা সরবরাহ করে না ''

Handlebars হবে জন্য ব্লক রেন্ডার ''এবং 0, কিন্তু না অন্য falsy মান। টেমপ্লেটগুলি স্থানান্তরিত করার সময় এটি কিছুটা সমস্যা তৈরি করতে পারে।


5

আমি অনুভব করি যে "হ্যান্ডলবার্স" এর জন্য উল্লিখিত একটি কনস সত্যিই বৈধ নয়।

Handlebars.java এখন আমাদের ক্লায়েন্ট এবং সার্ভার উভয়ের জন্য একই টেম্পলেট ভাষা ভাগ করার অনুমতি দেয় যা এসইওর জন্য সার্ভারসাইড রেন্ডারিংয়ের প্রয়োজন এমন 1000+ উপাদান সহ বৃহত প্রকল্পগুলির জন্য একটি বড় জয় is

Https://github.com/jknack/handlebars.java এ একবার দেখুন


3

Handle হ্যান্ডেলবারগুলির জন্য "এটি" এবং গোঁফের জন্য ভেরিয়েবল ব্লকের মধ্যে নেস্টেড ভেরিয়েবলটি ব্যবহার করার পাশাপাশি, আপনি গোঁফের জন্য কোনও ব্লকে নেস্টেড ডটও ব্যবহার করতে পারেন:

    {{#variable}}<span class="text">{{.}}</span>{{/variable}}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.