2016-06-07 6 views
0

나는 지금 무엇을 할 수 있는지보기 위해 Eliom을 찾으려고 노력 중이다. 내 eliom 클라이언트 코드에서 외부 자바 스크립트 라이브러리를 호출하려고합니다. 내가 노력하고있어 예제 코드는 다음과 같다 : 간단한 자바 스크립트에 해당합니다 Eliom 클라이언트 코드에서 외부 Js lib 호출하기

[%%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() 
] 

:

var scene2 = new THREE.Scene(); 
function init() { 
    console.log(THREE); 
    window.alert("scene2 created"); 
} 
init(); 

OCaml의 코드에서 Three.js를하는 간단한 전화. 이제는 구문에 대해 100 % 확신하지는 못했지만 Three.js를로드하기 전에이 코드가 실행되기 때문에 THREE는 정의되지 않았습니다.

어떻게해야합니까? 1) js_of_ocaml에 의해 생성 된 파일보다 먼저 js 파일을 포함하십시오. 또는 2) 생성 된 js 파일에 Three.js를 포함합니다. 또는 3) 다른 옵션?

Eliom_tools.F.html 
    ~title:"Main Page" 
    ~js:[["lib";"three.min.js"]] 
    Html5.D.(body ....) 

나는 내 문제와 해결책의 기원을 발견 사전

답변

0

에 감사 :

현재 페이지가이 방법으로 생성됩니다.

기본적으로 js 스크립트는 "지연"속성에 포함되어 있으므로 페이지가 완전히로드 된 후 해석된다는 점에서 문제가 있음을 발견했습니다.

훨씬 프로빙 후, 나는 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 ....)