dva 打包多个html,使用dva+umi+antd构建页面(一)

2023-10-27

使用dva+umi+antd构建页面

首先确保安装npm或者yarnhtml

建立新应用

首先建立应用目录node

mkdir myapp && cd myapp

推荐使用 yarn 建立应用,执行如下命令,react

若是你坚持用 npm,可执行 npm install -g create-umi && create-umi,效果一致。webpack

$ yarn create umi

yarn create v1.12.0

[1/4] ? Resolving packages...

[2/4] ? Fetching packages...

[3/4] ? Linking dependencies...

[4/4] ? Building fresh packages...

success Installed "create-umi@0.9.5" with binaries:

- create-umi

yarn 会先安装最新版的 create-umi,而后提供交互式的提示来建立应用。git

选择 app, 而后回车确认。github

? Select the boilerplate type

ant-design-pro - Create project with an layout-only ant-design-pro boilerplate, use together with umi block.

❯ app - Create project with a simple boilerplate, support typescript.

block - Create a umi block.

library - Create a library with umi.

plugin - Create a umi plugin.

选上 antd 和 dva,而后回车确认。web

create package.json

create mock/.gitkeep

create src/assets/yay.jpg

create src/layouts/index.css

create src/layouts/index.js

create src/pages/index.css

create src/pages/index.js

create src/global.css

create .gitignore

create .editorconfig

create .env

create .umirc.js

create .eslintrc

create .prettierrc

create .prettierignore

create src/models/.gitkeep

create src/dva.js

✨ File Generate Done

✨ Done in 966.73s.

而后安装依赖,typescript

$ yarn

而后启动应用,shell

$ yarn start

几秒钟后,你会看到如下输出,

DONE Compiled successfully in 212ms

App running at:

- Local: http://localhost:8000/

- Network: http://{{ YourIP }}:8000/

在浏览器里打开 http://localhost:8000,你会看到 umi 的欢迎界面。

949e09b4ce21104f7beb1a090b1fe73d.png

使用 antd#

前面选择 antd 以后,会自动处理 antd 的依赖以及按需加载。你能够检查 .umirc.js 里的配置,确保 antd 已开启。

// ref: https://umijs.org/config/

export default {

plugins: [

// ref: https://umijs.org/plugin/umi-plugin-react.html

['umi-plugin-react', {

antd: true,

dva: true,

}],

],

}

而若是要使用固定版本的 antd,你能够在项目里安装额外的 antd 依赖,package.json 里声明的 antd 依赖会被优先使用。

新建路由#

咱们要写个应用来先显示产品列表。首先第一步是建立路由,路由能够想象成是组成应用的不一样页面。

若是你没有 npx,须要先安装他,用于执行 node_modules 下的命令,

$ yarn global add npx

而后经过命令建立 /products 路由,

$ npx umi g page products

create src/pages/products.js

create src/pages/products.css

✔ success

编写 UI Component#

随着应用的发展,你会须要在多个页面分享 UI 元素 (或在一个页面使用屡次),在 umi 里你能够把这部分抽成 component 。

咱们来编写一个 ProductList component,这样就能在不一样的地方显示产品列表了。

新建 src/components/ProductList.js 文件:

import { Table, Popconfirm, Button } from 'antd';

const ProductList = ({ onDelete, products }) => {

const columns = [{

title: 'Name',

dataIndex: 'name',

}, {

title: 'Actions',

render: (text, record) => {

return (

onDelete(record.id)}>

Delete

);

},

}];

return (

dataSource={products}

columns={columns}

/>

);

};

export default ProductList;

定义 dva Model#

完成 UI 后,如今开始处理数据和逻辑。

dva 经过 model 的概念把一个领域的模型管理起来,包含同步更新 state 的 reducers,处理异步逻辑的 effects,订阅数据源的 subscriptions 。

新建 model src/models/products.js,

export default {

namespace: 'products',

state: [],

reducers: {

'delete'(state, { payload: id }) {

return state.filter(item => item.id !== id);

},

},

};

这个 model 里:

namespace 表示在全局 state 上的 key

state 是初始值,在这里是空数组

reducers 等同于 redux 里的 reducer,接收 action,同步更新 state

umi 里约定 src/models 下的 model 会被自动注入,你无需手动注入。

connect 起来#

到这里,咱们已经单独完成了 model 和 component,那么他们如何串联起来呢?

dva 提供了 connect 方法。若是你熟悉 redux,这个 connect 来自 react-redux。

编辑 src/pages/products.js,替换为如下内容:

import { connect } from 'dva';

import ProductList from '../components/ProductList';

const Products = ({ dispatch, products }) => {

function handleDelete(id) {

dispatch({

type: 'products/delete',

payload: id,

});

}

return (

List of Products

);

};

export default connect(({ products }) => ({

products,

}))(Products);

最后,咱们还须要一些初始数据让这个应用 run 起来。编辑 src/app.js:

export const dva = {

config: {

onError(err) {

err.preventDefault();

console.error(err.message);

},

initialState: {

products: [

{ name: 'dva', id: 1 },

{ name: 'antd', id: 2 },

],

},

},

};

刷新浏览器,应该能看到如下效果:

623ed7915df22657193fdd17e1414d9c.png

构建应用#

完成开发而且在开发环境验证以后,就须要部署给咱们的用户了。先执行下面的命令,

$ npm run build

几秒后,输出应该以下:

> @ build /private/tmp/sorrycc-V0lLrF

> umi build

[5:01:58 PM] webpack compiled in 11s 615ms

DONE Compiled successfully in 11622ms 5:01:58 PM

File sizes after gzip:

340.44 KB dist/umi.js

17.82 KB dist/umi.css

build 命令会打包全部的资源,包含 JavaScript, CSS, web fonts, images, html 等。你能够在 dist/ 目录下找到这些文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dva 打包多个html,使用dva+umi+antd构建页面(一) 的相关文章

  • 关于STM32 DSP库#include “arm_math.h“报错的解决方法

    在pack install 中下载5 4 0的ARM CMSIS 包 找到对应安装路径 魔术棒中包含路径C C 导入5 4 0的包 E ARM PACK ARM CMSIS 5 4 0 CMSIS DSP Include
  • 二叉查找树详解——带详细图解

    1 二叉查找树的性质与规则 若一个结点的左子树不为空 则它左子树上所有的结点都小于该结点 若一个结点的右子树的不为空 则它右子树上所有的结点都大于该结点 2 二叉查找树的创建 a 二叉查找树的结点类 public class Node pu
  • Python数据处理 Excel 表

    Excel 表特征结构 对象 简述 对应于Python处理方式 方法 简述 对应于Python处理方式 属性 简述 对应于Python处理方式 常数和宏 简述 对应 Python处理方式 示例 简述 使用 Python处理上述特征 自动化
  • Docker安装MinIO详细步骤

    目录 1 中文官网 2 服务器配置 3 docker创建并启动minIO容器 4 查询容器日志 5 访问 1 中文官网 http minio org cn 2 服务器配置 安装ntpdate工具 yum y install ntp ntpd
  • C++ 机房预约系统(四):管理员模块——管理员登录和注销、添加账号功能、重复添加检测的具体实现

    7 管理员模块 学生 老师 管理员这三个身份类中 首先实现管理员模块 因为管理员可以添加账号 添加新的学生 老师账号 在上一篇中已经实现了管理员的登录验证功能 但是管理员的子菜单还没有显示 接下来继续完善管理员的其他功能 7 1 管理员登录
  • JavaWeb项目修改网页标签栏的图标

    第一种方式是在每一个页面中都添加配置 可以一用本地的ico图片 也可以引用互联网上的ico ico的名称为favicon ico href可以填本地引用 也可以引用互联网上的资源 第二种是在Tomcat中配置 在tomcat的webapps
  • ARM三级流水线

    ARM处理器三级流水操作 PC寄存器 ARM处理器3级流水线 取指 gt 译码 gt 执行 这3级流水线循环执行 在R15 PC 中 我们一般以正在执行的指令作为参考点 在执行当前指令的同时也对第二条指令译码 第三条指令在取指 实际来说PC
  • 深度学习论文笔记(增量学习)——Large Scale Incremental Learning

    文章目录 前言 主要工作 算法介绍 总体流程 步骤一 训练CNN模型 loss函数介绍 阶段二 训练偏置纠正层 实验 分类器是否出现分类偏好 猜测 实验 引入Bias Correction Layer 实验 Ablation Study 前
  • HIVE 分组排序查询

    笔者在参加面试时遇到的一个关于hive数据库查询的的问题题意大概是这个样子的 有如下图结构的一个表 表中的数据是长这个样子的 面试官要求我查询的结果是长这个样子的 我第一印象觉得这个题还蛮简单的 就写了一个 select col1 col2
  • 运输层---概述

    目录 运输层主要内容 一 概述和传输层服务 1 1 概述 1 2 传输服务和协议 1 3 传输层 vs 网络层 1 4 Internet传输层协议 二 多路复用与多路分解 解复用 2 1 概述 2 2 无连接与面向连接的多路分解 解复用 2
  • 关于以太网没有有效的ip配置问题解决方法

    目录 错误提示 解决方法 一 检查IP地址是否为自动获取 二 重置网络环境 三 卸载以太网模块 重启电脑自动重新安装新的模块 四 重启网卡驱动程序 五 检查外部设备 错误提示 解决方法 一 检查IP地址是否为自动获取 1 首先右键任务栏右下
  • Vue.js 如何进行打包部署

    Vue js 中的打包部署 Vue js 是一款流行的前端框架 它提供了一种简单 灵活的方式来构建用户界面 在开发完成后 需要对 Vue js 应用程序进行打包部署 以便在生产环境中使用 本文将介绍 Vue js 中的打包部署以及如何进行打
  • C++11标准库(STL)使用总结

    STL定义了强大的 基于模板的 可复用的组件 实现了许多通用的数据结构及处理这些数据结构的算法 其中包含三个关键组件 容器 container 流行的模板数据结构 迭代器 iterator 和算法 algorithm 组件 描述 容器 容器
  • 初始操作系统(Operation System)

    目录 操作系统的概念和功能 操作系统的四大特征 操作系统给发展过程 操作系统的运行机制 操作系统的概念和功能 操作系统这个词语对我们既熟悉又陌生 生活中会接触到 但具体的实现我么不从得知 生活中直接接触的操作系统有 windows linu
  • hadoop 常用缺少包错误

    package wc import java io IOException import java util StringTokenizer import org apache hadoop conf Configuration impor
  • 说说你对 Object.defineProperty 的理解?

    说说你对 Object defineProperty 的理解 什么是 为什么能实现响应式 小结 什么是 Object defineProperty 方法会直接在一个对象上定义一个新属性 或者修改一个对象的现有属性 并返回此对象 为什么能实现
  • printf输出%f %lld区别

    https blog csdn net u011497904 article details 42454483 utm source blogxgwz2
  • shell中的for循环示例

    1 利用for循环打印 示例代码 bin bash for i 0 i lt 3 i do for j 0 j lt 5 j 每行打印5个 打印三行 do echo n done echo done 2 利用for循环计算1到100的和 示
  • python读取xlsx格式的excle

    python读取excle的xlsx和xls格式代码略有不同 import pandas as pd from pandas import DataFrame if name main 读取excle表中的数据 file path r D

随机推荐

  • 【华为OD机试】数字反转打印【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 小华是个很有对数字很敏感的小朋友 他觉得数字的不同排列方式有特殊美感 某天 小华突发奇想 如果数字多行排列 第一行1个数 第二行2个 第三行3个 即第n行有n个数字
  • Java高级开发必知必会——反射

    title Java高级开发必知必会 反射 author rocklei123 tags Java 反射 categories Java date 2018 09 16 08 20 57 1 目标与意义 反射是Java开发中一个非常重要的概
  • Linux 之 shell 比较运算符

    运算符 描述 示例 文件比较运算符 e filename 如果 filename 存在 则为真 e var log syslog d filename 如果 filename 为目录 则为真 d tmp mydir f filename 如
  • 日期子组件

    日期子组件 如图
  • MySQL忘记密码的处理方法(MySQL重置密码)

    1 关闭正在运行的MySQL服务 在任务管理器中找到MySQL对应的服务 然后将其停止 2 打开CMD命令行窗口 转到mysql bin目录 3 输入mysqld skip grant tables 回车 mysqld skip grant
  • 《Collaborative Filtering for Implicit...》论文阅读

    论文题目 Collaborative Filtering for Implicit Feedback Datasets 链接 link 1 Introduction 随着电商的快速发展 为用户提供商品的排序很重要 推荐系统就是为用户提供符合
  • Spring Cloud微服务:Loadbalancer 实战

    nacos维护一个列表 但是我们请求服务不可能一个服务所有的都请求一遍 比如我做一笔转账 我找到其中一个做一次转账就够了 而不是看到有多个转账服务 都去转一次 那这个就需要 选择 选择这个靠谁来做呢 其实就是客户端负载均衡组件 Spring
  • git命令添加多个仓库,同步各分支代码,删除仓库、分支

    某些开发场景中 可能会遇到一套代码提交到2套git仓库 此时如何添加一个新仓库呢 假设已有仓库origin 想行添加一个仓库地址 命名为origin test与原仓库区分 1 查看现有仓库名及仓库地址 git remote v 2 添加新远
  • Pandsa时间序列采样频率滑窗及重采样

    目录 Pandas时间序列采样频率滑窗 1 滑窗函数rolling 获取近7天的销售总量 2 shift 及 diff 重采样 resample pandas时间戳及时间差 pandas日期处理DT对象 Pandas时间序列采样频率滑窗 1
  • 提高「程序员」的思维方式

    大家好 我是Tom哥 人和动物的最大区别就是 人具有思维能力 能将大脑里的东西实现出来 而动物则更多停留在模仿阶段 如 鹦鹉学舌 当然 这也是一种进化能力 这里着重提到了思维能力 人与人的思维能力也是有差异的 比如 一线程序员关心的这个项目
  • Oracle RAC failover 测试(连接时故障转移)

    Oracle RAC 集群最突出的表现就是高可用性 这些内容主要包括load balance以及failover 通过这些技术使得单点故障不影响客户端端应用程序对数据库的正常访问 以及通过创建service实现节点间负载均衡 本文主要描述O
  • Node.js 安装第三方模块

    所有的第三方模块包 下载安装的模块 使用的方式都是一样的 此文件以uuid举例 NPM的全称是Node Package Manager 是node的包管理器 是全球最大的开源生态系统 作用就是管理模块包 node模块包可以理解为工具 插件
  • Git常用命令cherry-pick

    Git常用命令cherry pick 将指定的提交应用于其他分支 可以用于恢复不小心撤销 revert reset 的提交 对于多分支的代码库 将代码从一个分支转移到另一个分支是常见需求 这时分两种情况 一种情况是 你需要另一个分支的所有代
  • 【知识点】Java的值传递——为什么对象在函数里修改了,返回后未修改

    问题背景 今天做题 遇到一个代码判断题 结果一直做错 题目如下 public class Point private int x private int y public Point int x int y this x x this y
  • 轻松易懂,一文告诉你什么是http协议?

    阅读本文之前 请详细阅读以下几篇文章 一文包你学会网络数据抓包 教你如何抓取网络中的数据包 黑客必备技能 一 什么是http Http协议即超文本传送协议 HTTP Hypertext transfer protocol 它定义了浏览器 即
  • matlab 10为底指数,matlab指数函数

    手机评站网今天精心准备的是 matlab指数函数 下面是详解 用matlab求指数函数 刚学这课不会经建模得y与t的关系为y a b exp c t 试确定a b c已知x 0 0 1 1 y 2 997 2 480 2 101 1 815
  • Android实现沉浸式状态栏实现在项目中的使用

    不得不说 Android实现沉浸式状态栏确实是一个不深不浅的坑 懂门路的人几分钟就能解决掉 不懂门路的人 网上找资料查资源估计也要个一两天 当然了 我也是苦于其中 不过到最后还是找出来了 ImmersionBar 一个star数超过5K的三
  • java实现xml文件读取和写入

    import java io File import java io FileInputStream import java io FileOutputStream import java io InputStream import jav
  • java中为什么MAX_ARRAY_SIZE的值为Integer.MAX_VALUE - 8

    数组对象的形状和结构 如int值数组 与标准Java对象类似 主要区别在于数组对象有一个额外的元数据 用于表示数组的大小 数组的最大尺寸为2 31 2147483648 但是需要8bytes的存储大小表示数组的长度等元数据 所以数组的大小定
  • dva 打包多个html,使用dva+umi+antd构建页面(一)

    使用dva umi antd构建页面 首先确保安装npm或者yarnhtml 建立新应用 首先建立应用目录node mkdir myapp cd myapp 推荐使用 yarn 建立应用 执行如下命令 react 若是你坚持用 npm 可执