Vite 2.x + React + Zarm + Less + React Router v6 + Axios + flexible.js 搭建前端 H5 开发环境

简介: Vite 2.x + React + Zarm + Less + React Router v6 + Axios + flexible.js 搭建前端 H5 开发环境

项目地址

源码:kaimo-cost-h5



环境准备

兼容性注意Vite 需要 Node.js 版本 >= 12.0.0。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。

我的 node 版本是 v12.13.0,npm 版本是 6.12.0



1、初始化 Vite + React 项目


直接用官方提供的模板,一键生成项目:项目命名为 kaimo-cost-h5

# npm 6.x
npm init @vitejs/app kaimo-cost-h5 --template react


60a67103492f43e194031857fadaa52b.png


然后进入项目安装依赖,就可以启动服务了

cd kaimo-cost-h5
npm install
npm run dev


92e49945b3aa41e990c419658df244c0.png


2、添加 react-router-dom 路由


安装依赖

执行下面命令安装依赖

npm i react-router-dom -S

3aefcf845ed4416f9e2a565df4e2ab0f.png


添加页面组件

在项目 src 目录下新增 container 目录用于放置页面组件,再在 container 下新增两个目录分别是 IndexAbout


80c8223c498f4a669dd94b434d73e365.png


About/index.jsx 添加如下内容:

import React from 'react'
export default function Index() {
  return <div>
    kaimo 的 about 页面
  </div>
}


Index/index.jsx 添加如下内容:

import React from 'react'
export default function Index() {
  return <div>
    kaimo 的 index 页面
  </div>
}


添加路由数组

新建 src/router/index.js 配置路由数组,添加如下内容:

import Index from '../container/Index'
import About from '../container/About'
const routes = [
  {
    path: "/",
    component: Index
  },
  {
    path: "/about",
    component: About
  }
];
export default routes


引入路由配置

修改 App.jsx 里的代码,引入路由配置,实现切换浏览器路径,显示相应的组件:

import React from 'react'
import { BrowserRouter, Routes, Route } from 'react-router-dom'
import routes from '../src/router'
function App() {
  return <BrowserRouter>
    <Routes>
      {
        routes.map(route => <Route key={route.path} path={route.path} element={<route.component />}></Route>)
      }
    </Routes>
  </BrowserRouter>
}
export default App


这里记得包裹一层 BrowserRouter,不然会报错 useRoutes() may be used only in the context of a <Router> component.

我们测试一下:

首先我们访问:http://localhost:3000/,没有问题


9dfd6243b390483c8371fbb0055e8a72.png


然后访问:http://localhost:3000/about,也没问题


80dbd5dd67b54196a9a6192fdb907665.png



3、添加 Zarm UI 组件库

安装依赖

npm install zarm -S


fcd3c6969dc54c9fb5af79e0ca326e33.png


使用

Zarm 快速上手


fee789a4835a4e7b9c55da930a9a349a.png

下面我们在 App.jsx 里添加代码:

import React from 'react'
import { BrowserRouter, Routes, Route } from 'react-router-dom'
import { ConfigProvider } from 'zarm';
import zhCN from 'zarm/lib/config-provider/locale/zh_CN';
import 'zarm/dist/zarm.css';
import routes from '../src/router'
function App() {
  return <BrowserRouter>
    <ConfigProvider locale={zhCN}>
      <Routes>
        {
          routes.map(route => <Route key={route.path} path={route.path} element={<route.component />}></Route>)
        }
      </Routes>
    </ConfigProvider>
  </BrowserRouter>
}
export default App


然后在 /container/Index/index.jsx 里添加按钮 Button 组件:

import React from 'react'
import { Button } from 'zarm';
export default function Index() {
  return <div>
    kaimo 的 index 页面
    <h3>
      按钮 Button 基本用法
    </h3>
    <Button>default</Button>
    <Button theme="primary">primary</Button>
  </div>
}


989e0593702746b2b670e3049ebd49a3.png



按需引入

我们执行 npm run build 打包时,发现 css 文件过于太大,有必要进行按需引入。

4b04efcdaacf4f03931a381c9366ad34.png


我们使用插件vite-plugin-style-import:按需导入组件库样式

注意:这里我们用 1.0.1 的版本,我试了一下 2.0.0 的发现报错。


7dd0729f74184ab5af4ba13a04ce5a18.png



npm i vite-plugin-style-import@1.0.1 -D


52014b6685b4483f979028e0240a7906.png


安装好之后,我们修改 vite.config.js

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import styleImport from 'vite-plugin-style-import'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    react(),
    styleImport({
      libs: [
        {
          libraryName: 'zarm',
          esModule: true,
          resolveStyle: (name) => {
            return `zarm/es/${name}/style/css`;
          }
        }
      ]
    })
  ]
})


再修改 App.jsx 里,去掉样式全局引入

import React from 'react'
import { BrowserRouter, Routes, Route } from 'react-router-dom'
import { ConfigProvider } from 'zarm';
import routes from '../src/router'
function App() {
  return <BrowserRouter>
    <ConfigProvider>
      <Routes>
        {
          routes.map(route => <Route key={route.path} path={route.path} element={<route.component />}></Route>)
        }
      </Routes>
    </ConfigProvider>
  </BrowserRouter>
}
export default App


然后我们在打包 npm run build,我们发现 css 打包后的体积少了很多。

5c1c22882a0441beb73945c4e0b6935b.png





目录
相关文章
|
5天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
6天前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
19 4
|
16天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
16天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
25 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
24天前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
62 10
|
23天前
|
资源调度 前端开发 数据可视化
构建高效的数据可视化仪表板:D3.js与React的融合之道
【10月更文挑战第25天】在数据驱动的时代,将复杂的数据集转换为直观、互动式的可视化表示已成为一项至关重要的技能。本文深入探讨了如何结合D3.js的强大可视化功能和React框架的响应式特性来构建高效、动态的数据可视化仪表板。文章首先介绍了D3.js和React的基础知识,然后通过一个实际的项目案例,详细阐述了如何将两者结合使用,并提供了实用的代码示例。无论你是数据科学家、前端开发者还是可视化爱好者,这篇文章都将为你提供宝贵的洞见和实用技能。
48 5
|
21天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
29 1
|
22天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
19 1
|
Web App开发 JavaScript 前端开发
ArcGIS API for JavaScript开发环境搭建及第一个实例demo
        ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3.9,它提供了更为丰富而又强大的功能。
1150 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
97 2