Handlebars.js: تسجيل المتغيرات العالمية.

تم إنشاؤها على ٢٢ فبراير ٢٠١٦  ·  7تعليقات  ·  مصدر: handlebars-lang/handlebars.js

من المفيد أحيانًا أن يكون لديك متغيرات عامة للقوالب.
يمكن أن تتضمن بعض الأمثلة أشياء مثل:

  • كائن المستخدم النشط.
  • تكوين التطبيق (العنوان والوصف والميتا)
  • معلومات المسار (المسار ، التجزئة ، إلخ).

كنت أفكر أنه سيكون من الرائع إضافة شيء مثل:

var hbs = require("handlebars");

hbs.registerGlobal({
   title: "myapp"
});

والتي يمكن الإشارة إليها في أي قالب ، ربما عبر @global.title أو @title أو فقط title .

أفكار؟

docs-needed

التعليق الأكثر فائدة

kpdecker template(context, {data: {global: global}}) غير موثق بشكل صريح.
أقرب ما رأيته هو template({}, {data: {level: Handlebars.logger.WARN}})

لكن الوثائق لا تذكر أنه يمكن تمرير المعامل الثاني .

ال 7 كومينتر

كنت أفكر في هذا أكثر وأعتقد أن إنشاء مساعد مضمّن يمكنه فعل ما تريد.

var hbs = require("handlebars");
var myGlobal = {
   title: "myapp"
};

hbs.registerHelper('global', function(key){
  return myGlobal[key];
});
{{! in your template }}
<div>{{global "title"}}</div>

ويمكنك فعل أي شيء باستخدام myGlobal
يمكنك

define('myGlobal', function(){
  return {
    title: "myapp"
  };
});

...
var myGlobal = require('myGlobal');

myGlobal['newKey'] = 'something';

...

var hbs = require("handlebars");
var myGlobal = require('myGlobal');

hbs.registerHelper('global', function(key){
  return myGlobal[key];
});

بطبيعة الحال ، هناك عيب مثل الكتابة فوق المفاتيح ولكن هذا كل ما عليك.

سيتطلب دعم هذا داخل المقاود نفسها الكثير من النفقات العامة لتحقيق مكاسب قليلة ، IMO.

هناك عدد من الخيارات مثل اقتراحrafde 's المساعد أو تمرير عالمي في حقل البيانات ، والذي يجب أن يعمل بالفعل مع بناء الجملة المقترح أعلاه:

template(context, {data: {global: global}})

يجب أن يعرض كل شيء على النافذة في {{@global.foo}} ، لكنني لم أختبر ذلك وستحتاج إلى التحقق من أن هذا يعمل بشكل صحيح.

kpdecker template(context, {data: {global: global}}) غير موثق بشكل صريح.
أقرب ما رأيته هو template({}, {data: {level: Handlebars.logger.WARN}})

لكن الوثائق لا تذكر أنه يمكن تمرير المعامل الثاني .

غالبًا ما نفتقر إلى وثائقنا ، ولكن إذا كنت ترغب في المساعدة في التحسين ، فسيكون ذلك رائعًا.

تم اختبار هذا على نطاق واسع: https://github.com/wycats/handlebars.js/blob/master/spec/data.js#L1

لماذا لا يمكنك القيام بذلك ببساطة عن طريق تحديد زوج المفتاح / القيمة في كائن غير متغير؟

glabalPair = {title: "Title"};

https://github.com/wycats/handlebars.js/blob/master/spec/data.js#L1 كان الجواب. إغلاق هذا ولكن لا يزال ينبغي إضافة الوثائق.

غير موثق بعد؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات