跳转至

01 环境设置⚓︎

安装⚓︎

npx create-next-app@latest ai-saas --typescript --tailwind --eslint

在使用 npx命令时,跟在包名之后的 -- 不是用来执行也不是安装包,而是用来传递参数给即将执行的命令。在命令行界面中,-- 通常用来表示之后的参数应该直接传递给命令,而不是被 npxnpm 等工具本身解析。

对于 npx create-next-app@latest --typescript --tailwind --eslint 这个命令:

  • npx 是命令行工具,用于执行包。
  • create-next-app@latestnpx 将要执行的包名,@latest 表示使用该包的最新版本。
  • --typescript, --tailwind, --eslint 都是传递给 create-next-app 的参数,它们分别告诉 create-next-app 脚本使用 TypeScript,安装 Tailwind CSS,并且配置 ESLint。
如果需要在当前文件夹下安装

npx create-next-app@latest . --typescript --tailwind --eslint

文件名改为.

注意可能需要解决冲突

npxnpm

npxnpm 是 Node.js 生态系统中的两个不同的工具,虽然它们有关联,但服务的目的不同:

  1. npx:

  2. npx 是一个 Node.js 的包执行工具,它允许你运行在本地或远程 npm 注册表中的包而无需先全局安装它们。

  3. 它特别适用于运行创建新项目的脚手架工具(如 create-next-app),因为这样的工具通常只运行一次,不需要永久安装在你的系统上。
  4. 使用 npx 运行命令时,它会临时安装最新版本(除非指定了特定版本)的命令工具,使用后即可丢弃,这样可以避免本地环境污染。

  5. npm:

  6. npm 是 Node.js 的包管理工具,用于安装、更新和管理依赖库。

  7. 使用 npm 安装包时,你通常是将它们添加到你的项目依赖中(局部安装)或安装到全局环境中(全局安装)。
  8. 如果你全局安装了一个包(如 create-next-app),那么你可以直接使用 create-next-app 命令而不是 npx create-next-app

总之,npx 用于单次执行命令,特别是那些你不需要全局安装的命令。而 npm 更多是用于包管理。你可以用 npm 运行 npx 命令,但这通常意味着你需要全局安装该包,这不是必要的,也不是推荐的做法,尤其是对于像 create-next-app 这样的只需要运行一次的工具。

远程 npm 注册表

远程 npm 注册表是一个存储 JavaScript 代码包的大型数据库,它使开发者能够发布他们的 Node.js 项目,这些项目可以是命令行工具、库或者是应用程序的依赖。这个注册表被设计为一个公共的服务,允许任何人免费下载和使用存储在其中的包。

当你使用 npmnpx 安装包时,这些工具会从远程 npm 注册表中检索并下载你请求的包。这个注册表由 npm, Inc. 维护,并且是 Node.js 和前端开发中最广泛使用的包管理系统。

例如,当你运行 npx create-next-app 命令时,npx 会查询 npm 注册表以找到 create-next-app 包,然后将其下载到一个临时位置,并执行包中的脚本来创建一个新的 Next.js 应用。这个过程不需要你先手动下载或全局安装 create-next-appnpx 会为你自动处理这一切。

初始化shadcn/ui模板⚓︎

shadcn-ui 不是一个组件库,它是一系列可重复使用的组件,你可以将它们复制并粘贴到你的应用程序中。它不会作为依赖通过 npm 发布或分发。你可以选择你需要的组件,复制它们的代码到你的项目中,并根据需要进行自定义。

初始化模板

npx shadcn-ui@latest init

并不会安装到本地

Shadcn UI、Material-UI 和 Chakra-UI

Shadcn UI、Material-UI 和 Chakra-UI 是三个不同的前端开发 UI 库/框架,每个都有其独特的方法和特点:

  • Shadcn UI:这个库采用了独特的方法,允许开发人员将单个 UI 组件的源代码下载到他们的代码库中,而不是通过捆绑包提供组件的访问,这与其他 UI 库的做法不同。

  • Chakra UI:作为一个健壮的、以布局为中心的库,Chakra UI 提供与 Material-UI 类似的 UI 组件,但更注重灵活、可组合和可扩展的代码。它还拥有更干净的类名结构,并且在 CSS 类中手动操作更容易,虽然与 Material-UI 相比,它的组件可能提供更少的自定义选项。

  • Material-UI:遵循 Google 的 Material Design 指南,Material-UI 提供了广泛的即用型组件,具有大量的自定义选项。然而,与 Chakra UI 相比,它在样式调整方面可能不那么灵活。Material-UI 的组件具有更多的特性和属性,使它们非常灵活,但由于其固执的设计语言,自定义可能会更加复杂。

总结来说,如果您正在寻找高度可自定义的组件,并且希望轻松下载单个部分,Shadcn UI 可能是正确的选择。如果您偏好更简单、更极简主义的设计方法,并且在编码中需要灵活性,Chakra UI 可能是您的首选。如果您需要一套遵循 Material Design 原则且功能丰富的组件,Material-UI 是理想的选择,但它在自定义方面可能有更陡峭的学习曲线。

优势

Shadcn UI的主要优势在于其提供了一种不同于其他UI库(如Material-UI和Chakra-UI)的使用方式。它允许开发者直接将单个UI组件的源代码下载到自己的代码库中,而不是从捆绑的包中获取组件。这种方式具有以下几个潜在的优势:

  1. 个性化定制:由于可以下载单个组件的源代码,开发者可以更容易地对这些组件进行深度定制,以满足特定的设计需求。

  2. 轻量化:只需添加所需的组件,可以避免加载整个UI库,从而减少应用程序的整体大小,提高加载速度。

  3. 更新控制:开发者可以更好地控制组件的版本和更新,因为他们可以选择何时以及是否要集成最新的组件代码。

  4. 更少的依赖:由于不需要引入整个UI库,项目中的依赖数量可能会减少,这有助于减少版本冲突的可能性。

  5. 学习曲线:对于需要特定组件而不是完整UI框架的开发者来说,Shadcn UI可能有更平缓的学习曲线。

总的来说,Shadcn UI提供了更大的灵活性和控制,对于那些想要精简其前端工作流程并专注于组件级别定制的开发者来说,这是一个很好的选择。

选择UI组件⚓︎

需要先注册,例如

npx shadcn-ui@latest add button

然后会在components/ui下生成一个button.tsx,可以在里面自定义了(Material-UI 和 Chakra-UI库就没有这种功能),最后在tsx文件中直接引用