Requirejs和外部脚本

时间:2014-07-08 19:00:42

标签: javascript html oop requirejs external-script

您好我的js应用程序是使用requirejs构建的。现在我有来自其他开发者的外部页面,他可以加载他的脚本,html,css和其他与我无关的东西。 这是我的模块的示例,它将连接到他的页面:

require(['page', 'widgetGame', 'adDynamic'], function (Page, WidgetGame, AdDynamic) {
    function PageExternalGame (params) {
        var params = params || {}; 
        Page.call(this, params); // call super constructor.
    };

    PageExternalGame.prototype.gameLoadingComplete = function() {
        alert(111);
    };

    window.yepiExternalPageGame = new PageExternalGame();
    return PageExternalGame;
});

以及他的页面示例:

<!DOCTYPE HTML>
<html lang="en"><head>
</head>
<body>
<div id='gameArea'>
<canvas id='canvas0' width='480' height='320' style="position: absolute; "></canvas>
</div>
<script data-main="../../YepiMobileNew/UI/js/pageExternalGame" src="http://requirejs.org/docs/release/2.1.14/minified/require.js"></script>
<script src='js/gamemin.js'></script>
<script>yepiExternalPageGame.gameLoadingComplete()</script>
</body>
</html>

所以在他的页面中,他调用我的对象yepiExternalPageGame,应该由requirejs加载。但是当他调用这个对象时,要求自己已经加载了,但是类的pageExternalGame仍然没有加载,所以当他调用它时这个对象就不存在了。怎么处理呢? (他的外部脚本也可以调用我的对象)。感谢。

1 个答案:

答案 0 :(得分:0)

首先,如果您与其他人共享您的amd应用程序,那么创建不使用require.js的构建是很好的,这样您就不会强迫其他开发人员添加另一个lib并增加页面大小。你可以用almond.js

做到这一点

但回到你的问题。

更改

<script>yepiExternalPageGame.gameLoadingComplete()</script>

<script>
    require(['../../YepiMobileNew/UI/js/pageExternalGame'], function() {
        yepiExternalPageGame.gameLoadingComplete();
    });
</script>

这会有所帮助。