2016-02-15 2 views
17

Хотя requirejs способен использовать npm-installed modules, как использовать requirejs на первом месте, если он установлен через npm install requirejs?Как использовать npm установлен requireJS для браузера

Я ознакомился с примерами использования requirejs, перечисленных в example-section. Кажется, все они полагают, что require.js загружается в определенное место. Поскольку documentation конкретно указано

Не делайте ничего подобного require ("./ node_modules/foo/foo").

Я предполагаю, что это не так, чтобы положить в index.html что-то вроде:

<html> 
    <head> 
     <script data-main="scripts" src="node_modules/requirejs/require.js"></script> 
    </head> 
    <body> 
     <h1>Hello World</h1> 
    </body> 
</html> 

Что является рекомендуемым способом использовать requirejs если НПМ установлен? Если я пропустил что-то из документации, пожалуйста, дайте мне знать. Благодарю вас

ответ

9

Похоже, вы приравнивая кучу различных применений RequireJS:

  1. Как вы можете использовать RequireJS установленные через узел в браузере?

    Вы можете просто установить его с помощью npm install requirejs, а затем у вас есть файл HTML с элементом script, который указывает на node_modules/requirejs/require.js. Точно так же, как вы показываете в своем фрагменте кода. Вот и все. При этом мне не нравится иметь node_modules в том, что я развертываю, поэтому у меня, как правило, есть копия require.js в другом месте.

  2. Как вы можете загрузить модули npm с RequireJS в узле?

    Предположим, что без RequireJS вы должны загрузить модуль foo, выполнив require('foo'). Вы устанавливаете RequireJS и загружаете его как requirejs. Как вы загружаете foo с помощью RequireJS? Вы можете просто сделать requirejs('foo'). До тех пор, пока RequireJS не найдет его через свою собственную конфигурацию, он выдает в качестве последнего средства вызов собственному Node и загрузит его таким образом? Вот иллюстрация. Установите RequireJS с npm install requirejs. Создать этот файл:

    Затем запустите его. Вы получите модуль Node fs.

  3. Как вы можете загрузить модули npm с RequireJS в браузере?

    Это зависит от модулей. RequireJS не содержит кода, который волшебным образом сделает модуль, установленный на npm, в браузере. В конечном итоге это зависит от того, как модули структурированы. В некоторых случаях:

    A. Некоторые модули, оснащенные npm, могут быть загружены с помощью RequireJS без изменений. Есть одна библиотека, которую я создал, которая распространяется через npm, и все же представляет собой набор модулей AMD. Тривиально загружать их с помощью RequireJS в браузере.

    B. Может потребоваться обернуть в define звонки.Недавно я загрузил merge-options в один из моих проектов с gulp-wrap-amd. merge-options - это модуль CommonJS. Он не поддерживает RequireJS из коробки, но если вы завернете его вызовом define, он будет работать.

    C. Это может потребовать что-то более сложное, прежде чем оно будет загружено в браузере. Например, если модуль использует модуль Node fs, вам необходимо предоставить замену для fs, которая запускается в браузере. По-видимому, это будет представлять собой поддельную файловую систему для вашего кода.

+0

Что касается вашего первого пункта, то это причина, по которой 'r.js' существует? – user2829759

+0

'r.js' существует * в первую очередь *, чтобы оптимизировать кучу модулей в один пакет. Его также можно использовать для обертывания модулей, которые находятся в идиоме CommonJS с вызовом 'define', но я не использовал его для этого. (И проект Gulp рекомендует 'gulp-wrap-amd', вот что я использовал.) – Louis

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