簡體   English   中英

main。*中的Meteor JS javascript文件仍然無法正確加載。 加載順序的最佳做法?

[英]Meteor JS javascript files in main.* still don't load correctly. Best practices for load order?

在過去的兩個星期中,我一直在構建Meteor項目,我希望那些曾經使用Meteor並在其中掙扎的人們對裝載順序有所思考。

采取以下模板:

http://bootstraptaste.com/free-one-page-bootstrap-template-amoeba/

所有重要的javascript文件都在index.html的底部引用。 如果您嘗試將其移植到Meteor項目中,那么祝您好運,所有的效果和動畫都可以正常工作,尤其是main.js的效果和動畫

  • 簡單地將腳本標簽留在底部意味着大量的javascript和jQuery動畫將無法工作,因為在Meteor中完全可以在完全加載DOM之前加載JS文件。 這打破了很多事情。

  • 使用Meteor,任何名為main。*的文件都會在其他所有文件之后加載。

注意,這似乎僅意味着main。*在所有其他內容之后開始加載。 它沒有說明文件何時完成加載。 main.js的腳本仍然不起作用。

如果我將所有腳本標簽放入它們自己的main.html ,然后將其作為模板附加到index.html ,則動畫仍然無法正常工作。

  • 我試過了

    Template.layout.created = function(){$('head')。append(''); }

這也不起作用。

  • 使用Meteor.startup(func)極其不可靠,因為即使“在客戶端上,該函數將在DOM准備就緒后立即運行,” Meteor對“ DOM ready”的定義並不等於“在加載DOM中的所有內容之后。 “ 因此,該功能在DOM未完全加載后仍可以運行。

無論如何,還有其他人遇到流星這樣的重大問題嗎? 還有最佳實踐或變通辦法嗎?

通常,您不想在Meteor中使用腳本標簽。 只需將.js文件添加到您的項目中,它們就會自動加載。 標准做法是將jQuery插件等放在lib文件夾中。 流星首先將內容加載到lib文件夾中。

在Meteor中思考這些事情的方式與其他框架不同。 將skrollr.min.js等內容放入項目后,您可以在任何地方調用它。 如果您使用鏈接標記,則css同樣適用。

至於在加載DOM之后要做的事情,您正在尋找

Template.myTemplate.rendered = function ( ) { ... }

第一次渲染DOM后,將調用一次。 .created在加載模板時發生,因此DOM尚不可用。

無需查看示例模板,您就可以進行過多的鏈接,似乎您希望將main.js中的登錄名放入適當模板的呈現回調中。

因此,如果您嘗試在實時演示中重新創建該頁面,則將所有html放入模板中,在項目中擁有所有css和js資源,刪除所有鏈接和腳本標簽,並將main.js內容添加到渲染中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM