Ant Design Mobile of React

antd-mobileAnt Design 的移动规范的 React 实现,服务于蚂蚁及口碑无线业务。

Ant Design Mobile of React - 图1+Ant Design Mobile of React - 图2

特性和优势

  • UI 样式高度可配置,拓展性更强,轻松适应各类产品风格

  • 基于 React Native 的 iOS / Android / Web 多平台支持,组件丰富、能全面覆盖各类场景

  • 内置 "组件按需加载" / "Web 页面高清显示" / "SVG Icon" 等优化方案,一体式开发

  • 使用 TypeScript 开发,提供类型定义文件,支持类型及属性智能提示,方便业务开发

适用场景

  • 适合于中大型产品应用

  • 适合于基于 react / react-native 的多终端应用

  • 适合不同 UI 风格的高度定制需求的应用

快速上手

在开始之前,推荐先学习 ReactES2015。我们使用了 babel,试试用 ES2015 的写法来提升编码的愉悦感。

确认 Node.js 已经升级到 v4.x 或以上。

1. 创建一个项目

可以是已有项目、或者是新创建的空项目,但更推荐从 官方示例 脚手架里拷贝并修改

参考更多 官方示例集

或者你可以利用 React 生态圈中的 各种脚手架

2. 安装

  1. $ npm install antd-mobile --save
  2. $ npm install babel-plugin-import --save-dev

3. 使用

遇到报错,请先参考 示例脚手架官方示例集

antd-mobile@1.xweb 版的组件文件名以 .web.tsx 结尾,react-native 版本的以 .tsx 结尾,很少一部分的跨平台组件文件名以 .tsx 结尾。 (.tsx文件会被 typescript 编译为.js文件)

Web 使用方式

以下文档都基于 webpack@1.x 版本,如果你使用 webpack@2.x 请查看 #516

  • 安装 webpack 相关 loader 依赖 (必选)
  1. npm i style-loader css-loader less less-loader svg-sprite-loader@0.3.1 --save-dev

antd-mobile@1.x 必须使用 svg-sprite-loader@^0.3.1 , 请看 相关信息

  • 设置 webpack 的 resolve 来自动区分 web & native 组件加载。(必选
  1. resolve: {
  2. modulesDirectories: ['node_modules', path.join(__dirname, '../node_modules')],
  3. extensions: ['', '.web.js', '.js', '.json'],
  4. },
  1. // .babelrc
  2. {"plugins": [["import", { "style": "css", "libraryName": "antd-mobile" }]]}
  3. // or webpack config file
  4. webpackConfig.babel.plugins.push(['import', { libraryName: 'antd-mobile', style: 'css' }]);

如果你想了解为什么需要配置 babel-plugin-import ,请看 按需加载

  • Antd-Mobile 所有图标都是用 svg,需要配置 svg-sprite-loader, 配置方案见 Icon 文档必选

  • 入口页面( html 或 模板)必需高清方案 & polyfill 相关设置:(必选

    • 引入『高清方案』设置:具体方法见 wiki 里 HD wiki

    • 引入 FastClick (关联 #576)

    • 引入 Promise 的 fallback 支持 (部分安卓手机不支持 Promise),示例代码如:

  1. if(!window.Promise) {
  2. document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>');
  3. }
组件使用实例:
  1. // Auto import js and css modularly, parsed by babel-plugin-import
  2. import { Button } from 'antd-mobile';
  3. ReactDOM.render(<Button>Start</Button>, mountNode);

服务端渲染问题:请参考此处

如何自定义主题?见此文档,基于 antd-mobile 的自定义 UI 库:web-custom-ui / web-custom-ui-pro

React-Native 使用方式

注:Table/Menu/NavBar 组件暂无 React Native 版本;

  • .babelrc 文件添加以下配置
  1. {"plugins": [["import", { "libraryName": "antd-mobile" }]]}
组件使用实例:
  1. import React, { Component } from 'react';
  2. import { AppRegistry } from 'react-native';
  3. import { Button } from 'antd-mobile';
  4. class HelloWorldApp extends Component {
  5. render() {
  6. return <Button>Start</Button>;
  7. }
  8. }
  9. AppRegistry.registerComponent('HelloWorldApp', () => HelloWorldApp);

react-native 组件可以通过查看该仓库说明来自定义主题和单个组件样式: custom react-native component style更多常见问题,请查看 wiki pages

版本

  • 稳定版:npm package

  • 开发版:npm package

体积

  • 按需加载:只需引入业务中需要的组件即可,未 import 进来的组件不会打包进来。

  • ./dist/antd-mobile.min.js的文件大小及依赖分析

浏览器支持

  • iOS

  • Android 4.0+

链接

谁在使用

如何贡献

在任何形式的参与前,请先阅读 贡献者文档。有任何建议或意见您可以 Pull Request,给我们 报告 Bug

强烈推荐阅读 《提问的智慧》《如何向开源社区提问题》《如何有效地报告 Bug》,更好的问题更容易获得帮助。

社区互助

如果您在使用的过程中碰到问题,可以通过下面几个途径寻求帮助,同时我们也鼓励资深用户通过下面的途径给新人提供帮助。 通过 Stack Overflow 或者 Segment Fault 提问时,建议加上 antd/antd-mobile 标签。