内置模块
为了解决版本依赖以及常用包统一的问题,smallfish 除了各项功能暴露的 API 外,smallfish 还内置维护了 React,antd,dva 等库。由 smallfish 来维护各个库的版本升级,通过 smallfish 内部的维护来抹去这些第三方库可能造成的兼容性问题,可直接使用。
你也可以通过 yarn add [modulename] --save
(npm install [modulename] --save
) 来引入外部依赖,为了增强项目的可维护性,如无必要请谨慎选择引入外部依赖。如果你觉得某个外部的库比较不错,也可以推荐给我们,如果可以,我们可以把其加入到内置库中。
所有的内置模块前缀都为 smallfish。
React & ReactDom
import React, { useState } from 'smallfish/react';
import ReactDom from 'smallfish/react-dom';
更多 React 基本原理和组件化介绍可以参考 认识 React。
antd
Ant Design 是一个致力于提升『用户』和『设计者』使用体验的中后台设计语言,利用统一的设计规范、前端实现、设计/研发工具链对产品研发赋能,全面提高中后台产品体验和研发效率,其采用 React 封装了一套 Ant Design 的组件库。
在 smallfish 应用中可以通过以下方式快速接入:
import { Button } from 'smallfish/antd';
antd pro
Ant Design Pro 是一个企业级中后台前端/设计解决方案,秉承 Ant Design 的设计价值观,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。
在 smallfish 应用中可以通过以下方式快速接入:
// config/config.js
{
antdpro: true,
}
import { PageHeader } from 'smallfish/ant-design-pro';
路由相关 router
在 smallfish 中为方便使用,我们将路由相关的都抽象到了 smallfish/router
中:
import {
router,
history,
Link,
NavLink,
Prompt,
Redirect,
Route,
withRouter,
} from 'smallfish/router';
如果你想深入了解,更多关于 router 的参看:react-router
网络请求 request
在网络请求这一层,我们底层使用了优秀的 axios,可以处理网络方面的所有配置。
import request from 'smallfish/request';
如果你想看一个真实的项目 request 封装实例,参看:如何处理网络请求
dva
dva 是基于现有应用架构 (redux + react-router + redux-saga 等)的一层轻量封装。dva 解决的问题是当前 react 技术栈概念太多,并且 reducer, saga, action 都是分离的(分文件)等问题,具体参考 dva 介绍。
在 smallfish 应用中可以通过以下方式快速接入 dva:
// config/config.js
{
dva: true,
}
开启 dva 后,可以 model 目录将会生效,自动加载 dva model,并且可以使用 dva 方法:
import { connect } from 'smallfish/dva';
styled
styled-components 是一个常用的 css in js 类库。通过 js 赋能解决了原生 css 所不具备的能力,比如变量、循环、函数等。
在 smallfish 应用中可以通过以下方式快速接入 styled:
// config/config.js
{
styled: true,
}
import styled from 'smallfish/styled';
const WhiteDiv = styled.div`
color: #fff;
`;
Util
smallfish/utils 类库里面集合了常用的工具型类包,解决了选择困难症。
- classnames:处理多个 classname 的利器
- js-cookie:处理 cookie
- debug:更好的控制台 log 输出
- moment:强大的时间处理库
- prop-types:React 的类型验证
- query-string:处理 url 参数
- react-document-title:设置 React 页面标题
- lodash:丰富的 javascript 工具套件
- uuid:好用的 UUIDS 生成器
在 smallfish 应用中可以这样使用:
import 'smallfish/util/moment/locale/zh-cn';
import moment from 'smallfish/util/moment';
import uuid from 'smallfish/util/uuid/v4';
import cookie from 'smallfish/util/js-cookie';
import propTypes from 'smallfish/util/prop-types';
import queryString from 'smallfish/util/query-string';
import array from 'smallfish/util/lodash';