Meteor:[加载顺序]加载HTML文件后加载JavaScript文件?

时间:2015-06-29 06:04:13

标签: meteor

加载订单问题

当我转到localhost:3000时,我无法在我的HTML文件完全加载后,使Meteor加载我的JavaScript 。问题是我的JavaScript一直在 之前加载 我的HTML文件,并在我使用alert();prompt();等内容时使页面看起来已卸载。我尝试了很多解决方案,例如将我的JavaScript文件命名为main.js,并将我的HTML文件放在更深的目录中并使用<script>标记。我还阅读了有关此问题的文档:http://docs.meteor.com/#/full/structuringyourapp基于文档(例如将文件放入client/libclient/compatibilitylib已经证明,我已经厌倦了解决方案)无济于事。我也累了Meteor.startup,我将文件放在client文件夹中。 (其中的代码):

Meteor.startup( function () {
  $.get("client/lib/testproject.html")
  $.getScript("client/testproject.js");
});

以上解决了我的问题,但它加载了JavaScript文件两次。第一次是之前加载HTML,第二次是之后加载HTML。我不知道在使用Meteor.startup时防止第一次JS负载发生的方法,因此对此的任何解决方案也表示赞赏。 我所指的 JavaScript文件代码很简单。 (完整地)

prompt("Hello World!"); 
myList = ["apples", "oranges", "bananas"];
myList.forEach(function(value, index) {
  alert('I have ' + value + ' for dinner.');
});

摘要

总结我的问题:

  • 我的问题:

    1. 转到localhost
    2. JavaScript首先加载
    3. HTML加载第二
  • 我需要什么:

    1. 转到localhost
    2. HTML首先加载
    3. JavaScript加载 second

问题:如何在加载HTML后才能加载JavaScript?我如何重构我的文件夹,文件名和/或代码,使其在这种情况下按照我的意愿行事?

  • 由于发布的代码非常简单,我很恭喜你 运行你自己的解决方案,设置类似于我所拥有的,而不是使用一百万个包的东西,因为对于我的情况,在Meteor上,在回应这个之前是不必要的。

  • 我在Meteor 1.1.0.2

以下是我的文件夹结构的链接,其中包含HTML代码以及我使用的文件名: http://i.imgur.com/24z6bXF.png

2 个答案:

答案 0 :(得分:0)

我认为您错过了一个决定性的信息:您应该将您的Javascript代码包装到Template.yourTemplate.rendered=function () {}函数中。

这是确保首先正确呈现相关html代码的流星方式。

答案 1 :(得分:-1)

首先,Meteor将始终重新打包您的文件并按特定顺序(Meteor structuring your app)自动加载。 client/compatibility中的第一个文件,然后是client/lib,然后是其他JS文件。

您还应该重写代码,以便在加载时不立即执行,例如将所有内容包装在函数中。然后,您应该在加载DOM时调用此代码,这不一定意味着在Meteor.startup中,也在模板中的onRendered callbacks中。