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

6 Советы: используя Next.js для вашего следующего веб-приложения

Next.js незаменим, когда вы хотите построить высокопроизводительное App App. Это используется для … Теги с помощью Nextjs, Rect, JavaScript, Frontend.

Next.js незаменим, когда вы хотите построить высокопроизводительное App App.

Используется для власти некоторых моих приложений, таких как Медталли , ведомое медицинское сообщество данных и Истинный дом , автоматизированный инструмент для дома оценки для недвижимости в Гонконге.

По пути я узнал несколько трюков и выяснил несколько «gotchas» структуры, которую начинающие могут найти полезные. И без дальнейшего ADO, давайте начнем:

1. Вам необходимо кэшировать данные из GetInitialProps или поведение задней кнопки браузера будет сломаться.

GetInitialProps Используется для получения данных для страницы, но он также работает, когда пользователь нажимает кнопку «Назад» на браузере. Это заставляет браузер прокрутить до позиции, где вы ранее оставили, но без удаленных данных из GetInitialProps необходимо для рендера. Вы можете узнать больше об этой проблеме здесь Отказ

Чтобы решить эту проблему, вам нужно кэшировать данные на стороне клиента после ее получения. Вот быстрый и простой способ сделать это:

let cache = {};

class App extends React.Component {
  static async getInitialProps({ req, query, asPath, pathname }) {

    let data;
    //if data is in cache then use the cache
    if (cache[someID]) {
      data = cache[someID]
    } else {
      //if not, then fetch from server
      data = await fetch(`someAPI`);
    }

    return {
     data: data
    }

  render() {
      //check if client, if so store the data in the cache. 
      //If you don't do this check, there will be a separate cache stored on the server since Next.js does server side rendering as well.
      if (process.browser) {
        cache[someID] = this.props.data;
      }

      render (){

       //your components
      }
    }
  }

Вы также можете сделать это с redux Отказ

2. Используйте компонент Next.js ‘ссылку вместо маршрутизатора. Итак, Google может сканировать свои URL

Гусеничный гугл не видит ссылки, написанные так:

Перейти к странице!

Поэтому избегайте писать свои ссылки с помощью маршрутизатора следующего на следующий. Вместо этого используйте следующие <Ссылка> Компонент, как это:

import Link from 'next/link'

function Home() {
  return (
    
Click{' '} here {' '} to read more
) } export default Home

3. Next.js работает лучше с реагированием материала ui, чем отреагируют семантические интерфейсы UI

Если вы пытаетесь выбрать между библиотеками Next.js-приложения Next.js, вы пытаетесь выбрать.

Отзывчивые компоненты семантического интерфейса UI не встроены так, чтобы хорошо работает с рендерингом сервера Next.js, потому что они ищут браузер окно Объект, который не доступен на сервере.

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

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

Если я убедил вас, отправляйтесь на материал Maesty Ui Next.js Пример для начала.

4. Если вы используете ISOMORPHIC-DONTETECT, чтобы выполнить ваши данные, вы должны предоставить абсолютный URL

Создатели Next.js рекомендуют библиотеку под названием изоморфно-внесение для получения данных. Имеет гораздо меньший размер пучка, чем Axios и хорошо работает как на клиенте, так и на сервере.

Тем не менее, Isomorphic-undetch требует абсолютного URL или не удастся. Я предполагаю, что он имеет отношение к различным средам (Client & Server), на которой может быть выполнен ваш код. Относительные URL-адреса просто не являются явными и достаточно надежными в этом случае.

Вы можете построить абсолютный URL от GetInitialProops, как это:

class App extends React.Component {
  static async getInitialProps({ req, query, asPath, pathname }) {

    let baseUrl = req ? `${req.protocol}://${req.get("Host")}` : "";

    let data = await fetch(baseUrl + 'relativeURL')


    return {
      data: data

    }

  }
  1. Храните свои URL в базе данных, если вы хотите самые красивые URL

URL-адреса должны быть красивыми, поэтому люди хотят нажать на них, когда они видят их в Google.

Вы обычно хотите избежать идентификатора таблицы базы данных в вашем URL-адресе, как это: /post/245/i-love-neardjs/ Отказ

В идеале ваши URL должны быть что-то вроде этого: /post/i-love-nextjs Отказ

Но этот URL отсутствует ID 245, необходимый для получения данных из базы данных.

Чтобы решить эту проблему, вам нужно будет хранить URL в базе данных, как это:

245 / post / i- Любовь-аллеюс Я люблю Next.js. потому что…

На сервере, напишите код, чтобы получить данные, используя URL вместо идентификатора сообщения, когда кто-то запрашивает mywebsite.com/post/i-love-nextjs. Вот пример с использованием Express.js:

server.get('/post/:slug', async (req, res) => {
    const actualPage = "/post";

    //get the data using '/post/i-love-nextjs' as the id
    let data = await fetchDataWithURL(req.params.slug)

    const postContent = { data: data  };
    app.render(req, res, actualPage, postContent);
  });

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

  1. CSS перерывается в продуктах, но не развитие при использовании материала UI с помощью Next.js
function createPageContext() {
  return {
    theme,
    sheetsManager: new Map(),
    sheetsRegistry: new SheetsRegistry(),


    //add this to fix broken css in prod
    generateClassName: createGenerateClassName({
      productionPrefix: "prod"
    })


  };
}

Если это произойдет с вами, попробуйте добавить эту строку в файл getpagecontext.js:

Вот и все!

Оригинал: “https://dev.to/jlei523/6-tips-using-next-js-for-your-next-web-app-1hhh”