公式のGetting Started単純すぎでは?
自作のhelper/util.jsをAMD使って書いてるような意識高い人は、今さらGetting Startedを読まないと思うのです。。
Examplesからリンクされている以下のサンプルを眺めるのがオススメです。
requireとrequirejsとrequire.configとrequirejs.configのどれ使えばいいの?
ドキュメントでは混在してて戸惑いますが、require と requirejs は基本的に同じものなので、気にしなくて良いです。主観では requirejs より require を使っている人のほうが多いです。
require.config({}) は require({}) とも書けます。ただ、設定をする場合は require.config({}) 、モジュールを読み込むときは require と使い分けたほうがわかりやすいでしょう。
configの書き方いろいろありすぎでは?
気にしないで良いです。以下の書き方を使いましょう。
HTML
<script src="require.js" data-main="main.js">
main.js(エントリポイント)
require.config({ // モジュールIDからモジュールのファイルを探すときにベースとなるパス baseUrl: '', paths: { // モジュールIDでは探せないモジュールのパス }, shim: { // AMDに対応してないモジュールを読み込むための設定 } }); require(['jquery'], function($) { // $を使った処理 });
require.config の引数はConfiguration Optionsに解説があります。
そういえばモジュールって何?
公開用オブジェクトを、グローバルスコープを汚さずに定義するためのスクリプトです。公開用のオブジェクトとは、jQueryの$や、Underscore.jsの_、Backbone.jsのBackboneのようなオブジェクトです。
jQueryプラグインのように、既存のオブジェクトに変更を加えるだけで何も公開しないモジュールもあります。1ファイル1モジュールのみを定義できます。
モジュールは jquery.js や my/module.js のようなパスで管理することもできますが、 jquery や my/moduleのような モジュールID で管理する方が良いです。
baseUrlはどこにすべき?
最初はベースっぽいところを適当に選べばよいかと思います。モジュールをファイルパスから独立したモジュールIDで管理することを意識しておけば、後から変更してもそんなに困りません。
BackboneとUnderscoreってshim使う必要あるの?
もはや必要ありません。RequireJS公式を含む世の中のドキュメントには、Backbone.jsやUnderscore.jsがshimの使用例としてよく出てきますが、 2014年2月リリースの Backbone.js 1.1.1、Underscore.js 1.6.0以降はAMDに対応しています。
ちなみにjQuery UIも1.11(2014年6月リリース)からAMDに対応しています。
r.js難しくない?
はい。shimのライブラリが動かなくなったりするので頑張りましょう。 shimの解説 にいろいろ注意書きがあります。
最初は optimize: 'none' で様子を見るのが良いです。
r.js遅くない?
Rhino版は遅いので、Node版を使いましょう。
ちなみに私は django-require というライブラリを使って、Herokuにpushしたときにr.jsが走るようにしましたが、あまりに遅かったのでr.jsを使うのやめました。Python環境にはNodeが入っておらず、Javaしか入ってないので、簡単に使えるのはRhino版のみでした。
まとめ
RequireJSは、混沌とした<script>タグの羅列に秩序をもたらす素晴らしいプロダクトなんだけど、r.jsで最適化しようとするとハマりどころが多くて辛い
— かと (@orangain) 2014, 7月 13