Задать вопрос
Ответы пользователя по тегу Next.js
  • Переносы строк в сгенерированном html, как добавить?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как это можно пофиксить в Next js (App router) (14.1.0)

    Можно выбросить этого сеошника в окно, вообще рабочая тема и не только с nextjs.
    Ответ написан
    Комментировать
  • Как изменить константу в файле после сборки приложения?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Подскажите, как изменить значение в файле после сборки приложения?

    Все работает, но это только для серверных компонентов, для клиентских ошибка Module not found fs

    Клиентским компонентом без сервера - никак.
    Нужно читать файл как в серверных так и в клиентских компонентах
    с возможностью изменения файла в продакшне

    Напишите api, которое будет выполнять необходимые действия на сервере, а уже затем обращайтесь к этому api с клиента.
    Ответ написан
  • Как сделать модальное окно на nextjs с помощью параллельных роутов, которое не закрывается при перезагрузке?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    How to Create Modals with Unique Routes in Next.js...
    Parallel Routes - Modals
    Parallel route modal using Next.js
    Так же, можно писать в состояние->localStorage isOpenModal, если при загрузки страницы оно true - сразу показываем окно.
    Ответ написан
    4 комментария
  • Как скрыть ответ api от клиента?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Никак. Все что "загрузилось браузером" - доступно клиенту. Вопрос лишь в усложнение получения доступа к этим данным, например - разбить получение данных на разные части.
    Ответ написан
    2 комментария
  • Как сделать поля width и height к компонента Image необязательными?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    https://nextjs.org/docs/pages/api-reference/compon...
    Required, except for statically imported images or images with the fill property.

    fill
    Ответ написан
    Комментировать
  • Выбор технологии для Front-end?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Количество посещений ~ 3М в месяц.

    Вы еще за 10 лет напишите, какой максимальный RPS?
    Предназначен ли Next для таких нагрузок?

    SSR Framework Benchmark, но я бы настроил промежуточный сервер для кэширования (например Nginx), чтобы снять до 90% нагрузки с приложения.
    Какие альтернативы?

    Насколько я знаю, производительность следующая (от наименьшего к наибольшему):
    1. NextJS.
    2. Remix.
    3. Astro.
    Какой мощности сервер понадобится для такой нагрузки?

    Зависит от приложения и его кэширования, но если RPS будет около тысячи, то хватит VDS за 50-150$/мес.
    Ответ написан
  • Импорт приложения Nextjs из npm?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Хотелось бы иметь возможность устанавливать это приложение так: npm install

    Можно клонировать репу - git clone.
    Ответ написан
  • Какую выбрать CMS для сайта на Next.js?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    заказчику требуется также CMS

    или подключить все на WordPress, но там все как-то сделано через одно место

    Вопрос стоимости и задач. WP далеко не идеальный инструмент, но дешевый и базовые фунции реализует легко.

    В ином случае, можно выбрать Strapi, cms под все, хоть админку для электрочайника делайте. Максимальная популярность в своем небольшом сегменте.
    Ответ написан
    1 комментарий
  • Почему next.js при билде выдает ошибку Cannot destructure property 'store' of 'useReduxContext2(...)' as it is null?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    А если так?
    // app/layout.js
    'client'
    
    import type { Metadata } from "next";
    import { Inter } from "next/font/google";
    import "@/base.scss";
    import { Provider } from 'react-redux';
    import { store } from '../redux/store';
    import Layout from "@/components/Layout";
    
    const inter = Inter({ subsets: ["latin"] });
    
    export const metadata: Metadata = {
      title: "Home | PlayCloud",
      description: "Unique web application for listening to a huge amount of music in a unique format",
    }
    
    export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
      return (
        <html lang="en">
          <body className={inter.className}>
            <Provider store={store}>
              <Layout>
                {children}
              </Layout>
            </Provider>
          </body>
        </html>
      )
    }

    Cannot destructure property 'store' of 'useReduxContext2(...)' as it is null?

    Вам не нужно использовать useReduxContext2, потому что у Вас уже есть Provider, который делает контекст доступным для всех вложенных компонентов. Используйте useSelector и useDispatch из react-redux для получения доступа к состоянию и отправки в Redux.
    Ответ написан
  • Как реализовать аутентификацию в nextjs?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    подскажите, как лучше сделать все таки

    Не использовать фреймворк для генерации динамики и статики, а использовать профильный фреймворк для работы на бэке, например nestjs.
    https://docs.nestjs.com/security/authentication
    Ответ написан
  • Next JS что за ошибка?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Build error occurred
    Error: Page "/client/[clientId]" is missing "generateStaticParams()" so it cannot be used with "output: export" config.

    Предположительно, Вы пытаетесь выполнить статическую генерацию на нексте, при этом у Вас имеется страница с динамическим маршрутом (/client/[clientId]). Для динамических маршрутов необходимо использовать функцию getStaticPaths().

    Базовый пример:
    // /pages/client/[clientId].js
    
    export async function getStaticPaths() {
      const clientIds = await fetchClientIdsFromDatabase(); 
    
      return {
        paths: clientIds.map(clientId => ({params: {clientId: clientId}})),
        fallback: false,
      };
    }

    // next.config.js
    
    export default {
        output: 'export',
    }
    
    // или
    
    module.exports = {
      output: 'export',
    }
    Ответ написан
    Комментировать
  • Как обновить верстку на NEXT.JS c Wordpress?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Надо смотреть конкретный конфиг некста, но предположу, что никак. Скорее всего, фронт живет отдельной жизнью, используя api wp.
    в файловом менеджере на vps, где файлы самого next я нашел скрипт, который надо поменять, поменял его

    Так нельзя делать, т.к. это итоговая компиляция проекта. Вам необходимо вносить изменения в исходники некст проекта, затем билдить и экспортировать (если старый проект) проект как статику.
    Ответ написан
    7 комментариев
  • Как в next js добавить класс к элементу?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как в обычном реакте:
    const Icon = ({title, href, active}) => {
        const className = active ? 'active' : '';
    
        return (
            <Link href={href} className={`svgh m-auto ${className}`}>
                {/* svg */}
            </Link>
        );
    }

    'use client'
    import React, {useState, useEffect} from 'react';
    import Icon from './icons/Icon';
    
    const links = [
        {href: '#home_anchor', svgIcon: 'home'},
        {href: '#user_anchor', svgIcon: 'user'}
        // others
    ];
    
    const Navbar = () => {
        const [activeLink, setActiveLink] = useState('');
    
        useEffect(() => {
            const handleScroll = () => {
                // logic scroll
            }
    
            // add anchor
            window.addEventListener('scroll', handleScroll);
    
            // remove anchor from unmount
            return () => window.removeEventListener('scroll', handleScroll)
    
        }, []);
    
        return (
            <nav className="flex flex-col fixed bg-gray-800 align-center">
                {links.map((l) => (
                    <Icon href={l.href} key={l.svgIcon} title={l.svgIcon} active={activeLink === l.href}/>
                ))}
            </nav>
        );
    }
    Ответ написан
    1 комментарий
  • Стотит ли менять asp.net mvc на asp.net web api + nextjs?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В первую очереди улучшить UI за счёт React библиотек

    Mantine как свежий воздух, после монстров в виде and и material.
    Но в общем, я не хочу тратить время на написание сервера на каком-то NodeJS и т.д.

    Нода не лучший вариант вложения своего времени, если же Вы уже не работаете с ней.

    В остальном, согласен с теми, кто сомневается. Давайте точнее, сколько денег Вы заработаете/сэкономите при всем это переписывание? Если нисколько или мало, то предлагаю - расстрелять преждевременных оптимизаторов.
    Ответ написан
    6 комментариев
  • Как можно обновить head в next.js?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Я бы использовал существующий компонент Head, вместе с контекстом и состоянием, а так же кастомный HeadProvider:
    // _app.js
    import {HeadProvider} from './HeadProvider';
    
    function App({Component, pageProps}) {
        return (
            <HeadProvider>
                <Component {...pageProps} />
            </HeadProvider>
        );
    }

    // HeadProvider.js
    import React, {createContext, useContext, useState} from 'react';
    
    const HeadContext = createContext();
    export const useHead = () => useContext(HeadContext);
    
    export function HeadProvider({children}) {
        const [headData, setHeadData] = useState({
            title: 'Init title',
            description: 'Init description',
            keywords: 'Init keywords'
        });
    
        return (
            <HeadContext.Provider value={{headData, setHeadData}}>
                {children}
            </HeadContext.Provider>
        );
    }

    // MyBestHead.js
    import Head from 'next/head';
    import {useHead} from './HeadProvider';
    
    export function MyBestHead() {
        const {headData} = useHead();
    
        return (
            <Head>
                <title>{headData.title}</title>
                <meta name="description" content={headData.description}/>
                {/* more head items */}
            </Head>
        );
    }

    // MyComponent.js
    import React, {useCallback} from 'react';
    import {useHead} from './HeadProvider';
    
    export function MyComponent() {
        const {setHeadData} = useHead();
    
        const handleClick = useCallback(() => {
            setHeadData({
                title: 'New title',
                description: 'New description',
                keywords: 'New keywords'
            });
        }, [setHeadData]);
    
        return (
            <button onClick={handleClick}>Update Head Data</button>
        );
    }
    Ответ написан
    1 комментарий
  • Как работают SSR компоненты?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Если я правильно понимаю работу Next.js: компоненты без состояния рендерятся на сервере и могут индексироваться поисковыми роботами

    Верно, индексация стандартная.
    А с состоянием - на стороне клиента, и роботы их не видят.

    Не совсем. Поисковики индексируют динамику, но ограниченно, и она проиграет классической статике или ssr. То, что Вы видите динамику в топе - это не заслуга динамики, а недоработка конкурентов со статикой.
    Однако в компоненте самой страницы ArticlePage у меня в любом случае будет использование useState. Значит ли это, что вся страница будет отрисовываться на клиенте?

    Не совсем. Часть страницы будет отрисована на сервере, а часть на клиенте.
    И что поисковые роботы обойдут контент страницы стороной?

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

    К нексту у многих имеются вопросы, поэтому Вы не первый и уж тем более, не последний :)
    Ответ написан
    Комментировать
  • Деплой next.js приложения на regru?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Для SSR:
    1. Собрать docker image со своим приложением.
    2. По ssh залить п1 на сервер.
    3. По ssh установить docker и выполнить установку п2.
    4. По ssh установить и настроить nginx.
    5. По ssh настроить iptables (или аналог).
    6. (опционально) По ssh настроить автозапуск контейнера с приложением и nginx, при падение сервера.

    Для слабого vds (1 ядро, <2gb ram) использую Arch (без gui), для всех остальных - Ubuntu.

    Если у Вас SSG, то отдельный сервер не нужен, т.к. Вы можете на обычный shared хостинг залить эту статику, как обычный html сайт.
    Ответ написан
    Комментировать
  • Как вывести картинки?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    в папке images в папке проекта

    А папка images в яйце, а яйцо в другой папке. Предположу, что речь идет про папку images, которая находится в корне проекта, тогда обычно указывается относительный путь:
    <img src="/images/img.jpg" alt="" width="100px" height="100px"/>
    
    // or
    
    import Image from 'next/image';
    <Image src="/images/img.jpg" alt="" width={100} height={100}/>
    Ответ написан
  • Не могу определиться с пайплайном, как разобраться?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Изучил основы JavaScript, понял что всякие манипуляции DOM мне не нужны, потому что это не используется больше

    Где и кем больше не используется?
    Думаю такой, может мне надо выучить React?

    Но есть почему-то ощущение что React в чистом виде мне не нужен, чтобы пользоваться Next.js.

    NextJS: The React Framework for the Web...
    А в "грязном" виде React какой?
    Я остановился и понял что я занимаюсь какой-то фигней. Что я хватаю отовсюду понемногу знаний, но они не складываются в общую картинку.

    Собственно вопрос: по какому пути лучше пойти, чтобы потихоньку прийти к желаемому?

    Все так и есть. Вам необходимо изучать JS в следующем порядке:
    1. Vanilla JS.
    2. React.
    3. Frontend React + NextJS.
    4. Fullstack React + NextJS (+NestJS?).
    При этом чтобы не потратить время впустую на изучения вещей, которые абсолютно не нужны.

    А вот здесь интересный момент. Видите ли, исходя из количества вакансий, NodeJS и все ее производные в качестве backend фреймворков - не сильно востребованы, относительно более специализированных backend языков/фреймворков. Если у Вас нет особой страсти к NodeJS, то рекомендую сфокусироваться лишь на frontend (учитывая, Ваш контекст), а затем (если будет возможность) - учить в дополнение к frontend более специализированные backend языки/фреймворки.
    Ответ написан
    2 комментария