Next.js 项目——从入门到入门(Eslint+Prettier)

news/2024/7/15 1:02:41 标签: javascript, 前端, nextjs, react.js

Next.js官方文档地址

什么是 Next.js

这是一个用于生产环境的 React 框架。

Next.js 为您提供生产环境所需的所有功能以及最佳的开发体验:包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能,无需任何配置。

功能:

功能说明
零配置自动编译并打包。从一开始就为生产环境而优化
混合模式: SSG 和 SSR在一个项目中同时支持构建时预渲染页面(SSG)和请求时渲染页面(SSR)
增量静态生成在构建之后以增量的方式添加并更新静态预渲染的页面
支持 TypeScript自动配置并编译 TypeScript
快速刷新快速、可靠的实时编辑体验,已在 Facebook 级别的应用上规模上得到验证
基于文件系统的路由每个 pages 目录下的组件都是一条路由
API 路由创建 API 端点(可选)以提供后端功能
内置支持 CSS使用 CSS 模块创建组件级的样式。内置对 Sass 的支持
代码拆分和打包采用由 Google Chrome 小组创建的、并经过优化的打包和拆分算法

更多功能: 支持 环境变量、 预览模式、 自定义 head 标签、 自动使用 polyfills 等等

项目创建

使用 pnpm 创建一个默认的 Next.js 应用,代码如下:

pnpx create-next-app nextjs-blog --use-pnpm

接下来会有一些option操作,可以根据自身需求来选择,这里的选择如下:

<a class=nextjs" />

启动项目的时候需要注意一下,当前 next 包用到的 node 版本。通过 node_modules/next/package.json 来查看一下,如图:

<a class=nextjs" />

需要项目的 node 版本至少满足 next 包的 node 版本,因此本项目使用 v18 的 Node.js,可以通过 node -v 检查版本,如图:

nodejs

项目运行

在项目创建的时候,依赖已经安装好了,所以直接运行即可。这里使用的是 pnpm,当然可以用 npm 或者 yarn 工具。

cd nextjs-blog

pnpm dev
# or
yarn dev
# or
npm run dev

将在3000端口上启动 Next.js 应用程序,在浏览器打开http://localhost:3000/,可以看到demo成功运行,如图:

<a class=nextjs" />

引擎锁定

在启动项目前检查过 Node.js 版本,可以像 next 包一样通过 engines 字段指定工具的特定版本。

{
  "name": "nextjs-blog",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "react": "^18",
    "react-dom": "^18",
    "next": "14.0.1"
  },
  "devDependencies": {
    "eslint": "^8",
    "eslint-config-next": "14.0.1"
  },
  "engines": {
    "node": ">=18.17.0"
  }
}

代码规范工具与格式化

为了设定一个标准,供项目的所有贡献者使用,以保持代码风格一致并遵循基本的最佳实践,本项目将使用两个工具:

  • Eslint - 代码规范工具
  • Prettier - 代码格式化工具

ESLint

  1. 下载 ESLint 相关依赖
pnpm install eslint eslint-config-prettier eslint-plugin-prettier eslint-plugin-react @next/eslint-plugin-next -D
依赖说明
eslintESLint 核心库
eslint-config-prettier关掉所有和 Prettier 冲突的 ESLint 的配置
eslint-plugin-prettier将 Prettier 的 rules 以插件的形式加入到 ESLint 里面
eslint-plugin-react为 React 使用 ESlint 的插件
@next/eslint-plugin-next为 Next 使用 ESlint 的插件
  1. 安装 Vscode 插件(ESLint)

eslint

  1. 配置 ESLint(.eslintrc.json)
{
  "extends": "next/core-web-vitals"
}
  1. 使用 ESLint

package.json 文件的 scripts 命令中:

lint

可以测试一下当前配置,通过运行以下命令:

pnpm lint

会得到如图提示:

eslint

Prettier

  1. 下载 prettier 相关依赖
pnpm install prettier -D
  1. 安装 Vscode 插件(Prettier)

Prettier
3. 配置 Prettier(.prettierrc)

.eslintrc.json

{
  "extends": ["next/core-web-vitals", "prettier"]
}

.prettierrc

{
  "tabWidth": 2,
  "useTabs": false,
  "semi": false,
  "singleQuote": true,
  "quoteProps": "as-needed",
  "jsxSingleQuote": false,
  "trailingComma": "none",
  "bracketSpacing": true,
  "bracketSameLine": false,
  "arrowParens": "avoid",
  "requirePragma": false
}

.prettierignore

/dist/*
/build
.local
.next
/node_modules/**

**/*.svg
**/*.sh

/public/*
*.yaml
*.json
*.md
.prettierrc

此文件是不希望 prettier 在这些目录中浪费任何资源去进行格式化,也可以使用类似 *.html 这样的方式去忽略文件。

现在,可以在 package.json 添加新的 script

prettier

可以测试一下当前配置,通过运行以下命令:

pnpm prettier

会得到如图提示:
prettier


http://www.niftyadmin.cn/n/5163888.html

相关文章

OpenStack使用SPICE替换VNC——宿主机Ubuntu22.04

OpenStack使用SPICE替换VNC——宿主机Ubuntu22.04 OpenStack使用SPICE替换VNC——宿主机Centos8 目录 0x00 协议比较一、VNC二、SPICE三、RDP 0x01 环境说明0x02 OpenStack控制台SPICE协议安装配置一、控制节点1.安装软件2.控制节点nova.conf3.停止novncproxy并取消开机启动4.启…

编程知识\_C与汇编深入分析

1. 汇编怎么调用C函数 1.1 直接调用 bl main 1.2 想传参数怎么办&#xff1f; 在arm中有个ATPCS规则(ARM-THUMB procedure call standard&#xff08;ARM-Thumb过程调用标准&#xff09;。 约定r0-r15寄存器的用途&#xff1a; r0-r3 调用者和被调用者之间传参数 r4-r11 函…

C#开发的OpenRA游戏之世界存在的属性UpdatesPlayerStatistics(2)

C#开发的OpenRA游戏之世界存在的属性UpdatesPlayerStatistics(2) 在文件OpenRA\mods\cnc\rules\ defaults.yaml里,可以看到这个配置,它的作用就是让这个单元可以被观察者查看到相关的信息。 UpdatesPlayerStatistics属性同样也是有两个类组成,一个叫做信息类UpdatesPlay…

为什么使用Golang而非Rust开发桌面应用?

MoonGuard 团队选择 Golang 而不是 Rust 作为他们的 Krater 桌面应用程序&#xff0c;因为 Golang 中更容易进行内存管理、类型安全和 ORM 支持。 使用 Rust 和 Tauri 时面临的一些挑战包括&#xff1a; 难以理解 Rust 的所有权和借用规则、其严格的类型安全有时会限制开发速…

本地数据库迁移到云端服务器

工具迁移xtrabackup 创建云服务器——通过云服务器提供的公网地址远程连接XShell——利用迁移工具将数据库从本地迁移到云服务器 &#xff08;1&#xff09;创建云服务器 &#xff08;2&#xff09;远程连接XShell &#xff08;3&#xff09;yum安装mysql &#xff08;4&…

基于随机森林算法的房价模型预测研究

基于随机森林算法的房价模型预测研究 摘要:本研究利用波士顿郊区房价的信息,并构建了全面的数据集。采用随机森林算法构建了房价预测模型,通过构建模型,并使用Grid Search进行超参数调整及交叉验证对模型进行优化,提高该模型房地产市场的房价预测准确性。研究对象为波士顿…

【多线程】synchronized的特性

文章目录 synchronized 的特性互斥可重入synchronized的使用加锁过程 synchronized 的特性 互斥 synchronized 会起到互斥效果&#xff0c;某个线程执行到某个对象的 synchronized 中时&#xff0c;其他线程如果也执行到同一个对象 synchronized 就会阻塞等待。进入 synchron…

Kafka+redis分布式锁结合使用心得总结

#kafka部分 KafkaListener(topics "#{${vsmart_alert_detection_tms_send_message_topic}.split(,)}", groupId "${vsmart.alert.detection.consumer.group}") public void vsmartAlertDetectionTmsSendMessage(ConsumerRecord<?, ?> record, A…