Vite+React搭建开发构建环境实践记录

下面我将详细讲解“Vite+React搭建开发构建环境实践记录”的完整攻略及示例。

一、什么是 Vite?

Vite 是一个由 Evan You 提出的前端开发构建工具,旨在提供快速的开发环境和尽可能地优化生产环境。它基于 ES Modules,能够在开发环境下实现轻量级,快速的响应式开发体验。此外,它还提供了对 Vue.js、React 等框架的原生支持。

二、基于 Vite 搭建 React 开发环境

2.1 安装环境

Vite 需要 Node.js 14.0+ 环境支持,因此首先确保已经安装了 Node.js。然后按照如下步骤安装 Vite:

npm init vite-app my-react-vite-app --template react
cd my-react-vite-app
npm install
npm run dev

上面的命令会在当前目录下创建一个名为 my-react-vite-app 的 React 项目,并安装它所依赖的模块。其中,npm run dev 命令将启动一个开发服务器,您可以在浏览器中预览和测试您的 React 项目。

2.2 编写 React 代码

安装完成后,您可以进入 src 目录,编辑 main.jsx 文件,开始编写 React 代码。例如,您可以编写如下内容:

import React, { useState } from 'react';
import './App.css';

function App() {
  const [count, setCount] = useState(0);

  return (
    <div className="App">
      <header className="App-header">
        <h2>Vite + React</h2>
        <p>
          You clicked {count} times<button onClick={() => setCount(count + 1)}>Click me</button>
        </p>
      </header>
    </div>
  );
}

export default App;

在上面的 React 代码中,我们为组件 App 定义了一个 state 变量 count,并使用 useState 钩子函数初始化。同时,你可以使用 onClick 属性来绑定点击事件并改变 count 的值。

2.3 运行 React 项目

保存修改后,您可以在浏览器中预览您的项目,只需要运行以下命令:

npm run dev

然后在浏览器中打开 http://localhost:3000 即可预览你的 React 应用。

三、Vite 的优势

3.1 极速的启动和热重载

Vite 使用了现代化而高效的 ES Modules,配合打包工具 Rollup,实现了从保存到浏览器渲染的速度比 webpack 更快。几乎感觉不到编译时间的出现,并搭载了自身的热重载服务器。

3.2 优化的构建效率

由于 Vite 最初为实现高效的开发体验而打造,因此在开发环境下使用效果尤为明显。随着 Vite 的逐渐推广,越来越多的项目已经在生产环境中使用 Vite 进行构建。相对于 webpack,Vite 在短时间内进行构建的效率明显更高。

四、示例说明

下面分别给出了两个 React 示例,使用 Vite 构建的开发环境:

4.1 使用 React Hooks 做的 Emoji 排列组件

import React from "react";
import "./styles.css";
import useSortableEmoji from "./useSortableEmoji";

export default function App() {
  const [emojis, setEmojis] = useSortableEmoji([
    "?",
    "?‍?",
    "❤️",
    "?",
    "?",
    "?",
    "?",
    "?"
  ]);

  return (
    <div className="App">
      <h2>Sortable Emoji</h2>
      <p>Drag and drop to organize them in any order you'd like!</p>
      <div className="emojis">
        {emojis.map((emoji, index) => (
          <div
            key={emoji}
            draggable={true}
            onDragStart={event => {
              event.dataTransfer.setData("text/plain", index);
            }}
            onDragOver={event => {
              event.preventDefault();
            }}
            onDrop={event => {
              const droppedIndex = event.dataTransfer.getData("text/plain");
              setEmojis(oldEmojis => {
                const newEmojis = [...oldEmojis];
                newEmojis.splice(index, 0, newEmojis.splice(droppedIndex, 1)[0]);
                return newEmojis;
              });
            }}
            className="emoji"
          >
            {emoji}
          </div>
        ))}
      </div>
    </div>
  );
}

运行 npm run dev 即可在浏览器中查看该组件的效果。

4.2 使用 React Context API 的二个示例

4.2.1 使用 Context API 实现一个主题切换功能

import React, { useContext } from "react";
import "./styles.css";
import { ThemeContext } from "./themeContext";

export default function App() {
  const { theme, toggleTheme } = useContext(ThemeContext);

  return (
    <div className={`App ${theme}`}>
      <h1>Theme Switcher</h1>
      <button onClick={toggleTheme}>Toggle Theme</button>
      <p>Current theme: {theme}</p>
    </div>
  );
}

在上面的代码中,我们使用了 useContext 钩子函数来读取由 createContext 创建的主题信息。运行 npm run dev 即可在浏览器中查看该组件的效果。

4.2.2 使用 Context API 实现一个用户登录/注销示例

import React, { useContext } from "react";
import "./styles.css";
import { UserContext } from "./userContext";

export default function App() {
  const { user, setUser } = useContext(UserContext);

  return (
    <div className="App">
      <h1>User Login/Logout</h1>
      {
        user ? (
          <React.Fragment>
            <p>Welcome, {user.username}!</p>
            <button onClick={() => setUser(null)}>Log Out</button>
          </React.Fragment>
        ) : (
          <React.Fragment>
            <p>Please log in:</p>
            <form onSubmit={(event) => {
              event.preventDefault();
              const username = event.target.elements.username.value;
              const password = event.target.elements.password.value;
              setUser({ username, password });
            }}>
              <label htmlFor="username">Username:</label>
              <input type="text" id="username" name="username" />

              <label htmlFor="password">Password:</label>
              <input type="password" id="password" name="password" />

              <button type="submit">Log In</button>
            </form>
          </React.Fragment>
        )
      }
    </div>
  );
}

在上面的代码中,我们创建了一个 UserContext,用于管理用户登录状态。如果用户已经登录,我们显示欢迎语和注销按钮;否则,我们显示登录表单。运行 npm run dev 即可在浏览器中查看该组件的效果。

以上是基于 Vite 搭建 React 开发环境的完整攻略和两个示例说明。希望能对您的学习有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vite+React搭建开发构建环境实践记录 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 利用CSS3实现圆角的outline效果的教程

    以下是实现利用CSS3实现圆角的outline效果的教程: 1. outline和border的异同 首先,需要了解outline和border的异同。 outline outline是一种单独的样式属性,用来为一个元素添加轮廓,不影响元素的位置和大小,也不一定为矩形。 它的语法如下: outline: [outline-color] [outline-st…

    css 2023年6月10日
    00
  • 今天学到的CSS最新技术(与图片背景相关)

    以下是今天学到的CSS最新技术(与图片背景相关)的完整攻略: CSS最新技术 在现代CSS中,有许多技术可以与图片背景相关。以下列出最有用的一些技术: object-fit属性 object-fit属性允许你在一个元素中放置一个图片,并控制图片如何显示。它有以下几个可选的值: fill:图片会被拉伸来填充元素的整个内容框 contain:图片会被缩放到适合元…

    css 2023年6月9日
    00
  • CSS背景background、background-position使用详解

    CSS背景background、background-position使用详解 背景概述 在 CSS 中,每个元素都可以有一个背景。背景是一个用来设置元素背景表现的 CSS 属性合集,包括颜色、图片、位置、大小等。 CSS背景属性 background-color 用于设置元素背景的颜色。 div { background-color: #ffffff; }…

    css 2023年6月9日
    00
  • 使用Angular CLI进行Build(构建)和Serve详解

    使用Angular CLI进行Build(构建)和Serve是开发Angular应用程序时必不可少的步骤,下面是详细的攻略: 什么是Angular CLI Angular CLI是一组用于Angular应用程序的命令行工具,可以帮助我们快速创建、构建和测试Angular项目,大大提高开发效率。 安装Angular CLI 使用Angular CLI之前,我们…

    css 2023年6月9日
    00
  • CSS3 3D旋转rotate效果实例介绍

    对于“CSS3 3D旋转rotate效果实例介绍”,我将给出完整的攻略,具体如下: 1. 什么是CSS3 3D旋转rotate效果 CSS3中的的3D旋转旋转变换可以通过rotateX,rotateY,rotateZ 和rotate3d(deg,x,y,z)四种方法来实现。一般我们最常使用的是rotateX,rotateY,rotateZ 三种属性。 2. …

    css 2023年6月10日
    00
  • css hack之清除浮动(clearfix)

    清除浮动(clearfix)是CSS hack技术中的一种,它主要用于清除父级容器元素中子级浮动元素带来的影响,以避免出现莫名其妙的问题。下面是完整的清除浮动攻略。 什么是清除浮动(clearfix)? 清除浮动是在一个容器里包含了浮动元素后,为了让父级元素能够自适应子元素高度而产生的一种CSS hack技术。在不清除浮动的情况下,容器无法识别浮动元素的高度…

    css 2023年6月10日
    00
  • CSS中的选择器种类总结及效率比较

    接下来我将详细讲解“CSS中的选择器种类总结及效率比较”的完整攻略。 CSS中的选择器种类总结及效率比较 CSS选择器是用于定位HTML文档中的元素并应用样式的工具。根据选择器的种类及其使用情况,CSS选择器可以分为多种类型。以下是CSS中选择器类型的总结及效率比较。 基本选择器 基本选择器是选择HTML标签、ID、class的选择器。这种选择器是最常用的选…

    css 2023年6月10日
    00
  • 基于JavaScript 实现拖放功能

    下面是基于JavaScript实现拖放功能的攻略: 一、前置知识 HTML基础知识 CSS基础知识 JavaScript基础知识 二、实现拖放 首先,在HTML中创建一个元素,作为可拖动的源元素。例如: <div id="drag-elem" draggable="true">这是一个可拖动的元素</…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部