Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当通过CDN使用Dojo时,如何加载自定义AMD模块?_Javascript_Dojo_Amd - Fatal编程技术网

Javascript 当通过CDN使用Dojo时,如何加载自定义AMD模块?

Javascript 当通过CDN使用Dojo时,如何加载自定义AMD模块?,javascript,dojo,amd,Javascript,Dojo,Amd,我正在使用谷歌的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> <

我正在使用谷歌的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>

require([“dojo/_base/kernel”、“dojo/_base/loader”、“dojo/parser”]),函数(dojo){
registerModulePath(“pgGallery”http://127.0.0.1:8080/js");
});
需要([“pgGallery/Message”],功能(m){
m、 成功(“foo”);
});

是模块的位置。

我在“将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>

var dojoConfig={
async:true,
套餐:[
{
姓名:“我的”,
位置:“/absolute/path/to/local/modules”
}
]
};
require([“我的/FooModule”],函数(FooModule){
// ...
});

我正在使用的另一个应该有效的选项是。注意“.js”。不知何故,加载器对这一点的处理方式有所不同

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

如果moduleId以协议(例如,“http:”)或正斜杠开头,或以“.js”后缀结尾,则假定请求是针对任意JavaScript块,而不是模块


我不知道这是否是最佳实践。

这就是我喜欢require.js的原因-它在跨域加载AMD模块方面没有问题。