使用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 的欢迎界面。

使用 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 },

],

},

},

};

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

构建应用#

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

$ 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/ 目录下找到这些文件。

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

  1. umi+antd+dva项目搭建

    记录项目搭建的大致流程,详细的可以查看 Ant Design 实战教程(beta 版),或者Umi文档及Dva文档 1. 项目初始化 全局安装umi yarn global add umi 新建项目文 ...

  2. 浅析dva (史上最全的dva用法及分析)

    什么是dva dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量 ...

  3. dva是什么游戏_守望dva下载_守望dva大全_手游排行榜_网游/单机游戏_九游

    [详情] ◇ The D.VA Pong é um jogo retro do Pong numa versão atualizada e individual com o contexto da p ...

  4. Umi + AntD Pro 项目搭建

    一.Umi 介绍 umi 是可扩展的企业级前端应用框架,Umi 以路由为基础的,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进行功能扩展. create-react-app 对比: cr ...

  5. cli dll打包 vue_vue-cli3使用 DllPlugin 实现预编译提升构建速度

    vue-cli3使用 DllPlugin 实现预编译提升构建速度 发布时间:2020-08-29 11:24:27 来源:脚本之家 阅读:93 在项目打包上有两个目标:减少打包代码体积和加快打包速度 ...

  6. webpack打包优化_提速MAX 京东通天塔WEBPACK构建发布优化实践

    通天塔作为运营.商家搭建营销活动页的主力系统,数年来一直致力于提供用户更丰富.更强大的搭建体验.通天塔可视化CMS(简称可视化)作为直面商家运营搭建的第一层,在系统能力越来越强大的同时,自身的代码量. ...

  7. svn增量打包部署_实现Jenkins+svn+bat批处理构建svn版本差异增量的自动化打zip包

    最近进到的公司,因为我之前做过自动化测试,所以要求我写一个从svn上面的各个目录拉取需要的代码,集合在一起打zip包.想了想,觉得用批处理+Jenkins持续集成工具来操作应该是可行的,于是就开始着手 ...

  8. React + umi +antd+antv/g6 实现力图

    官方示例效果:http://antv.alipay.com/zh-cn/g6/2.x/demo/net/2017-link-data.html 改编效果: 实现步骤: 环境:nodejs.yarn/n ...

  9. dva 中的响应编程

    思维盲区 我最开始学习使用 dva 是从<12 步 30 分钟,完成用户管理的 CURD 应用>开始的,这同时也是 dva 的官方教程.然而因为领悟能力太差,最开始完全没理解.前 4 步还 ...

最新文章

  1. 前端不哭!最新优化性能经验分享来啦 | 技术头条
  2. java调用天气预报api_java调用中国天气网api获得天气预报信息
  3. nutch-site参数配置
  4. 【渝粤教育】广东开放大学 标准化理论与方法 形成性考核 (53)
  5. 中间件静态文件服务器,从koa-static中间件学习搭建静态文件服务器
  6. Linux服务跟随启动,关于linux服务启动与自启动
  7. 微信群突然冒出“免费教画画”的女大学生,套路太深,千万别上当!
  8. Python+Webdriver实现淘宝、京东等抢单操作
  9. 唯品会顺丰快递面单模板_快递模板
  10. STM32CUBEIDE使用说明
  11. HP246 G6 笔记本升级
  12. 论文学习记录20200306:时序数据聚合[NDSS2011]
  13. 集成讯飞离线语音合成SDK报:“ 未经授权的语音应用.(错误码:11210)“ 问题解决
  14. Py之pyod:pyod的简介、安装、使用方法之详细攻略
  15. 网络监控系统安装的六种传输方式
  16. 短视频的特点和分类——今抖云创
  17. 高端游戏开发工具:Unity Pro 2019 Mac版
  18. openstack(pike) dvr 中南北数据流向分析
  19. java 删除oss 文件
  20. 尽情发挥你的创意吧Powder Game

热门文章

  1. React Native开发之必备React基础
  2. Java开发中业务层入参校验详细解析
  3. 百度,一面,二面知识点
  4. shiro之AuthenticationStrategy
  5. CSS实现鼠标移入图片边框有小三角
  6. zentao双机(数据库备份)
  7. 《从零开始学Swift》学习笔记(Day 7)——Swift 2.0中的print函数几种重载形式
  8. JQuery执行DOM批量克隆并插入的提效方法
  9. linux内核中send与recv函数详解
  10. virtualbox不能识别u盘等移动设备