Как использовать Dojo Toolkit с конвейером ресурсов rails 3.1 и coffeescript? - PullRequest
5 голосов
/ 10 сентября 2011

Я пытаюсь использовать dojo-toolkit в качестве JS-фреймворка в приложении rails 3.1, но я изо всех сил пытаюсь включить структуру dojo require в sprockets require и coffeescript.Кажется, что dojo ожидает, что файлы JS на диске, но я думаю, что они создаются на лету из coffeescript.

Интересно, есть ли у кого-нибудь представление о том, как эти два требования могут сосуществовать?*

1 Ответ

7 голосов
/ 19 октября 2011

Мне недавно пришлось установить dojo с rails 3.1 и конвейером ресурсов. Вот шаги, которые я следовал, чтобы заставить это работать:

1 / Включить додзё

Поместите dojo SDK в vendor / assets / javascripts, чтобы в нем находились папки dojo, dijit и dojox. Включите его в свой шаблон:

= javascript_include_tag "dojo/dojo", :'data-dojo-config' => %Q(baseUrl: '/assets/dojo/', modulePaths: {modules: '/assets/modules', widgets: '/assets/widgets'})

Не забывайте лидирующие символы '/' по активам!

Вы можете использовать Google CDN с запасным вариантом :

script var djConfig = { baseUrl: '/assets/dojo/', modulePaths: {modules: '/assets/modules', widgets: 'widgets'} };
= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js"
script ="typeof(dojo) === \"undefined\" && document.write(unescape('%3Cscript src=\"#{asset_path('dojo/dojo')}\"%3E%3C/script%3E'));".html_safe

В первой строке укажите ваш djConfig . Второй фактически требует додзе от Google. Третий - запасной вариант.


2 / Включите ваш базовый файл

Удалите все "require" в вашем app / assets / javascripts / application.js и поместите что-то подобное (например):

dojo.provide("myapp");

3 / Играть с dojo.require

В djConfig в 1 / я устанавливаю modulePaths, настраивая их на то, что вы хотите. В моем примере у вас будут те два, куда вы можете поместить свои файлы:

  • Приложение / активы / JavaScripts / модули /
  • Приложение / активы / JavaScripts / виджеты /

Если я хочу требовать modules / test.js, я просто делаю:

dojo.require("modules.test");

4 / Используйте coffeescript и ERB

Просто добавьте правильное расширение и запустите правильный erb, как описано в документации Rails .

Надеюсь, это вам поможет!

...