gpt4 book ai didi

javascript - 我用 OpenComponents 创建的小部件不使用 javascript 逻辑客户端

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:27 25 4
gpt4 key购买 nike

我尝试使用 React 和 OpenComponents 创建一个小部件,当我尝试使用我的小部件客户端时, react 部分正确加载但 javascript 逻辑不起作用。

我查看控制台,没有错误消息。在使用 react 之前,我尝试使用 handlebars 并且我遇到了问题。我也尝试在服务器端使用它,它工作得很好。

这是我的index.html

<html>
<head>
<link rel="stylesheet" href="css/mycss.css">
<title>Widget</title>
</head>
<body>
<script>
var oc = {conf: {debug: true}};
</script>
<script src="http://localhost:3030/oc-client/client.js"></script>
<script src="js/header.js"></script>
<script src="js/app.js"></script>
<oc-component href="http://localhost:3030/mywidget"></oc-component>
</body>
</html>

我的组件

<script src="{{path}}js/app.js" language="JavaScript" type="text/javascript"></script>
<div id="magnet"></div>
<script src="{{path}}js/index.js" language="javascript" type="text/javascript"></script>

我的 package.json

{
"name": "mywidget",
"description": "",
"version": "1.0.0",
"repository": "",
"oc": {
"files": {
"data": "server.js",
"template": {
"src": "template.html",
"type": "handlebars"
},
"static":["js"]
}
}
}

和我的 server.js

'use strict';

module.exports.data = function(context, callback){

callback(null, {
path:context.staticPath,
init: {
to: context.params.to || 7015400,
from: context.params.from || 8727100,
depart: context.params.depart || '01/01/1900',
return: context.params.return || '01/01/1901',
point_of_sale: context.params.point_of_sale || "XXXXX"
}
});
};

谢谢

最佳答案

我想在这里付出一些努力:https://github.com/opentable/oc/issues/299

无论如何(只是为了使 Stack Overflow 问题保持最新状态)- 这是一种非常常见的情况。虽然脚本标签列表在现代浏览器中是并行下载的,但执行很可能会以正确的顺序发生。因此,A.js 将首先执行,B.js 将在其后执行,如果 B 依赖于 A 就可以了。

在客户端,当在 DOM 中注入(inject)同样的东西时,事情可能会有点不同。为了保证以正确的顺序执行,在 OC 中您可以尝试以下操作:

替换

<script src="a.js"></script>
<script src="b.js"></script>

<script>
//Following is to guarantee this works if either this is client-side rendered
// or server-side rendered - so if the oc namespace is available already or not
window.oc = window.oc || {};
oc.cmd = oc.cmd || [];

// Here you require the 2 files in the right order
oc.cmd.push(function(){
oc.require('a.js', function(){
oc.require('b.js', function(){
console.log('now all should be ok');
});
});
});
</script>

显然,您可以使用任何其他依赖项加载系统作为替代方法,但这肯定会使客户端执行的方式与在服务器上执行的方式相同。

关于javascript - 我用 OpenComponents 创建的小部件不使用 javascript 逻辑客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39830733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com