Написано Джон-Ау Йунг ✏️.
Next.js и Fash.js являются оба рамками, которые позволяют создавать серверные побочные приложения RACT без проблем настройки SSR с нуля из проекта Create-React-App. В этой статье мы будем сравнивать next.js и all.js и исследовать их различия.
Различия между next.js и после.js
Основная разница между Next.js и After.js находится в механизме маршрутизации.
С Next.js мы не указываем маршруты напрямую; Вместо этого мы позволим Text.js справиться с маршрутизацией автоматически. Он отображает URL-адреса нашим компонентам, проверяя структуру файлов проекта и сопоставление URL-адресов непосредственно к компонентам с этим. С другой стороны, с After.js мы должны четко указывать маршруты. После.js использует React Router, чтобы сделать маршрутизацию.
Большинство других функций, таких как данные для получения данных и как созданы страницы, в значительной степени то же самое между двумя.
Способ создания проектов выполняется в значительной степени так же со своими собственными программами CLI.
Чтобы создать проект Next.js, проводим:
npm init next-app //or yarn create next-app
Для создания проекта After.js мы работаем:
yarn global add create-after-app create-after-app
Создание страницы
Оба next.js и fash.js давайте создадим страницы, добавляя компоненты реагирования. Чтобы проиллюстрировать, мы создадим приложение, используя Новости API с next.js и после.js. Все, что нам нужно сделать, это создавать компоненты, а затем покажет в нашем приложении.
В next.js, если мы просто создаем страницу в страницы
Папка, то мы можем перейти к нему через URL с тем же именем.
Например, в Next.js мы можем создать index.js
в страницы
Папка следующим образом:
import NavBar from '../components/navbar' import fetch from 'isomorphic-unfetch'; import HeadTag from '../components/head-tag'; export async function getStaticProps() { const res = await fetch(`https://newsapi.org/v2/top-headlines/?language=en&apiKey=${process.env.apiKey}`) const data = await res.json() return { props: { data, }, } } const Home = ({ data }) => () export default Home{data.articles.map(a => ( ))}{a.title}
{a.description}
{a.content}
GetStaticProps
Функция позволит нам получать данные, а затем мы можем получить его от реквизитов с тем же именем в нашем компоненте.
Мы можем создать о странице в О.Ойс
следующим образом:
import NavBar from '../components/navbar' import HeadTag from '../components/head-tag' const Home = () => () export default HomeThis is a news app.
Тогда мы можем перемещаться прямо к ним, собираясь на /
и /о
, соответственно.
В Компоненты
Папка, мы можем создавать компоненты, которые мы можем ссылаться на странице, создавая следующие файлы:
//head-tag.js import Head from 'next/head' const HeadTag = () => (News App ) export default HeadTag
//navbar.js import Link from 'next/link' const NavBar = () => ( ) export default NavBar
В нашем приложении After.js мы создали следующие компоненты в SRC
папка:
//Home.js import React, { Component } from 'react'; import NavBar from './NavBar'; import fetch from 'isomorphic-unfetch'; class Home extends Component { static async getInitialProps() { const res = await fetch(`https://newsapi.org/v2/top-headlines/?language=en&apiKey=${process.env.RAZZLE_APIKEY}`) const data = await res.json(); return { data }; } render() { const { data } = this.props; return (); } } export default Home;{data.articles.map(a => ( ))}{a.title}
{a.description}
{a.content}
Мы получаем данные в инициализы
Статический метод, а затем мы можем получить доступ к нему через реквизиты.
//About.js import React, { Component } from 'react'; import NavBar from './NavBar'; class About extends Component { render() { return (); } } export default About;This is a new app
Компоненты, которые мы ссылаем на страницы, могут быть созданы в той же папке:
import React from 'react'; import { Link } from 'react-router-dom'; class NavBar extends React.Component { render() { return (Home About); } } export default NavBar;
Как мы видим, это все просто стандартные компоненты. Разница в том, что мы использовали Ссылка
Компонент из React Router для ссылок на навигацию страницы In.js, а в проекте Next.js мы добавляем ссылку навигационной страницы с собственным Ссылка
компонент.
Все, что говорится, опыт создания страниц в значительной степени одинаково в каждой структуре.
Маршрутизация
Маршрутизация находится в том, где next.js и после.js совсем разные.
Маршрутизация Next.js работает прямо из коробки без особых хлопот. Как только мы создадим страницы, мы можем перейти к ним напрямую или со ссылками, отобранными с помощью Ссылка
компонент.
С другой стороны, после.js много сложнее. Если у нас есть компонент страницы, который имеет GetInitialProps
Метод для получения данных, то мы не можем добавить его в файл маршрутов в виде асинхронизации.
В нашем Marross.js
Файл, который находится в SRC
Папка нашего проекта After.js у нас есть:
import React from 'react'; import { asyncComponent } from '@jaredpalmer/after'; import Home from './Home'; export default [ { path: '/', exact: true, component: Home, }, { path: '/about', exact: true, component: asyncComponent({ loader: () => import('./About'), // required Placeholder: () =>...LOADING..., // this is optional, just returns null by default }), }, ];
О.Ойс
Не получает данные, прежде чем она отображает, поэтому мы можем включить его как асинхронный маршрут. Тем не менее, Главная
Компонент не может быть включен в качестве асинхронизации, потому что у нас есть GetInitialProps
Async Method для получения данных.
Маршрутизация просто проще иметь дело в проекте Next.js, где он работает прямо из коробки. Маршрутизация более настраивается с After.js, но мы должны настроить его сами.
Получение данных
Получение данных в Next.js и после.js выполняется при первом представлении компонента. Как мы можем видеть из предыдущего раздела index.js
В нашем проекте Next.js выбирает данные в Async GetStaticProps
функция. В проекте After.js мы используем GetInitialProps
Статический метод класса компонентов для получения данных перед рендерингом страницы.
В обоих компонентах привлеченные данные доступны как опоры в компоненте.
Переменные среды хранятся в next.config.js
В проекте Next.js следующим образом:
module.exports = { env: { apiKey: 'your_api_key', }, }
А в проекте After.js переменные среды хранятся в .env
Файл и ключи для переменных среды, которые мы можем использовать внутри проекта, должны быть префиксированы Razzle_
Отказ
Например, мы можем написать это как следующее:
RAZZLE_APIKEY=your_api_key
В обоих раках переменные среды доступны как свойство Process.env
объект.
Заключение
Оба Next.js и all.js могут быть использованы для создания проектов по созданию на стороне серверов. Они полезны для строительства серверных сторон, оказываемых приложениями без особых усилий.
Основное отличие между next.js и после.js – маршрутизация. Next.js отображает URL-адреса к компонентам по их имени, и будут ли файлы компонентов в страницы
папка. Напротив, после.js использует React Router для маршрутизации, и мы должны настроить его самих.
Полная видимость в производстве реагированных приложений
Отладка приложений React могут быть сложными, особенно когда пользователи испытывают проблемы, которые трудно воспроизвести. Если вы заинтересованы в мониторинге и отслеживании состояния Redux, автоматически затрагивают ошибки JavaScript и отслеживание медленных сетевых запросов и время загрузки компонентов, попробуйте logrocket.
Logrocket Похоже на DVR для веб-приложений, записывая буквально все, что происходит в вашем приложении React. Вместо того, чтобы угадать, почему проблемы происходят, вы можете совокупные и отчитываться о том, в каком состоянии ваше заявление произошло, когда произошла проблема. Logrocket также контролирует производительность вашего приложения, отчетность с метриками, такими как нагрузка на CLECTION CPU, использование памяти клиента и многое другое.
Пакет Middleware Lognocket Redux добавляет дополнительный слой видимости в ваши сеансы пользователей. Logrocket Bogs все действия и состояние из ваших магазинов Redux.
Модернизация того, как вы отлаживаете свои реагистрационные приложения – Начните мониторинг бесплатно.
Пост Сравнивая next.js и fash.js для приложений raction ssr появился первым на Logocket blog Отказ
Оригинал: “https://dev.to/bnevilleoneill/comparing-next-js-and-after-js-for-ssr-react-apps-3fb”