2014-10-05 96 views
1

好了,所以我有一個流星的應用程序,我試圖讓那些在他們THREEjs動畫模板,這樣我就可以通過加載特定的模板加載特定的動畫。我想通過刪除腳本標記並將它們移動到單獨的JavaScript文件來解構我的HTML文件,但這不起作用。我最終只是把JavaScript放到我的HTML中,它工作。我只是繼續這樣做,並與混亂的代碼生活,但現在我遇到了一個問題。如何把THREEjs代碼到單獨的JS文件與流星

因爲即使一個for循環是腳本標籤中一些奇怪的原因,計算機會看到<標誌,並期待着HTML標記。起初我以爲我忘記了一個結束標籤或什麼的,但我查了一下,但沒有。如果我刪除了for循環(只創建一個粒子),那麼所有的工作都會完美無缺。我可以通過對<符號(&lt;)使用轉義字符來解決這個問題,但我認爲我應該爲總體問題找到解決方案,以便將來不會遇到類似問題。

    我想提出的JavaScript量最少在我的HTML文件成爲可能。 (流星不喜歡它和neiter做我)
    如果我試圖只複製和粘貼我的JavaScript到一個單獨的文件,它不會找到min.three.js文件(它告訴我三isn 「T定義)
    我寧願不使用其他框架一樣require.js主要是因爲我不知道怎麼樣,但我會彷彿這是做

所有的例子的唯一途徑不得已THREEjs將代碼直接放在HTML文件中,但是如何將它放入單獨的JavaScript文件並確保javascript文件找到min.three.js?

這是對模板外觀的概述。我使用jQuery來查找actualAnimation2並將容器附加到該容器中。您還可以找到所有代碼here

<template name = "animation2"> 
    <div id = "animation2" class = "centered"> 
    <div class = "line"></div> 
     <h1>Animation 2</h1> 
    <div class = "line"></div> 
    {{> animationButtons}} 
    <!--Put in a threejs animation here --> 
    <div id = "actualAnimation2" class = "animation"> 
     <script src="client/three.min.js"></script> 
     <script> 
     //THREEjs stuff here 
     //This is what I want to move 
     </script> 
    </div> 
    </div> 
</template> 

TL;博士:我怎樣才能讓THREEjs發揮好與流星?

任何建議,歡迎,讓我知道,如果我可以澄清什麼。感謝您的幫助!

回答

1

報價http://docs.meteor.com/:放置在 客戶端/兼容性子目錄時

一些JavaScript庫才能正常工作。這個目錄中的文件是 而不是被包裝在一個新的變量作用域中。這意味着 每個頂層var定義了一個全局變量。另外,這些 文件在其他客戶端JavaScript文件之前執行。

這是因爲需要對文件的beggining貌似要與three.min.js做什麼:

// threejs.org/license 
'use strict';var THREE={REVISION:"68"}; 

所以你需要把裏面three.min.jscient/compatibility/

但是你可能使用一個軟件包更好,仔細選擇那些更可能在幾周內快速升級到69版的人。

+0

爲什麼我會使用包裝更好? (另外,我將three.min.js放在客戶端/兼容性/內部,它的工作非常感謝你!) – 2016rshah 2014-10-06 21:18:25

0

如果我試圖複製並粘貼我的JavaScript到一個單獨的文件,它不會找到min.three.js文件(它告訴我沒有定義三)

它聽起來像你遇到了一個問題,你的JS文件加載之前min.three.js。您可以通過利用Meteor的JS加載順序來修復該問題 - 首先加載名爲lib的目錄中的文件,因此如果將min.three.js文件放入/client/lib之內,它將在該目錄之外的源文件之前加載。

另一種選擇是使用一個包 - 例如,meteor add aralun:three