Рубрики
Без рубрики

Сравнение next.js и после.js для SSR React Apps

Написанные John-Au Yeung✏️ Next.js и Fash.js Оба рамки, которые позволяют нам построить Server-Side-Re … Помечено с помощью реакции, JavaScript.

Написано Джон-Ау Йунг ✏️.

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 }) => (
  
{data.articles.map(a => (

{a.title}

{a.description}

{a.content}

))}
) export default Home

GetStaticProps Функция позволит нам получать данные, а затем мы можем получить его от реквизитов с тем же именем в нашем компоненте.

Мы можем создать о странице в О.Ойс следующим образом:

import NavBar from '../components/navbar'
import HeadTag from '../components/head-tag'

const Home = () => (
  

This is a news app.

) export default Home

Тогда мы можем перемещаться прямо к ним, собираясь на / и , соответственно.

В Компоненты Папка, мы можем создавать компоненты, которые мы можем ссылаться на странице, создавая следующие файлы:

//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 (
      
{data.articles.map(a => (

{a.title}

{a.description}

{a.content}

))}
); } } export default Home;

Мы получаем данные в инициализы Статический метод, а затем мы можем получить доступ к нему через реквизиты.

//About.js

import React, { Component } from 'react';
import NavBar from './NavBar';

class About extends Component {
  render() {
    return (
      

This is a new app

); } } export default About;

Компоненты, которые мы ссылаем на страницы, могут быть созданы в той же папке:

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”