Файлы JavaScript Meteor JS в main.* По-прежнему загружаются неправильно. Лучшие практики для загрузки заказа?

В течение последних 2 недель я строил проект Meteor, и мне хотелось бы кое-что подумать о порядке загрузки от людей, которые использовали и боролись с Meteor.

Возьми этот шаблон:

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

Все важные файлы javascript указаны в конце index.html. Если вы попытаетесь перенести это в проект Meteor, удачи в использовании всех эффектов и анимации, особенно тех, что в main.js

  • Простое оставление тегов сценария внизу означает, что тонна анимаций javascript и jQuery не будет работать, поскольку в Meteor файлы JS могут полностью загружаться до полной загрузки DOM. И это ломает много вещей.

  • С Meteor любой файл с именем main.* Будет загружен после всего остального.

Обратите внимание, что это означает только то, что main.* Начинает загружаться после всего остального. Он ничего не говорит о том, когда файлы заканчивают загружаться. Сценарии в main.js все еще не работает.

Если я положу все теги сценария в свои main.html а затем прикрепите его к index.html как шаблон, анимация все еще не работает.

  • я пробовал

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

и это не сработает.

  • Использование Meteor.startup( func) невероятно ненадежно, потому что даже если "На клиенте функция будет запущена, как только DOM будет готов", определение Meteor "DOM ready" НЕ равно "после того, как все в DOM загружено." Таким образом, функция все еще может работать после полной загрузки DOM.

Во всяком случае, у кого-нибудь еще есть серьезные проблемы с Метеором? И какие-либо лучшие практики или обходные пути?

1 ответ

Обычно вы не хотите использовать теги сценариев в Meteor. Просто добавьте файлы.js в ваш проект, и они загрузятся сами. Стандартной практикой является размещение плагинов jQuery и т. Д. В папке lib. Метеор загружает вещи сначала в папки lib.

Способ думать об этих вещах в Метеоре отличается от других структур. После того, как вы добавили в проект что-то вроде skrollr.min.js и т. Д., Вы можете вызывать его где угодно. То же самое относится и к CSS, если вы используете теги ссылок.

Что касается действий после загрузки DOM, то вы ищете

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

Это вызывается один раз после того, как DOM был представлен в первый раз..created происходит в момент загрузки шаблона, поэтому DOM еще не будет доступен.

Не глядя на пример шаблона, который вы слишком много связали, похоже, что вы захотите поместить логин в main.js в обработанный обратный вызов для соответствующего шаблона.

Так что, если вы пытаетесь воссоздать эту страницу в демоверсии, я бы поместил все html в шаблон, имея все ресурсы css и js в вашем проекте, удалил все теги link и script и добавил материал main.js в рендеринг.,

Другие вопросы по тегам