1

我参考 [ https://github.com/olark/lightningjs]将 js 加载到单独的窗口命名空间中。

我已经测试了一个名为 sample.js 的脚本文件,如下所示,需要在单独的窗口命名空间中加载。

function testjs(){
console.log("sample");

}

我在我的 html 中包含了 Lightningjs-embed.js 和 lightining-bootstrap.js。

<html>
<head>
<title>testing light js</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/lightningjs-master/lightningjs-embed.js" ></script>
<script type="text/javascript" src="js/lightningjs-master/lightningjs-bootstrap.js"></script>

<script type="text/javascript">/*{literal}<![CDATA[*/
/*** lightningjs-embed.min.js ***/
window.piratelib = lightningjs.require("piratelib","js/sample.js");
/*]]>{/literal}*/</script>

console.log("modules",lightningjs.modules);
piratelib("testjs");

在控制台中,我可以查看两个对象,一个是 Lightningjs,另一个是 piratelib。我期待在调用piratelib(“testjs”)后在控制台中获得“样本”。但我没有在控制台中获得样本。如果在控制台中尝试 piratelib("testjs") 它会显示

function promiseFunction() {
                    console.log("promisdeId",promiseResponseId);
                    promiseFunction.id = promiseResponseId;
                    return modules[namespace].apply(promiseFunction, arguments)
                }

而不是 sample.js 中的实际函数

function testjs(){
console.log("sample");

}

建议我一些想法在单独的 window.namespace 下加载 js 以避免 js 冲突。澄清我是否使用 Lightningjs 以正确的方式调用函数。提前致谢。

4

1 回答 1

0

LightningJS 处理的函数返回promises,所以:

piratelib("testjs").then(function(result) { 
  console.log(result);
}, function(error) {
  // Handle your error
});
于 2015-03-29T23:10:58.840 回答