Файлы 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 в рендеринг.,