dvajs简明手册

什么是dva.js?

一个elm-style的轻量级的前端数据流应用框架。 基于: React + redux + redux-saga + react-rotuer + fetch。

特点

  • 容易上手,仅6个api
  • elm风格:一个新的概念model,由reducers, effects, subscription 组成
  • 支持HRM
  • 插件系统:如: 使用dva-loading后,可自动处理loading状态

兼容

IE9及以上

版本

根据dvajs的sorrycc的回答:dva@3在计划中,但优先级不高(2019-10的回答)(不知道是否已经开始)

快速上手

安装使用dva-cli

npm install dva-cli -g
dva -v # 0.10.1 【官方现在推荐使用: create-umi】
dva new dva-demo # 创建新项目dva-demo (提示:已经被弃用,推荐使用create-umi)
cd dva-demo 
npm start # 启动开发服务器

初始化的项目包含如下功能:
基本的项目初始化目录及文件,开发服务器、构建脚本、数据 mock 服务、代理服务器等。
dvajs简明手册_第1张图片

dva做了什么?

dva提供的功能都在下面代码中实现的:
dvajs简明手册_第2张图片

dva常用的功能 :

// 新建实例 
//(见:dva/src/index.js dva-core/drc/index.js) 
const app = dva();

// 连接model和ui (见:dva/index.js)
import { connect } from 'dva';

// 插件,如dva-loading等
app.use({});

// model 
app.model(require('./models/example').default)

// router
app.router(require('./router').default);

// 启动应用
// 基于redux的createStore新建了store, 以及用applyMiddleware来处理redux-saga及其他中间件。
app.start('#root');
// app=dva({}) 在dva-core中新建了一个对象
const app = {
// 将reducers和effects添加namespace为前缀
_models: [prefixNamespace({ ...dvaModel })],
_store: null,
_plugin: plugin,
use: plugin.use.bind(plugin),
// 将传入的model用其namespace前缀后,存到_models中
model,
// 启动
start,
};

// 将router存在_router中
app.router = function router(router){
    app._router = router;
};

// app.start()
app.start = function start(container){
   // 处理前面接收到的配置, 然后渲染到container中
   
    if (container) {
      render(container, store, app, app._router);
    }
// 省略...
}

参考

)

你可能感兴趣的:(javascript)