2014-10-05 40 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