网站LOGO
白雾茫茫丶
页面加载中
7月21日
网站LOGO 白雾茫茫丶
记录学习、生活和有趣的事
菜单
  • 白雾茫茫丶
    记录学习、生活和有趣的事
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    Next.js 实战 (一):项目搭建指南
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    • 复制图片
    • 复制图片地址
    • 百度识图
    按住ctrl可打开默认菜单

    Next.js 实战 (一):项目搭建指南

    谢明伟 · 原创 ·
    前端开发Next 实战 · ReactNextNextUI
    共 4036 字 · 约 2 分钟 · 179

    前言

    时间过得好快,一下就来到2024下半年了。

    上半年我为了学习 Nuxt3,从 0 到 1 开发了一个导航网站:Dream Site,目前主要的功能都已完成了,后续有时间再慢慢添加有趣的功能。

    下半年开始进攻 Next.js,前段时间我使用 Next.js 重构了一个项目:今日热榜,对 Next.js 有一定的认识,这次打算完整地从 0 到 1 搭建一个后台模板,进而探索 Next.js 的奥秘。

    项目搭建

    1. 官方建议使用 create-next-app 启动一个新的 Next.js 应用程序:

      bash 代码:
      npx create-next-app@latest
    2. 安装时,你将看到以下提示:

      txt 代码:
      What is your project named? my-app
      Would you like to use TypeScript? No / Yes
      Would you like to use ESLint? No / Yes
      Would you like to use Tailwind CSS? No / Yes
      Would you like to use `src/` directory? No / Yes
      Would you like to use App Router? (recommended) No / Yes
      Would you like to customize the default import alias (@/*)? No / Yes
      What import alias would you like configured? @/*

      Next.js现在默认附带 TypeScript、ESLint 和 Tailwind CSS 配置。

    3. 项目运行

      text 代码:
      pnpm dev

    目录结构

    txt 代码:
    📄 next.config.js // Next.js的配置文件
    📄 package.json // 项目依赖项和脚本
    📄 instrumentation.ts // OpenTelemetry and Instrumentation 文件
    📄 middleware.ts // Next.js请求中间件
    📄 .env // Environment variables 环境变量
    📄 .env.local // 局部环境变量
    📄 .env.production // 生产环境变量
    📄 .env.development // 开发环境变量
    📄 .eslintrc.json // ESLint 的配置文件
    📄 .gitignore // 要忽略的 Git 文件和文件夹
    📄 next-env.d.ts // 用于 Next.js 的 TypeScript 声明文件
    📄 tsconfig.json // TypeScript 的配置文件
    📄 jsconfig.json // JavaScript 的配置文件

    APP 路由约定

    txt 代码:
    📄 layout[.js,.jsx,.ts] // Layout 布局
    📄 page[.js,.jsx,.ts] // Page 页
    📄 loading[.js,.jsx,.ts] // Loading UI 加载 UI
    📄 not-found[.js,.jsx,.ts] // Not found UI 未找到 UI
    📄 error[.js,.jsx,.ts] // Error UI 错误 UI
    📄 global-error[.js,.jsx,.ts] // Global error UI 全局错误 UI
    📄 route[.js,.ts] // API endpoint API 端点
    📄 template[.js,.jsx,.ts] // Re-rendered layout 重新渲染的布局
    📄 default[.js,.jsx,.ts] // 并行路由回退页面

    更多约定请参考:App Routing Conventions

    配置 Eslint、Prettierrc、Husky等项目提交规范

    参考文章:

    Nuxt3 实战 (二):配置 Eslint、Prettierrc、Husky等项目提交规范

    使用 release-it 自动管理版本号和生成 CHANGELOG

    参考文章:

    Nuxt3 实战 (三):使用 release-it 自动管理版本号和生成 CHANGELOG

    import 排序规则

    参考文章:

    使用 sort-imports 排序规则美化头部 import 代码

    安装 NextUI

    1. 根目录运行

      bash 代码:
      pnpm add @nextui-org/react framer-motion
    2. 新建 .npmrc 文件,并写入以下内容

      txt 代码:
      public-hoist-pattern[]=*@nextui-org/*
    3. tailwind.config.js 配置文件添加代码:

      ts 代码:
       import { nextui } from '@nextui-org/react';
       import type { Config } from 'tailwindcss';
      
       const config: Config = {
      darkMode: 'class',
      content: [
       './node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}',
      ],
      theme: {
       extend: {}
      },
      plugins: [nextui()],
       };
       export default config;
    4. 在根节点添加 NextUIProvider

      tsx 代码:
       import './globals.scss';
      
       import { NextUIProvider } from '@nextui-org/react';
       import type { Metadata } from 'next';
       import { Inter } from 'next/font/google';
      
       const inter = Inter({ subsets: ['latin'] });
      
       export const metadata: Metadata = {
      title: 'next-admin',
      description: '基于 Next.js 开发的后台模板',
       };
      
       export default function RootLayout({
      children,
       }: Readonly<{
      children: React.ReactNode;
       }>) {
      return (
       <html lang="zh-cn">
         <body className={inter.className}>
           <NextUIProvider>{children}</NextUIProvider>
         </body>
       </html>
      );
       }

    总结

    后续开发会以 Next.js 为核心,开发一个类似 Xmw-Admin 项目的功能,为此来探索 Next.js 其中的奥秘:

    我会在此基础上加入我的一些设计和想法,致力于提高用户体验。

    开发周期可能会有点长,但我会记录在开发中所遇到的问题和解决的办法,并记录在 Nuxt实战系列 中,后期会打算使用 Prisma + Supabase 数据库存储数据,最终完成一个基于 Next.js 的全栈项目。

    声明:本文由 谢明伟(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    我要发表评论 我要发表评论
    博客logo 白雾茫茫丶 记录学习、生活和有趣的事 51统计 百度统计
    MOEICP 萌ICP备20236860号 ICP 粤ICP备2023007649号 ICP 粤公网安备44030402006402号

    💻️ 谢明伟 一天前 在线

    🕛

    本站已运行 2 年 202 天 2 小时 54 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    白雾茫茫丶. © 2022 ~ 2024.
    网站logo

    白雾茫茫丶 记录学习、生活和有趣的事