2016-11-09 2 views
0

Как я могу получить доступ к (названному) модулю с RequireJS?Как получить доступ к (именованным) модулям в RequireJS?

Допустим, это мой модуль (поговорки/sayings-list.coffee):

define 'saySomething', [], -> 
    alert 'something' 

Мой главный файл (main.coffee) выглядит следующим образом:

require ['sayings/sayings-list'], (sayings) -> 
    sayings.saySomething() 

Теперь я хочу отправить переменную взад и вперед! Что-то вроде:

require ['sayings/sayings-list'], (sayings) -> 
    sayings.saySomething(text) 

Как это было бы отражение в моем модуле?

Спасибо.

ответ

1

Общее правило: вы должны использовать анонимные define вызовы, а не по имени define вызовов и пусть оптимизатор (r.js или другой оптимизатор, который понимает спецификации AMD) добавить имена, когда она оптимизирует ваши модули в пачке. Есть редкие исключения из этого правила, но то, что вы показываете здесь, не является исключением.

Если необходимо использовать именованный модуль, который вы должны структурировать это следующим образом:

define 'saySomething', [], -> 
    saySomething: (text) -> alert text 

Так что она экспортирует функцию, доступную в saySomething. Обратите внимание, что имя модуля и имя экспортируемой функции могут отличаться.

Затем вы должны загрузить его, используя его имя:

require ['saySomething'], (sayings) -> 
    sayings.saySomething(text) 

И вы должны установить конфигурацию, чтобы дать путь, который отображает имя модуля в файл, который содержит его. Это необходимо, потому что, добавив имя в вызов define, вы отделили имя модуля от имени файла. Поэтому вы должны указать RequireJS, как найти модуль.

require.config 
    paths: 
    saySomething: "sayings/sayings-list" 
+0

Спасибо! В случае, если я не назначаю имя модулю, последняя часть конфигурации не нужна? – Timo

+0

Правильно. Эта конкретная конфигурация не нужна, если вы не укажете имя в качестве первого аргумента 'define', потому что тогда используется путь к модулю (минус расширение' .js'), чтобы сделать имя модуля (которое будет 'поговорки/поговорка-list'). Поэтому, когда вы его используете, вы будете «требовать [« высказывания/высказывания-список »], (поговорки) ->' – Louis

+0

отлично, наконец-то я пошел !!! : D спасибо @Louis! – Timo

Смежные вопросы