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日

相关文章

  • div层调整z-index属性无效原因分析及解决方法

    下面是关于“div层调整z-index属性无效原因分析及解决方法”的完整攻略。 标题:div层调整z-index属性无效原因分析及解决方法 问题描述 在网页设计过程中,遇到了div层调整z-index属性无效的问题。即在元素设置了z-index属性后,发现另一个元素(通常是原本处于下方的元素)仍然遮盖在其上方,无法显示在视觉层中。 原因分析 该问题通常是由以…

    css 2023年6月10日
    00
  • CSS也要语义化

    下面是CSS语义化的完整攻略,包含以下五个步骤: 步骤1:理解CSS语义化的概念 CSS语义化是指用具有意义的HTML标签和类名来编写CSS样式的过程。这样做的好处在于,可以让代码更易于阅读和维护,并且可以提升可访问性和SEO优化的效果。 步骤2:选择合适的HTML标签 在编写HTML代码时,应该选择最合适的HTML标签来描述内容。例如,对于一个网站的标题应…

    css 2023年6月9日
    00
  • html中表示颜色的方式有6位16进制代码及rgb或关键字

    在HTML中表示颜色的方式有三种,分别为6位16进制代码、RGB值以及预定义的颜色关键字。 1. 6位16进制代码 6位16进制代码是一种以#开头,后跟6位16进制数的表示颜色的方式。每两位16进制数表示颜色的R、G和B三原色分量,取值范围为00(0)至FF(255)。 示例1:表示红色(#FF0000) <div style="backgr…

    css 2023年6月9日
    00
  • 吃透移动端 1px的具体用法

    吃透移动端 1px 的具体用法 在移动端开发中,经常会遇到 1px 的边框显示问题,因为移动端的屏幕分辨率很高,CSS 的像素一般是对应于物理像素的两倍甚至三倍。这就导致边框在高像素密度设备上可能会变得很细,有时候会留出空隙或虚化。 为了解决这个问题,可以使用下面介绍的几种方法。 方法一:使用 viewport 与 rem 我们可以通过 viewport 和…

    css 2023年6月9日
    00
  • 用CSS实现Tab页切换效果的示例代码

    下面我将详细讲解如何用CSS实现Tab页切换效果的示例代码的完整攻略。 1. HTML结构 首先,在HTML中需要定义Tab选项卡的基本结构。我们需要一个Tab容器(通常是一个div元素),里面包含若干个Tab选项卡。每个Tab选项卡需要一个标题和对应的内容部分。基本结构如下: <div class="tab-container"&…

    css 2023年6月9日
    00
  • jquery实现聚光灯效果的方法

    下面是“jquery实现聚光灯效果的方法”的完整攻略。 1. 概述 聚光灯效果是一种将画面中某个区域突出显示的效果。在网页设计中,聚光灯效果常被用于高亮显示产品、展示特殊信息等。本文将介绍使用jQuery实现聚光灯效果的方法,涵盖基本思路、代码实现和两个示例说明。 2. 基本思路 实现聚光灯效果的基本思路是:在鼠标移动到需要突出显示的区域时,创建一个同等大小…

    css 2023年6月10日
    00
  • jQuery实现验证用户登录

    “jQuery实现验证用户登录”的完整攻略包含以下步骤: 1. 页面结构搭建 首先,需要在HTML页面中搭建一个用户登录的页面。可以使用<form>表单标签来实现输入用户名和密码,并使用<button>标签来提供登录按钮。以下是该部分HTML代码示例: <form> <label>用户名:</label&…

    css 2023年6月10日
    00
  • easyui Draggable组件实现拖动效果

    来讲解一下 easyui Draggable 组件的使用攻略。 简介 Draggable 是 easyui 中的一个拖动组件,它可以给页面中的任意元素添加拖动功能,支持鼠标和触摸屏两种操作方式。使用 Draggable 组件可以很方便地实现一些拖动、排序、调整位置等功能。 基本用法 Draggable 组件的调用方式如下: <div id="…

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