1. 原生
2. 多端转换框架(uniapp、Taro)
总体目录
pages目录
目录
注意:uniapp修改单页面配置与原生、taro不同 需在pages.json中修改
Taro 项目基于 node,请确保已具备较新的 node 环境(>=12.0.0),推荐使用nvm来切换管理node版本
1.首先,你需要使用 npm 或者 yarn 全局安装 @tarojs/cli,或者直接使用 npx:
# 使用 npm 安装 CLI
npm install -g @tarojs/cli
# OR 使用 yarn 安装 CLI
yarn global add @tarojs/cli
# OR 安装了 cnpm,使用 cnpm 安装 CLI
cnpm install -g @tarojs/cli
taro init myApp
├── dist 编译结果目录
|
├── config 项目编译配置目录
| ├── index.js 默认配置
| ├── dev.js 开发环境配置
| └── prod.js 生产环境配置
|
├── src 源码目录
| ├── pages 页面文件目录
| | └── index index 页面目录
| | ├── index.js index 页面逻辑
| | ├── index.css index 页面样式
| | └── index.config.js index 页面配置
| |
| ├── app.js 项目入口文件
| ├── app.css 项目总通用样式
| └── app.config.js 项目入口配置
|
├── project.config.json 微信小程序项目配置 project.config.json
├── project.tt.json 字节跳动小程序项目配置 project.tt.json
├── project.swan.json 百度小程序项目配置 project.swan.json
├── project.qq.json QQ 小程序项目配置 project.qq.json
|
├── babel.config.js Babel 配置
├── tsconfig.json TypeScript 配置
├── .eslintrc ESLint 配置
|
└── package.json
在app.json文件的window属性中配置,pages中配置页面路径(默认展示第一项)
在pages.json文件的globalStyle属性中配置,pages中配置页面路径(默认展示第一项)
在app.config.ts文件的window属性中配置,pages中配置页面路径(默认展示第一项)
全局配置文件及常用配置项目
配置属性
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
navigationBarTitleText | string | 字符串 | 导航栏标题文字内容 |
navigationBarBackgroundColor | string | 字符串 | 导航栏背景颜色,如#000000 |
navigationBarTextStyle | string | 字符串 | 导航栏标题颜色,仅支持black/white |
backgroundColor | string | 字符串 | 窗口的背景色 |
backgroundTextStyle | string | 字符串 | 下拉loading的样式,仅支持dark/light |
enablePullDownRefresh | string | 字符串 | 是否全局开启下拉刷新 |
onReachBottomDistance | string | 字符串 | 页面上拉触底事件触发时距页面底部距离,单位px |
点我查看更多配置项
三者使用几乎相同,只是调用对象不同
需要注意的是,某些小程序api更新,与其他平台有差异,具体使用详见官方文档。
举例:路由跳转navigateTo,传参在url后拼接
Taro.navigateTo({url:"/pages/index/index?type=1")
uni.navigateTo({url:''})
wx.navigateTo({url:''})
像一些登录,上传文件等api的使用也相差无几,具体使用详见官网。
Taro.login()
uni.login()
wx.login()
注意: 在小程序获取用户头像时wx.getUserProfile,通过插件获取头像wx.getUserInfo均已失效,会返回灰色头像,昵称会返回"微信用户"。要获取微信头像可以使用微信"头像昵称填写",可以选择使用微信头像或自定义上传。
Taro官网
uniapp官网
wx官网
以使用地图选择为例:
"plugins": {
"wx-chooseLocation": {
"version": "1.0.0",
"provider": "wx3153655fd3ea84fd"
}
}
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序定位"
}
}
const getlocation = () => {
let plugin;
try {
// eslint-disable-next-line no-undef
plugin = requirePlugin("wx-chooseLocation");
} catch (error) {
console.error(error);
}
plugin &&
plugin
.getChooseLocation()
.then((res) => {
console.log("res", res);
})
.catch((e) => {});
};
getlocation();
// 返回值
{
address: "山东省济南市历下区奥盛大厦"
errMsg: "chooseLocation:ok"
latitude: 36.675733
longitude: 117.137308
name: "奥盛大厦1号楼"
}
const name = ref('')
const inputChange = (e)=>{
name.value = e.detail
}
如果给对象的属性赋值,可以使用this.setData({‘obj.key’:value})来赋值,但是如果给某个属性名是变量的属性赋值,通过这种方法是会报错的,经过多次尝试,发现使用如下的方式赋值成功。
let newObj = `obj.${key}`
this.setData({
[newObj]: value
})
小程序中标签及方法改变
div ——> view
span ——> text
@click ——> @tap
注意: 在使用某些组件库中的组件时,点击方法仍然是click
更多小程序事件
获取项目版本号
开发版体验版不支持获取版本号,只支持正式版获取
Taro.getAccountInfoSync().miniProgram.version // 体验版获取版本号为空
3.登录微信公众平台,提交版本审核,审核成功可部署线上版本