2013-11-24 2 views
1

исходный код из app.html в приложении метеора будет выглядеть следующим образом:Meteor: добавлять элементы в app.html

<!DOCTYPE html> 
    <html> 
    <head> 
     <link rel="stylesheet" href="/846a8d9499cc559cd36226c07803f069a9b314a4.css"> 
     <script type="text/javascript" src="/bd418141a43a911de5fcb0fc9eef1599abd72874.js"></script> 
    <title>application title</title> 
    </head> 
    <body> 
    </body> 
    </html> 

Это очень просто и красиво. (вы можете добавить мета в головную часть).

Но что, если я хочу добавить загрузчика для приложения?

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

Более простой способ - написать несколько строк классического встроенного html. Но когда я пишу что-то в html, оно включено в мои шаблоны.

Как бы вы изменили приложение. Html?

ответ

0

Короткий ответ: вы не можете. Насколько мне известно, Meteor всегда отправляет пустой тег <body> и заполняет его через шаблоны.

Если у вас так много кода, что конкатенированный JavaScript довольно тяжелый, вы можете разделить его части. См. this question для некоторых методов о том, как это сделать. Лично я пытаюсь загрузить из CDN любые библиотеки, которые я использую «из коробки», например Bootstrap (к сожалению, это не вариант jQuery). Для загрузки из CDN просто включите блок <head> в один из ваших файлов HTML и ссылку на файлы библиотеки, размещенные на CDN, как обычно, и оставьте их вне вашего проекта. Другой вариант - использовать jQuery's $.getScript() для загрузки определенных скриптов по требованию только на нужные им страницы.

Но это просто уроки загрузки вашего связанного файла JavaScript, но по-прежнему не отвечает на ваш вопрос о немедленном отправке HTML-сообщения клиенту. Чтобы выполнить , единственным способом, который я знаю, является наличие другого веб-сервера перед Meteor. Например, сервер Apache или Nginx прослушивает порт 80, который отправляет простой HTML-файл с исходным контентом, а также загружает связанные с Meteor конкатенированные файлы .js и .css. Метеор заменил бы содержимое <body> на загрузку, или вам нужно будет написать JavaScript для этого, чтобы он «передался» Метеору, чтобы Метеор мог начать показывать свои шаблоны там. Я сомневаюсь, что передача обслуживания будет очень гладкой, к сожалению. В качестве альтернативы, если ваша начальная страница больше представляет собой страницу всплеска, например простую форму входа, она может существовать сама по себе, обслуживаемая Apache/Nginx, а затем отправляет пользователя в мир, обслуживаемый метеоритами. Пока пользователь заполняет форму, конкатенированный файл .css (если не файлы .css и .js, или .css-файл и любые CDN-обслуживаемые или неконкатенированные .js-файлы) можно загружать в фоновом режиме и получение кеширования. Честно говоря, хотя я не уверен, что это стоит всех этих усилий, это добавляет много сложности для того, что, вероятно, только очень небольшое улучшение скорости (и даже тогда, только при начальной загрузке домашней страницы).

+0

Хорошо, это то, чего я боялся. На самом деле, мое решение состоит в том, чтобы вручную редактировать app.html после пакета. Оно работает ; но это дерьмово, потому что я не вижу его, пока я работаю. – fabien

 Смежные вопросы

  • Нет связанных вопросов^_^