Razzle: Запуск нового приложения

Созданный на 5 июн. 2017  ·  5Комментарии  ·  Источник: jaredpalmer/razzle

Этот проект выглядит потрясающе. Я собираюсь создать новый проект и просто задавался вопросом между next.js, create-react-app и razzle, каковы преимущества или что было бы лучше в долгосрочной перспективе. Я бы очень хотел SSR, поэтому CRA, вероятно, не может быть и речи. Я создал приложение с помощью next, а затем обнаружил этот проект. Надеюсь, это подходящее место, чтобы спросить об этом, но я просто хотел получить некоторые мысли о том, что лучше в долгосрочной перспективе.

discussion

Самый полезный комментарий

Спасибо @knipferrc

Подобный опыт привел меня к созданию Razzle.

Около 6 месяцев назад я запустил огромное приложение с Next.js сразу после его выхода, и отток был для меня слишком большим, чтобы с ним справиться. Я буквально представил PR для примера параметризованной маршрутизации (т.е. /user/:id ). Я помню, что потерял целую неделю работы из-за какой-то странной ошибки, связанной со срабатыванием getInitialProps при изменении маршрута . В конце концов, Next.js принимает за вас множество очень важных решений (например, маршрутизацию, выборку данных, структуру папок и стиль). Хорошо это или плохо, полностью зависит от типа приложения, которое вы создаете. Как оказалось, мне на самом деле не нужно было сервер отображать каждый отдельный маршрут (только как 2), я хотел состояния загрузки клиента вместо полной перезагрузки страницы, и я не хотел разрушать глобальное дерево состояний между изменениями маршрута. Это, в сочетании с моим мнением о том, что React-Router 4 — лучшая вещь после нарезанного хлеба, означало, что Next.js не подходил для проекта.

В поисках чего-то более стабильного я перешел на проект NYT kyt. Этого было достаточно примерно на 2 месяца, но 1) время сборки стало безумно медленным (> 45 с) по мере роста приложения, 2) правила SCSS kyt не подходили для проекта, и 3) я обнаружил, что ведение журнала kyt (с безумное количество смайликов) довольно раздражает. Поэтому я решил начать работу над более тонкой и быстрой заменой kyt, но с универсальным HMR и API конфигурации, аналогичным Next.js — так сказать, create-react-app-ssr .

Когда все было сказано и сделано, я понял, что создал почти независимую от фреймворка систему сборки и что этот уровень абстракции больше подходит для нужд моего проекта. Под «независимостью от фреймворка» я подразумеваю, что Razzle будет на 100% работать с Angular, Vue, Rax, Preact, Inferno, React-XP, RN-Web, Reason-React и, что наиболее важно для меня, со всеми сумасшедшими вещами, которые появятся дальше. ИМХО, Адаптивность — ключевое отличие Razzle от всего остального, что я видел. С Razzle вы можете прочитать о чем-то в блоге, создать форк, добавить систему конфигурации babel-transform/webpack/параллельную сборку и просто попробовать дерьмо . Почему? Потому что, в отличие от Next, Razzle не является фреймворком и, в отличие от CRA, Razzle позволяет вам расширять базовую конфигурацию, не разветвляя ее. Это очень важно для того, как я учусь, преподаю, экспериментирую и занимаюсь бизнесом.

Гибкость и агностицизм Razzle уже окупились для меня и моей команды:

  • Мы постепенно перевели наше приложение с частичного Flow на 100% TypeScript, изменив менее 10 строк кода в razzle.config.js .
  • Даже не пытаясь, Razzle стал самым быстрым способом запуска проекта ReasonReact (SSR или SPA).

Что касается будущего Раззла. Два дня назад «добавление поддержки SSR в CRA» было упомянуто как 15 главных задач в дорожной карте команды React Core. Если в CRA добавят поддержку SSR, Razzle может больше не существовать..._и я полностью согласен с этим_. Однако до тех пор, пока этого не произойдет, Razzle будет продвигаться как независимый от фреймворка инструмент сборки для универсального JavaScript, отображаемого на сервере.

Все 5 Комментарий

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

Насколько мне известно, Next.js — это полноценный фреймворк, который при желании можно использовать как часть экосистемы ZEIT? или платформа?. В то время как Razzle более минималистичный. Таким образом, он не включает в себя функции, которые вам могут не понадобиться, но также верно и то, что он не включает функции, которые могут вам понадобиться или могут понадобиться в конечном итоге.

Я также рассматривал возможность использования Next.js раньше, но некоторые мелкие детали меня раздражали. Например, Next.js не минимизирует вывод HTML должным образом (я знаю, что это совсем не так важно, но для меня это было нарушителем условий сделки). Он также использует styled-jsx и CSS-in-JS, но я предпочитаю Styled Components . Плюс для моего нового проекта мне не понадобилась маршрутизация (пока 😄).

Наконец, к счастью, после тестирования нескольких примеров проектов я нашел и использовал Razzle. На самом деле я начал с создания примера проекта под названием Razzle Material UI Styled Example , включая некоторые модули и функции, которые мне нужны. Так что теперь я могу почти бесстыдно работать над своим новым проектом. Не стесняйтесь использовать упомянутый репозиторий, если вам нужны те же функции или некоторые из них.

Спасибо @knipferrc

Подобный опыт привел меня к созданию Razzle.

Около 6 месяцев назад я запустил огромное приложение с Next.js сразу после его выхода, и отток был для меня слишком большим, чтобы с ним справиться. Я буквально представил PR для примера параметризованной маршрутизации (т.е. /user/:id ). Я помню, что потерял целую неделю работы из-за какой-то странной ошибки, связанной со срабатыванием getInitialProps при изменении маршрута . В конце концов, Next.js принимает за вас множество очень важных решений (например, маршрутизацию, выборку данных, структуру папок и стиль). Хорошо это или плохо, полностью зависит от типа приложения, которое вы создаете. Как оказалось, мне на самом деле не нужно было сервер отображать каждый отдельный маршрут (только как 2), я хотел состояния загрузки клиента вместо полной перезагрузки страницы, и я не хотел разрушать глобальное дерево состояний между изменениями маршрута. Это, в сочетании с моим мнением о том, что React-Router 4 — лучшая вещь после нарезанного хлеба, означало, что Next.js не подходил для проекта.

В поисках чего-то более стабильного я перешел на проект NYT kyt. Этого было достаточно примерно на 2 месяца, но 1) время сборки стало безумно медленным (> 45 с) по мере роста приложения, 2) правила SCSS kyt не подходили для проекта, и 3) я обнаружил, что ведение журнала kyt (с безумное количество смайликов) довольно раздражает. Поэтому я решил начать работу над более тонкой и быстрой заменой kyt, но с универсальным HMR и API конфигурации, аналогичным Next.js — так сказать, create-react-app-ssr .

Когда все было сказано и сделано, я понял, что создал почти независимую от фреймворка систему сборки и что этот уровень абстракции больше подходит для нужд моего проекта. Под «независимостью от фреймворка» я подразумеваю, что Razzle будет на 100% работать с Angular, Vue, Rax, Preact, Inferno, React-XP, RN-Web, Reason-React и, что наиболее важно для меня, со всеми сумасшедшими вещами, которые появятся дальше. ИМХО, Адаптивность — ключевое отличие Razzle от всего остального, что я видел. С Razzle вы можете прочитать о чем-то в блоге, создать форк, добавить систему конфигурации babel-transform/webpack/параллельную сборку и просто попробовать дерьмо . Почему? Потому что, в отличие от Next, Razzle не является фреймворком и, в отличие от CRA, Razzle позволяет вам расширять базовую конфигурацию, не разветвляя ее. Это очень важно для того, как я учусь, преподаю, экспериментирую и занимаюсь бизнесом.

Гибкость и агностицизм Razzle уже окупились для меня и моей команды:

  • Мы постепенно перевели наше приложение с частичного Flow на 100% TypeScript, изменив менее 10 строк кода в razzle.config.js .
  • Даже не пытаясь, Razzle стал самым быстрым способом запуска проекта ReasonReact (SSR или SPA).

Что касается будущего Раззла. Два дня назад «добавление поддержки SSR в CRA» было упомянуто как 15 главных задач в дорожной карте команды React Core. Если в CRA добавят поддержку SSR, Razzle может больше не существовать..._и я полностью согласен с этим_. Однако до тех пор, пока этого не произойдет, Razzle будет продвигаться как независимый от фреймворка инструмент сборки для универсального JavaScript, отображаемого на сервере.

Вот это да!! Большое спасибо, ребята, за потрясающие ответы.

Привет, Джаред, я не очень понимаю, как использовать Razzle для преобразования проекта SPA Angular в SSR.
Не могли бы вы дать мне подсказку или руководство о том, как это сделать? Большое спасибо.

+1 за решение Razzle Angular. https://github.com/jaredpalmer/razzle/issues/1109

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

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

alexjoyner picture alexjoyner  ·  3Комментарии

piersolenski picture piersolenski  ·  4Комментарии

corydeppen picture corydeppen  ·  3Комментарии

Ronny25 picture Ronny25  ·  5Комментарии

dizzyn picture dizzyn  ·  3Комментарии