基于taro+dva构建小程序开发环境

小程序开发


浏览:918 次

芋头简介

Taro是一个遵循React语法规范的多终端统一开发解决方案。

官方网站:

如今,有各种形式的高端市场。Web、React Native、微信小程序等终端很受欢迎。当业务需求同时在不同端表达时,为不同端编写多组代码的成本显然非常高。此时,只编写一组代码以适应多个目的的能力是非常必要的。

有了Taro,我们只能编写一组代码,然后通过Taro的编译工具单独编译源代码,该工具可以在不同端运行(微信/百度/支付宝/字节跳动/QQ/JD小程序、快的app、H5、React Native等)。

DvaJS简介

DvaJS首先是基于redux和redux传奇的数据流方案。为了简化开发体验,dva还内置了react router和fetch,因此也可以理解为轻量级app框架。

构建小程序开发环境

1、 安装Taro

Taro项目基于节点。请确保您有更新的节点环境(>=8.0.0)。

首先,您需要使用npm或yarn在全局安装@tarojs/cli

#使用npm安装CLI

npm安装-g@tarojs/cli

#OR使用yarn安装CLI

yarn全局添加@tarojs/cli

#OR安装cnpm,并使用cnpm安装CLI

cnpm安装-g@tarojs/cli

#安装taro时可能遇到的问题

-当查看带有taro的版本号——Windows平台安装后的版本时,发现有旧版本的taro

1.在系统C:Users{Users}AppData Roaming npm node_Modules中查找节点全局模块目录删除tarojs目录

2.Npm缓存清理-f清除缓存

3.使用安装命令重新安装

#初始化项目

Taro init项目名称

2、 安装redux

cnpm安装--保存redux@tarojs/redux@tarojs/redux-h5 redux-thunk redux记录器

3、 安装dva

cnpm安装--保存dva核心dva加载

#安装dva时遇到的问题

-peerDependencies WARNING dva loading@需要一个dva核心的对等方@^1.1.0|^1.5.0-0|^1.6.0-0但是dva-core@2.0.2已安装*

原因是包json中某些依赖包的版本和节点js版本兼容性问题的解决方案是在错误消息中提到的依赖包前面添加^,然后安装cnpm

这里,json中的包{“dva-core”:“^2.0.2”}被修改为{“dva-core”:““^1.6.0-0”},然后执行cnpm安装

4、 配置dva

从“dva-core”导入{create};

从“redux logger”导入{createLogger};

从“dva加载”导入createLoading;

letapp

出租仓库

出租调度

出租登记的

函数createApp(opt){

//重做日志

选择onAction=[创建日志()]

app=创建(选择)

app.use(createLoading({}))

如果(!registered)opt.models。forEach(模型=>app.model(模型))

registered=真

app.start()

商店=app百货商店

app。getStore=()=>存储

app使用({

onError(错误){

console.log(错误)

},

})

dispatch=存储.dispatch

app。dispatch=调度

返回app

}

导出默认值{

创建app,

获取调度(){

返回app.dispatch

}

}

5、 配置app模型:/src/models/register Ts,所有页面模型都需要在此处注册

从“./order”导入订单

从“./product”导入产品

从“./user”导入用户

导出默认值[

顺序

产品

使用者

]

6、 在/src/app tsx条目文件引入了dva,componentDidMount()函数中的配置仅供参考

从“@tarojs/Taro”导入Taro,{Component,Config}

从“./pages/Index/Index”导入索引

导入“@tarojs/async await”;

从“@tarojs/redux”导入{Provider};

从“./utils/dva”导入dva

从“../../register”导入模型;

从“../config/appsettings”导入{globalData};

导入“./app.less”

//如果需要在h5环境中启用React Devtools

//取消对以下内容的注释:

//如果(process.env.NODE_env!==“生产”&&process.ev.TARO_env==“h5”){

//require(“服务开发工具”)

// }

const dvaApp=dva.createApp({

initialState:{},

模型:模型,

});

常量存储=dvaApp。获取存储();//GetStore是一个函数!!!执行!!!

类app扩展组件{

配置:配置={

页码:[

'页面/索引/索引'

],

窗口:{

背景T