在这个例子中,你可以看到script标签直接加载main.jsx。这种直接包含是与 Create React App 的主要区别,增强了对项目入口点的清晰度和控制。

1.1 依赖关系

为了确保您的脚本文件正确加载,Vite 利用现代 ES 模块导入。确保您的 package.json 包含必要的依赖项:

\\\"dependencies\\\": {  \\\"react\\\": \\\"^18.2.0\\\",  \\\"react-dom\\\": \\\"^18.2.0\\\"}

在 HTML 文件中显式包含脚本可确保应用程序的正确加载和执行顺序,从而减轻脚本加载的潜在问题。

2.main.jsx

main.jsx 文件充当 React 应用程序的入口点。该文件负责将根组件渲染到 DOM 中。它通常是在index.html 中脚本标记的src 属性中指定的文件。

import React from \\'react\\';import ReactDOM from \\'react-dom/client\\';import App from \\'./App.jsx\\';import \\'./index.css\\';// Render the root component into the root element in the HTMLReactDOM.createRoot(document.getElementById(\\'root\\')).render(        );

在此文件中,ReactDOM.createRoot 用于将 App 组件渲染到具有 id root 的 HTML 元素中。这种直接渲染方法无需临时保留任何根元素,从而简化了流程,使应用程序从何处启动以及涉及哪些组件变得清晰可见。

3.应用程序.jsx

App.jsx 文件包含主应用程序组件的定义。该组件作为 React 组件树的根。

import React from \\'react\\';const App = () => {  return (    

Hello, Vite and React!

);};export default App;

在此文件中,您定义应用程序的主要结构和行为。 App 组件是您构建主要 UI 和功能的地方,就像在任何其他 React 项目中一样。

附加材料和最佳实践

4. 将 Tailwind CSS 与 Vite 结合使用

Tailwind CSS 可以轻松集成到 Vite 项目中,实现实用优先的样式。

  1. 安装 Tailwind CSS:
npm install -D tailwindcss postcss autoprefixernpx tailwindcss init -p
  1. 配置 Tailwind:

使用项目的特定路径更新 tailwind.config.js:

module.exports = {  content: [\\'./index.html\\', \\'./src/**/*.{js,jsx,ts,tsx}\\'],  theme: {    extend: {},  },  plugins: [],};
  1. 在 CSS 中包含 Tailwind:

更新index.css以包含Tailwind的基础、组件和实用程序:

@tailwind base;@tailwind components;@tailwind utilities;

5. 模块热更换(HMR)

Vite提供开箱即用的HMR,让您无需刷新页面即可实时看到变化。

6. 环境变量

Vite使用.env文件来管理环境变量。在项目的根目录创建一个 .env 文件并定义变量:

VITE_API_URL=https://api.example.com

使用 import.meta.env:
在应用程序中访问这些变量

const apiUrl = import.meta.env.VITE_API_URL;

7. 优化构建流程

Vite 的构建命令(vite build)在底层使用 Rollup 来生成高度优化的静态资产以用于生产。这可确保您的应用程序快速高效。

结论

在React项目中使用Vite可以提供精简高效的开发体验。了解 index.html、main.jsx 和 App.jsx 等关键文件的流程和结构可以显着增强您的开发过程。凭借 Tailwind CSS 集成、HMR 和优化构建的附加优势,Vite 成为 React 开发人员的现代、强大工具。

通过利用这些功能和最佳实践,您可以轻松创建高性能、可扩展且可维护的应用程序。

","image":"http://www.luping.net/uploads/20240731/172241388566a9f33d9b199.jpg","datePublished":"2024-07-31T16:18:05+08:00","dateModified":"2024-07-31T16:18:05+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 了解 React 项目中的 Vite 流程和结构

了解 React 项目中的 Vite 流程和结构

发布于2024-07-31
浏览:874

Understanding Vite Flow and Structure in a React Project

使用 React 时,Vite 提供了简化的开发体验,与传统的 Create React App 设置有一些关键区别。本博文将探讨典型Vite项目的结构,重点关注index.html、main.jsx、App.jsx等关键文件。

1.index.html

在 Vite 支持的 React 应用程序中,index.html 是一个关键的起点。与 Create React App 自动注入脚本不同,Vite 要求您直接指定脚本文件。这种显式包含简化了对应用程序的入口点和依赖项的理解。


  
    
    
    Vite   React
  
  
    

在这个例子中,你可以看到script标签直接加载main.jsx。这种直接包含是与 Create React App 的主要区别,增强了对项目入口点的清晰度和控制。

1.1 依赖关系

为了确保您的脚本文件正确加载,Vite 利用现代 ES 模块导入。确保您的 package.json 包含必要的依赖项:

"dependencies": {
  "react": "^18.2.0",
  "react-dom": "^18.2.0"
}

在 HTML 文件中显式包含脚本可确保应用程序的正确加载和执行顺序,从而减轻脚本加载的潜在问题。

2.main.jsx

main.jsx 文件充当 React 应用程序的入口点。该文件负责将根组件渲染到 DOM 中。它通常是在index.html 中脚本标记的src 属性中指定的文件。

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App.jsx';
import './index.css';

// Render the root component into the root element in the HTML
ReactDOM.createRoot(document.getElementById('root')).render(
  
    
  
);

在此文件中,ReactDOM.createRoot 用于将 App 组件渲染到具有 id root 的 HTML 元素中。这种直接渲染方法无需临时保留任何根元素,从而简化了流程,使应用程序从何处启动以及涉及哪些组件变得清晰可见。

3.应用程序.jsx

App.jsx 文件包含主应用程序组件的定义。该组件作为 React 组件树的根。

import React from 'react';

const App = () => {
  return (
    

Hello, Vite and React!

); }; export default App;

在此文件中,您定义应用程序的主要结构和行为。 App 组件是您构建主要 UI 和功能的地方,就像在任何其他 React 项目中一样。

附加材料和最佳实践

4. 将 Tailwind CSS 与 Vite 结合使用

Tailwind CSS 可以轻松集成到 Vite 项目中,实现实用优先的样式。

  1. 安装 Tailwind CSS:
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
  1. 配置 Tailwind:

使用项目的特定路径更新 tailwind.config.js:

module.exports = {
  content: ['./index.html', './src/**/*.{js,jsx,ts,tsx}'],
  theme: {
    extend: {},
  },
  plugins: [],
};
  1. 在 CSS 中包含 Tailwind:

更新index.css以包含Tailwind的基础、组件和实用程序:

@tailwind base;
@tailwind components;
@tailwind utilities;

5. 模块热更换(HMR)

Vite提供开箱即用的HMR,让您无需刷新页面即可实时看到变化。

6. 环境变量

Vite使用.env文件来管理环境变量。在项目的根目录创建一个 .env 文件并定义变量:

VITE_API_URL=https://api.example.com

使用 import.meta.env:
在应用程序中访问这些变量

const apiUrl = import.meta.env.VITE_API_URL;

7. 优化构建流程

Vite 的构建命令(vite build)在底层使用 Rollup 来生成高度优化的静态资产以用于生产。这可确保您的应用程序快速高效。

结论

在React项目中使用Vite可以提供精简高效的开发体验。了解 index.html、main.jsx 和 App.jsx 等关键文件的流程和结构可以显着增强您的开发过程。凭借 Tailwind CSS 集成、HMR 和优化构建的附加优势,Vite 成为 React 开发人员的现代、强大工具。

通过利用这些功能和最佳实践,您可以轻松创建高性能、可扩展且可维护的应用程序。

版本声明 本文转载于:https://dev.to/vyan/understanding-vite-flow-and-structure-in-a-react-project-2e84?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    [2最后一行与数据集中的每个不同标识符关联。考虑以下数据: 1 2014-02-01 kjkj 1 2014-03-11 ajskj 3 2014-02-01 sfdg 3 2014-06-12 fdsa 在(ID)上选择DISTINC 来自the_table 按ID订单,date desc;...
    编程 发布于2025-02-06
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-02-06
  • 版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    在默认值中使用current_timestamp或mysql版本中的current_timestamp或在5.6.5 这种限制源于遗产实现的关注,这些限制需要为Current_timestamp功能提供特定的实现。消息和相关问题 `Productid` int(10)unsigned not ...
    编程 发布于2025-02-06
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    如何为JavaScript对象变量创建动态键,尝试为JavaScript对象创建动态键,使用此Syntax jsObj['key' i] = 'example' 1;将不起作用。正确的方法采用方括号:他们维持一个长度属性,该属性反映了数字属性(索引)和一个数字属性的数量。标准对象没有模仿这...
    编程 发布于2025-02-06
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样?使用openssl?答案:可以使用mcrypt数据加密数据,可以使用openssl。关于如何使用openssl对McRypt进行加密的数据: openssl_decrypt...
    编程 发布于2025-02-06
  • 如何使用Python的记录模块实现自定义处理?
    如何使用Python的记录模块实现自定义处理?
    使用Python的Loggging Module 确保正确处理和登录对于疑虑和维护的稳定性至关重要Python应用程序。尽管手动捕获和记录异常是一种可行的方法,但它可能乏味且容易出错。解决此问题,Python允许您覆盖默认的异常处理机制,并将其重定向为登录模块。这提供了一种方便而系统的方法来捕获和...
    编程 发布于2025-02-06
  • 如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    [2使用内置的char_length()function。 char_length()和length() 此查询将从指定的表中检索所有行,并基于上升顺序对它们进行排序指定列的字符长度。带有更长字符串的行将出现在结果的底部。
    编程 发布于2025-02-06
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python 导入编解码器 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有表情符号 emoji_pattern = re.compile(“ [”...
    编程 发布于2025-02-06
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    在这里工作/},false); 不幸的是,答案是否。除非在Creation中存储对处理程序的引用。要解决此问题,请考虑将事件处理程序存储在中心位置,例如页面的主要对象,请考虑将事件处理程序存储在中心位置,否则无法清理匿名事件处理程序。 。这允许在需要时轻松迭代和清洁处理程序。
    编程 发布于2025-02-06
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    插入记录时如何解决“一般错误:2006 MySQL 服务器已消失”介绍:将数据插入 MySQL 数据库有时会导致错误“一般错误:2006 MySQL 服务器已消失”。当与服务器的连接丢失时会出现此错误,通常是由于 MySQL 配置中的两个变量之一所致。解决方案:解决此错误的关键是调整wait_tim...
    编程 发布于2025-02-06
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    克服go mod中的模块路径差异 coreos/bbolt:github.com/coreos/ [email受保护]:解析go.mod:模块将其路径声明为:go.etcd.io/bbolt `要解决此问题,您可以在go.mod文件中使用替换指令。只需在go.mod的末尾添加以下行:[&& &...
    编程 发布于2025-02-06
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mysql组使用mysql组来调整查询结果。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的基于列的转换。通过子句以及条件汇总函数,例如总和或情况。让我们考虑以下查询: select d.data_timestamp, sum(data_id = 1 tata...
    编程 发布于2025-02-06
  • 如何在整个HTML文档中设计特定元素类型的第一个实例?
    如何在整个HTML文档中设计特定元素类型的第一个实例?
    [2单独使用CSS,整个HTML文档可能是一个挑战。 the:第一型伪级仅限于与其父元素中类型的第一个元素匹配。 以下CSS将使用添加的类样式的第一个段落: }
    编程 发布于2025-02-06
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    [2 _post ['ss'];?> 的目的是从单击提交按钮时,文本框并显示。但是,输出保持空白。当方法=“ get”无缝工作时,方法=“ post”构成问题。 检查action属性:如果您正在刷新页面,请将操作属性设置为空字符串,例如] action ='&#...
    编程 发布于2025-02-06
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php 您的目标可能是检索“ varnum”属性值,其中提取数据的传统方法可能会使您感到困惑。 - > attributes()为$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ at...
    编程 发布于2025-02-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3