backbone.js 从标记访问requirejs模块< script>

4ioopgfo  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(144)

我目前有一个位于远程服务器上的requirejs模块,如下所示,它定义了一些 Backbone.js 视图、模型

define(['...'], function() {
   ......
   return {
     model : suggestion_model,
     view : suggestion_view
   };
});

被动态加载到另一个文件

let script = $("<script>").attr({
src: "http://localhost:9000/assets/javascripts/autocomplete/autocomplete-model-view.js",
});
console.log(script);
$("head:first").append(script);

我看到文件已加载,当我转到我的标记时,却无法访问要在任何代码中使用的模块。
我该如何在其他文件中访问这些定义的requirejs模块呢?

wwodge7n

wwodge7n1#

您可能无法通过直接将远程requirejs模块插入到脚本标记中来访问它们。您可以尝试以下步骤来访问它们。
假设我们有一个名为remotemodule的远程模块

define(['remotemodule'], function() {
   return {
     model : function(){
       return "Im a remote model";
     },
     view : function(){
       return "Im a remote view";
     }
   };
});

要在浏览器中访问它..
您需要先将requirejs脚本添加到html中。

<script src="https://requirejs.org/docs/release/2.3.6/minified/require.js" type="text/javascript"></script>

这将为您提供一个全局对象require。您可以在require上调用config函数来定义remotemodule,方法是将path指定给脚本。

require.config({
            paths: {
                "remotemodule": "https://raggedlostcone.nithinthampi.repl.co/"
            }
        });

然后你可以调用require(["remotemodule"], function callback)来加载脚本,这里回调是在脚本加载后执行的。

require(["remotemodule"], function(loaded_script){
            console.log(loaded_script);
            document.getElementById("remotemodule").innerText = loaded_script.model();
        })

下面是一个简单的演示。
第一个

相关问题