LINUX.ORG.RU

Конец эры PHP, Ruby, etc на серверах?

 , , , ,


1

5

Захотел тут запилить свой блог с тегами и комментариями, и что бы это все было «реактивно» (React/Vue), чтобы не загружалась вся страница при поиске по блогу, фильтрации постов или добавлении коммента, но при этом что бы роботы поисковиков видели посты и комменты (изначально страница рендерилась на сервере).

И возник у меня вопрос что использовать?

Мне нравиться Laravel(PHP), давно хотел потыкать Rail или Symfony, думаю вот он шанс, и снова НО, как же реактивность?

Если делать бэкенд на PHP/Ruby, то придется и на React/Vue дублировать верстку что бы был нормальный серверный рендер и при этом сохранилась реактивность. Или нет?

Походу выход один запилить сервер на NodeJS, с серверным рендерингом Vue/React.

Но мне не нравится сервер на NodeJS, какие то личные мотивы и скепсис к NodeJS на сервере. Может просто привык к Laravel(PHP) и еще это непреодолимое желание познакомиться с другими фреймворками. Только вот разовая встреча с ними мне не интересна, ведь если все мертво или умирает кроме NodeJS зачем это изучать?

Это что получается PHP, Ruby, etc веб бекенд мертв, остался только NodeJS? Может есть еще им где то место в каких нибудь API или полностью статичных сайтах? Или я просто ошибаюсь с дублированием верстки и чего то не знаю?


Ещё один. Сделай шаблон «версия для печати» для поисковика, это на пару часов. И фигач дальше свой реакт.

Shadow ★★★★★
()
Ответ на: комментарий от moot

Отрендери мне на сервере бемконечную прокрутку или игру-платформер. Я не понимаю этого «ужас-ужас, как можно отдать текст не отрендерив его компонентами на сервере!»

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)

тред читал мельком но вот что по-этому поводу есть

1) у поисков есть хуки для индексации СПА, например замена хешбенга на какой-то параметр:

на клиенте /app#!/deposit, для гугла /app?__ajax_view=/deposit что-то вроде такого

2) history api давно работает везде и успешно используется во всяких ract-route еще со времен backbone, так что иметь для бота unstyled контент а для клиента SPA вполне нормально, причем можно даже ссылки сохранить а для старых версий делть редирекс с /dashboard/withdrawal/ на /#!/dashboard/withdrawal/, в то время как белые люди даже не почувствуют разницу (только тут надо правильно навигацию спроектировать чтоб можно было начать сессию из любой страницы а не лишь точки входа

anonymous
()

нравиться

Нравится

Deleted
()
Ответ на: комментарий от ritsufag

Нет, не обязательно знать что бы делать.

Martin256 ★★
() автор топика
Ответ на: комментарий от Martin256

Ну смотри просто генерируешь проект RoR api и нет ничего лишнего. А nuxt уже не багнут и готов к продакшену. У меня с ним не было проблем в проектах в продакшене.

oster2011 ★★★
()

И возник у меня вопрос что использовать?

JavaServer Face попробуй.

iZEN ★★★★★
()
Ответ на: комментарий от Martin256

Как потом подхватить отрендеренную страницу через Vue/React
что бы не перерисовывать у пользователя?

Т.е. сначала html рендерится на сервере средствами серверного React, а потом html отправляется на клиент чтобы там React ее вывел? Ох..ть.

Как до такого состояния дело дошло?

Откуда такие дебилы? Как люди с такими мозгами программируют? Почему всё это серьзно обсуждается?

neschastnyjj86
()
Ответ на: комментарий от neschastnyjj86

Т.е. сначала html рендерится на сервере средствами серверного React

да

а потом html отправляется на клиент чтобы там React ее вывел?

все не так, он подхватывает разметку, и уже с ней работает

Вопрос как раз и был, как повторной отрисовки избежать, и при этом использовать в качестве бекенда не nodejs

Martin256 ★★
() автор топика
Последнее исправление: Martin256 (всего исправлений: 1)
Ответ на: комментарий от Martin256

Вопрос как раз и был, как повторной отрисовки избежать, и при этом использовать в качестве бекенда не nodejs

У меня на сервере питон, jinja2 и jade/pug.
Шаблоны элементов SPA минималистичны и прекрасны. На клиенте - angularjs.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от ugoday

Нет, когда:
- прокрученные теги выпиливаются
- позиция фиксируется на пэйджере
- позиция фиксируется в адресной строке

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

Т.е. чтобы сделать бесконечную прокрутку менее говном, нужно выкинуть бесконечную прокрутку и сделать нормальную постраничную адресацию. Какая интересная мысль!

ugoday ★★★★★
()
Ответ на: комментарий от ggrn

Ты из тех людей, из-за которых на половине современных сайтов сервер отдает шаблоны и контент в json, а потом рендерит это в браузере? Убей себя, пожалуйста.

shatsky ★★
()
Ответ на: комментарий от shatsky

сервер отдает шаблоны

насколько я понял, они теперь html готовят на сервере с использованием клиентских js-фреймворков (видимо запускают сам ангуляр или какую-то вспомогательную около-тулзу), т.е. не просто html готовят, а в рамках парадигмы клиентского js-фреймворка. а потом выводят этот html в браузере средствами js через .innerHTML (или даже что-то повеселей придумали).

neschastnyjj86
()
Ответ на: комментарий от neschastnyjj86

Это когда вместо шаблонных тегов используются кастомные атрибуты и для обработки всего этого нужно ворочать DOM? Больные ублюдки.

Делал JS-навигацию на MVC-фреймворках, при подгрузке контента обычно передавался json с отрендеренным html блока и новым заголовком страницы. По запросу страницы она рендерилась на сервере целиком, вложенные шаблоны. В принципе, можно было бы придумать JS-ивент для поисковых роботов «страница отрендерена», но жабаскриптокодеры любители забивать память и греть процессоры клиентов должны страдать.

shatsky ★★
()
Ответ на: комментарий от shatsky

1) я имел в виду, что теперь чтобы сервер смог отдать html им зачем-то нужен на сервере js. насколько я догадываюсь, это из-за того, что html на сервере готовят *запуском ангуляра на сервере*. (может знающие люди внесут ясность, но видимо это так).
2) затем рендеринг полученного уже готового html в браузере опять осуществляться через js+ангуляр. (по кр. мере судя по тому, что пишет ТС сложилось такое понимание, хотя может я не так понял)

neschastnyjj86
()
Ответ на: комментарий от neschastnyjj86

Вопрос как раз и был, как повторной отрисовки избежать, и при этом использовать в качестве бекенда не nodejs

ну или это замкнутый круг в голове у них уже...

neschastnyjj86
()
Ответ на: комментарий от shatsky

Нет, я не использую жабаскрипт фреймворки(кроме jquery) в работе.

Поешь говна пжлста

ggrn ★★★★★
()
Ответ на: комментарий от Shadow

Я могу сослаться на какое-то конкретное сообщение, либо перейти на произвольное количество страниц вперёд или назад? Если да, то это не бесконечная прокрутка, если нет, то это убожество.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Да. И можешь крутить пальцем до посинения. Но мы отклонились.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от shatsky

Вот бы все так делали, не пришлось бы писать парсеры.

pawnhearts ★★★★★
()
Ответ на: комментарий от Shadow

Получается у тебя 2 варианта шаблонов страницы, для серверного рендера (jinja2) и для клиентского (angularjs)?

Это же не удобно.

Martin256 ★★
() автор топика

Если нужно малой кровью сделать «чтобы страница не перезагружать целиком», на сайте, где сейчас все рендерится сервером, то хватит какого-нибудь pjax или instantClick. Не идеально, но работает и реализуется быстро, для блога уж точно хватит.

anonymous
()

стоит разок вчитаться про next.js / nuxt.js, сделать простейший туториал https://learnnextjs.com/basics/getting-started за день-другой и наступает понимание, как оно будте выглядеть завтра:

- морда на js, которая рендерится и там и сям и все плевать, т.к. это происходит прозрачно

- API на чем угодно, PHP/Node.js/Go/ПитонПерлХаскельЛюбойДругой

с одной стороны это пугает, но с другой, оно ведь и к лучшему. Если не считать морочек js с отсутствием некоторых привычных в PHP фишек, то и выглядит даже неплохо.

igordata
()

Это что получается PHP, Ruby, etc веб бекенд мертв

Уже лет 10 мёртв, ага, только никто об этом не знает и все юзают.

Alve ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.