我正在尝试Eliom,看看我能用它做些什么。 我想从我的eliom客户端代码中调用外部JavaScript库。 我尝试的示例代码如下:
UPDATE PRODUCT AS PR
INNER JOIN orderdetail AS OD ON OD.ProductID = PR.ID
SET PR.Quantity = PR.Quantity - OD.Quantity
WHERE OD.OrderID = pintID
相当于简单的javascript:
[%%client
let three_lib = Js.Unsafe.js_expr "THREE" in
let scene2 = Js.Unsafe.new_obj three_lib##.Scene [||] in
let init () =
(Firebug.console##log three_lib : unit);
(Dom_html.window##alert (Js.string "scene2 created") : unit) in
init()
]
从OCaml代码中简单调用Three.js。 现在,我还没有100%确定语法,但我观察到的是三个未定义,因为这个代码在加载Three.js之前执行。
我如何:1)在js_of_ocaml生成的文件之前包含js文件;或者2)在生成的js文件中包含Three.js;或3)其他选择?
目前,该页面是以这种方式生成的:
var scene2 = new THREE.Scene();
function init () {
console.log(THREE);
window.alert("scene2 created");
}
init();
提前谢谢
答案 0 :(得分:1)
我找到了问题的根源和解决方案。
我发现问题在于,默认情况下,js脚本包含在" defer"属性(因此在页面完全加载后进行解释)。
经过多次探索,我找到了一种生成页面的方法,其中脚本解释为之前 OCaml生成的js,它必须是"手动"包括:
Eliom_tools.F.html
~title:"Main Page"
~other_head:[Html5.D.script ~a:[a_src
(Xml.uri_of_string "lib/three.min.js")] (pcdata "")]
Html5.D.(body .... )