Как создать современный интерфейс с бэкэндом Node.js?

91
9

Как правило, я разработчик бэкэнда и fullstack и технический руководитель. Я выбираю инструменты dev на протяжении многих лет.


В качестве исходного кода я выбрал "Стеки стека". Это делает приложения реактивными и относительно легко масштабируемыми и поддерживающими. И это весело для кода в Scala.


Для front-end я использую Angular.js, раньше это были knockout.js, YUI, Mootools, jquery, vanilla.


Но с Angular.js я действительно смущен. Проблема не в самом инструменте, а в том, как развивается Веб.


Цель состоит в том, чтобы закрепить приложение, сделать его более отзывчивым, реактивным, интерактивным. Это приводит нас к одностраничным приложениям. Angular.js хорош для него.


Но.


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


Множество сетевых латентных ожиданий! Много последовательных запросов поступают один за другим.


Поэтому для просмотра содержимого требуется время. Также он затрудняет индексацию с помощью поисковых систем и ограничивает доступность (режим чтения в Safari обычно не учитывает разметку, сгенерированную Angular.js).


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


Я слышал, что Twitter, наконец, стал отображать контент в фоновом режиме, а затем обернул его скриптами. Как?


Я видел несколько проектов на node.js с той же целью. Они отображают контент с тем же самым javascript, который фактически получает клиент, и подали ему результат html. Затем завертывает его, скажем, триггерами и кодами React.js или даже Angular.js. Но что, если node.js backend - это не наш выбор?


Таким образом, требования очень естественны:


    Возможность (предварительный) рендеринг содержимого на back-end
    Проводные скрипты на странице после ее загрузки
    Не заменяйте содержимое страницы тем, что генерируется скриптами
    Используйте html5-маршрутизацию для всех других просмотров страниц
    Избегайте node.js, по крайней мере, не используйте его в качестве основной серверной технологии

Я только один против этой проблемы? Как вы думаете об этом?

спросил(а) 2014-04-22T16:41:00+04:00 6 лет, 1 месяц назад
1
Решение
53

Вот варианты для вас:
 - Используйте средний сервер node.js, который опирается на технологию сервера по вашему выбору для фактических данных и всего материала. Pro, вы можете проверить его медленно, прежде чем полностью перейти к нему.
 Два раза Напишите всю свою логику шаблона дважды, один раз для своего сервера и снова для клиента. Используя node.js, вы можете просто повторно использовать логику с интерфейсного интерфейса, но Angular.js не является точно node дружественным из-за его зависимости от DOM.


Если вам действительно нужна лучшая возможность загрузки первой страницы, вы должны посмотреть на этот ответ, который я дал сегодня:
AngularJS SEO для статических веб-страниц (S3 CDN)

Это позволит вам загружать статическое приложение, которое работает с стилями и маршрутами только с CSS, пока приложение angular загружается. Надеюсь, что это поможет.

ответил(а) 2014-05-12T08:14:00+04:00 6 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема