定义本地web应用程序和CDN之间的嵌套依赖关系

Defining nested dependencies between your local web app and a CDN

本文关键字:之间 嵌套 依赖 关系 CDN web 应用程序 定义      更新时间:2023-09-26

我试图从CDN模块定义一个嵌套依赖项。

config

线:1765错误:./modules/MyConcreteWidget/templates.htm HTTP status: 404

似乎CDN "text! "/path "认为它在本地web应用程序中。所有引用的文件确实存在于CDN中,并且可以通过浏览器地址栏调出。

我必须包装调用"MyWidget"在一个要求(本身)?

LOCAL REQUIRE配置如下:

require.config({
    paths:
    {
        , jquery: '/scripts/jQuery/jquery-1.8.3.min'
        , jsRender: '/scripts/jQuery/jsrender-1.0pre'
        , text: '/scripts/RequireJS/2.1.4/text-2.0.5'
        , domReady: '/scripts/RequireJS/2.1.4/domReady-2.0.1'
        , 'myConcreteWidget': '/Modules/MyConcreteWidget/control' 
        , 'myWidet': 'http://server1/Modules/MyWidget/control'
    },
shim:
    {
        'jsRender': { deps: ['jquery'] }
    }
});

本地需要的样子:

require(['myConcreteWidget', 'domReady'],
    function (myConcreteWidget, domReady) {
        domReady(function () {
                // Use the concrete widget here...
        });
    });

LOCAL DEFINE看起来像:myConcreteWidget
这个定义将使用CDN "Widget"作为依赖项。

define(
    [
        'myWidget'
    ],
    function (myWidget) {
        var concrete = new myWidget.MyWidget();
        // Configure the concrete here...
        // Return concrete widget here
        return concrete;
    });

CDN DEFINE LOOKS LIKE: myWidget

define(
    [
      'jquery'
    , 'jsRender'
    , 'text!./templates.htm'
    ],
    function ($, jsRender, templates) {
        $('body').append(templates);
        function MyWidget(){
            this.widgetId = 0;
            this.name = 'Something Awesome';
        };
        return { MyWidget: MyWidget};
    });

更新:
模板文件只有SCRIPT标记(用于模板)。

相对模块ID是相对于引用ID而不是路径进行解析的。在这个例子中,因为myWidget请求。/templates',它被解析为'模板',这是在模块ID命名空间的顶部,所以在baseUrl下查找,除非有其他配置,如路径配置在发挥。所以你可以为'template'添加一个路径条目来获得你想要的分辨率。

还请注意,文本插件有跨域限制:https://github.com/requirejs/text