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日

相关文章

  • 标准化——表格

    当我们需要在网页中展示大量数据时,标准化的表格可以是一个十分有用的工具。下面是一个关于如何使用markdown语法来创建标准化表格的完整攻略: 基本语法 表头 在markdown中,用竖线|来分隔列并用空格来分隔单元格内容,来创建一个表格。表头需要用|分隔符分隔,且表头必须放置在表格之前。 | 列1 | 列2 | 列3 | | — | — | —…

    css 2023年6月10日
    00
  • 使用CSS混合模式和SVG来动态更改产品图片的颜色

    使用CSS混合模式和SVG来动态更改产品图片的颜色是一种常见且流行的技巧,它可以帮助网站设计师轻松地更改UI设计的元素颜色,从而创建出独特、精美的产品图片。下面是这种技巧的完整攻略。 步骤一:创建产品图片 首先,需要创建一个可编辑的产品图片。可以使用软件如Adobe Photoshop、Adobe Illustrator或Sketch等工具来完成这个步骤。例…

    css 2023年6月9日
    00
  • jQuery中过滤器的基本用法示例

    接下来让我给你详细讲解“jQuery中过滤器的基本用法示例”的完整攻略。 简介 jQuery中的过滤器是一种用于选择DOM元素的工具。使用该工具,可以从一大堆的DOM元素中精确地选择出符合特定条件的指定元素并对其进行操作。在jQuery中,过滤器使用函数作为参数,函数的返回值会作为过滤器的结果。 基本用法 在jQuery中,过滤器的基本用法是通过filter…

    css 2023年6月10日
    00
  • 纯css实现漂亮又健壮的tooltip的方法

    下面我将详细讲解“纯CSS实现漂亮又健壮的tooltip的方法”的完整攻略。 一、实现原理 Tooltip是指当用户将鼠标悬浮在页面的一个元素上时,会显示一个独立的提示框,用于显示该元素的一些额外信息。实现Tooltip的一种常用方式是使用JavaScript或jQuery等前端框架,但是我们也可以使用纯CSS来实现。 具体实现的原理是:通过CSS的:hov…

    css 2023年6月10日
    00
  • 关于vue.js弹窗组件的知识点总结

    下面是关于vue.js弹窗组件的知识点总结,主要包括组件创建、使用、传值等方面的内容。 1. 组件创建 1.1 创建基础组件 在Vue.js中,我们可以通过Vue.component方法来创建组件,如下所示: Vue.component(‘my-dialog’, { template: ` <div class="my-dialog&quot…

    css 2023年6月10日
    00
  • js设置控件的隐藏与显示的两种方法

    下面是详细讲解“js设置控件的隐藏与显示的两种方法”的完整攻略。 方法一:通过display属性控制 在JS中,我们可以通过控制一个元素的style.display属性来实现控件的隐藏与显示。具体而言,我们可以通过将该属性设置为“none”来将控件隐藏起来,将该属性设置为其他值(如“block”、“inline”等)来将控件显示出来。 下面是一个具体的示例:…

    css 2023年6月10日
    00
  • 图解CSS中position属性的定位用法

    让我来详细讲解一下“图解CSS中position属性的定位用法”。 什么是position属性 在CSS中,position属性用于定义一个元素的定位方式。 position属性的取值有四种: static:默认值,表示元素正常的定位方式,即遵循文档流的方式进行排版; relative:相对定位,表示元素相对于自身原来的位置进行定位; absolute:绝对…

    css 2023年6月9日
    00
  • 使用CSS3实现字体颜色渐变的实现

    使用CSS3的渐变功能可以轻松实现文字颜色的渐变效果。具体的实现步骤如下: 步骤一:定义渐变样式的css 在CSS中,渐变可以通过定义渐变样式(gradient)来实现。渐变样式有两种:线性渐变(linear-gradient)和径向渐变(radial-gradient)。在设置渐变样式时需要指定颜色变换的起点和终点,以及每个颜色在渐变中所占的百分比。 以下…

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