Как загрузить пользовательские модули AMD при использовании Dojo через CDN?

Я использую Google CDN, а также пытаюсь загрузить свои собственные модули AMD с помощью своего загрузчика. Я знаю, что я делаю что-то неправильно, но я застрял. Любые идеи?

    <script src="https://ajax.googleapis.com/ajax/libs/dojo/1.7.0/dojo/dojo.js" 
            type="text/javascript" data-dojo-config="async:true,parseOnLoad:true"></script>
    <script type="text/javascript">
        require(["dojo/_base/kernel", "dojo/_base/loader", "dojo/parser"], function(dojo){
            dojo.registerModulePath("pgGallery", "http://127.0.0.1:8080/js");
        });
        require(["pgGallery/Message"], function(m){
            m.success("foo");
        });
    </script>

http://127.0.0.1:8080/js/Message.js - это расположение модуля.

Ответы

Ответ 1

Я понял, как это сделать: http://dojotoolkit.org/reference-guide/quickstart/cross-domain.html в разделе "Использование CDN с локальными модулями".

Пример со страницы:

<script type="text/javascript">
    var dojoConfig = {
        async: true,
        packages: [
            {
                name: "my",
                location: "/absolute/path/to/local/modules"
            }
        ]
    };
</script>

<!-- Bootstrap Dojo From Google CDN -->
<!-- removing the protocol from src url auto detects if current page is served via http or https and also loads the dojo resources from matching protocol -->
<script
    type="text/javascript"
    src="//ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js">
</script>

<script type="text/javascript">
    require(["my/FooModule"], function(FooModule){
        // ...
    });
</script>

Ответ 2

Другим вариантом, который должен работать, который я использую, является это. Обратите внимание на ".js". Как-то загрузчик рассматривает это по-другому.

require(["pgGallery/Message.js"], function(m){
        m.success("foo");
    });

Смотрите: http://dojotoolkit.org/reference-guide/1.8/loader/amd.html.

Если moduleId начинается с протокола (например, "http:" ) или "вперед-вниз" или заканчивается суффиксом ".js", предположим, что запрос предназначен для произвольного фрагмента JavaScript, а не для модуля.

То, что я не знаю, - это, если это лучшая практика или нет.