[JS APPS] Handlebars и Require JS


3

Аз лично не успях да подкарам Handlebars да работи с  Require Js, но след търсене в Интернет намерих това:

https://github.com/components/handlebars.js

което е репо на Handlebars за Bower. Файлът handlebars.amd.js е предназначен за използване с Require JS.

 




Отговори



0
Колко си блъсках главата по време на подготовката за изпит. В крайна сметка тези условности за някои от другите библиотеки за да работят с Require.js не я ли я правят по-скоро лош фреймуърк?

от Drago (711 точки)


1
И аз доста време го мъчих, докато не установих, че не трябва да му предоставяш променлива като параметър на функцията в define-а. Пример: define(['jquery', 'underscore', 'handlebars'], function($, _) { ... }; И така заспива. Всъщност проблема при мен беше, че Handlebars-а си създава глобална променлива и аз я презаписвам.

от a.dimitrov (1047 точки)


0
Да и аз така го ползвах, а сега разбирам и защо работи по този начин :) Глобална променлива....звучи логично :) Благодаря!

от penjurov (1466 точки)


8

За да работи както останалите библиотеки трябва да се направи shim в config на require. Пример:

  1.  require.config({
  2.         paths: {
  3.             'handlebars': 'libs/handlebars-v1.3.0'
  4.         }, shim: {
  5.             "handlebars": {
  6.                 exports: "Handlebars"
  7.             }
  8.         }
  9.     });

 


от Nikolay_Radkov (2911 точки)


0
При мен е точно обратното - от всички библиотеки, които ползвах, само на mustache му подавам променлива, останалите задават глобална такава:
define(['mustache', 'rsvp', 'jquery', 'cryptojs', 'httpRequester', 'underscore'], function (Mustache) {}
После запазвам рендирания html в променлива чрез:
Mustache.render(template[0], { post: sortedPosts });
Другата тънкост е, че и темплейта, и постовете в случая се получават след ajax request, което значи, че по-горе описаната функция ще работи след тяхното изпълнение. Не е толкова объркващо след първите 2-3 пъти използване.

от SStoyanov1 (1324 точки)