首页 文章

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

提问于
浏览
0

加载订单问题

当我转到localhost:3000时,我无法使Meteor加载我的JavaScript after 我的HTML文件完全加载 . 问题是我的JavaScript一直在加载 before 我的HTML文件,当我使用像 alert();prompt(); 这样的东西时,会让页面看起来被卸载 . 我已经尝试了很多解决方案,例如将我的JavaScript文件命名为main.js,并将我的HTML文件放在更深的目录中并使用 <script> 标记 . 我还阅读了有关这方面的文档:http://docs.meteor.com/#/full/structuringyourapp解决方案我已经厌倦了文档,例如将文件放在 client/libclient/compatibility 和_2364427中已经证明无济于事 . 我也厌倦 Meteor.startup 并将文件放在 client 文件夹中 . (里面的代码):

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

上面的那种解决了我的问题,但它加载了JavaScript文件 two times . 第一次是在加载HTML之前,第二次是在加载HTML之后 . 我不知道在使用 Meteor.startup 时防止第一次JS加载发生的方法,所以对此的任何解决方案也表示赞赏 . JavaScript file's code 我指的很简单 . (完整的):

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

摘要

总结一下我的问题:

  • 我的问题:

  • 转到localhost

  • JavaScript首先加载

  • HTML加载第二个

  • 我需要什么:

  • 转到localhost

  • HTML首先加载

  • JavaScript加载第二

The Question: 如何在加载HTML后才能加载JavaScript?我如何重构我的文件夹,文件名和/或代码,使其在这种情况下的行为与我想要的一样?

  • 由于发布的代码非常容易复制,我恳请你运行自己的解决方案,其设置类似于我所拥有的,而不是使用一百万个软件包的东西,因为对于我的情况,在Meteor上,在回复之前这是不必要的 .

  • 我在Meteor 1.1.0.2上

Here is a link to my folder structure with included HTML code along with filenames I used: http://i.imgur.com/24z6bXF.png

2 回答

  • 0

    我想你错过了一个决定性的信息:你应该将你的Javascript代码包装成 Template.yourTemplate.rendered=function () {} 函数 .

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

  • -1

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

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

相关问题