Как загрузить пользовательские модули AMD при использовании Dojo через CDN? - PullRequest
10 голосов
/ 03 января 2012

Я использую CDN от Google, а также пытаюсь загрузить свои собственные модули 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 - это расположение модуля.

Ответы [ 2 ]

11 голосов
/ 03 января 2012

Я понял, как это сделать здесь: 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's 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>
0 голосов
/ 07 февраля 2013

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

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

См .: http://dojotoolkit.org/reference-guide/1.8/loader/amd.html.

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

Чего я не знаю, так это лучшей практики или нет.

...