多端统一开发解决方案---Taro

news2024/11/15 12:21:16

Taro 一套代码,多端运行,释放双手的摸鱼神器

在这里插入图片描述

文章目录

    • Taro 一套代码,多端运行,释放双手的摸鱼神器
    • 1. 简介
    • 2. 准备工作
      • 2.1 安装及使用
        • 2.1.1 开发者工具
        • 2.1.2 tarojs
          • 2.1安装tarojs工具
    • 3. Taro 使用
    • 4.限制
    • 5.路由跳转汇总
    • 6.注意事项
    • 7.分享
    • 8.Taro 的原理
      • 1.抹平多端差异
    • 9 . 上线流程
    • 10.开发过程中遇到的问题

Taro 多端统一开发解决方案。一套代码,多端运行,成本低、效率高,意想不到的丝滑。

1. 简介

Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发 微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ 小程序 / H5 / RN 等应用

现如今市面上端的形态多种多样,针对不同的端去编写多套代码的成本显然非常高,只编写一套代码就能够适配到多端的能力就显得极为需要。

2. 准备工作

  • 注册小程序(公司账号管理者),管理=>成员管理模块添加开发者微信号;
  • 获取appid :开发=>开发管理=>开发设置模块获取appid,appSecret
  • 服务器域名:开发=>开发管理=>开发设置下面的服务器域名配置对应的(域名只支持 https (wx.request、wx.uploadFile、wx.downloadFile) 和 wss (wx.connectSocket) 协议)

2.1 安装及使用

(node环境>=12.0.0)

2.1.1 开发者工具

工具介绍-> https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly.html

注:使用的是wechat_devtools_1.05.2107090_x64.exe,调试器空白,改用wechat_devtools_1.05.2108052_x64.exe

2.1.2 tarojs

2.1安装tarojs工具
1.`npm install -g @tarojs/cli `    

2. 初始化(使用命令模板创建项目)  

	`taro init myApp` 

3. 编译运行:

	`npm run dev:weapp`

	`npm run build:weapp`

注:使用Taro 的build命令可以把Taro代码编译成不同端的代码,然后在对应的开发工具中查看效果

4.打开微信开发者工具,选择项目根目录打开

3. Taro 使用

1.目录结构:

├── 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.config.json
|
├── babel.config.js             Babel 配置
├── tsconfig.json               TypeScript 配置
├── .eslintrc                   ESLint 配置
|
└── package.json

在这里插入图片描述

在这里插入图片描述

注:tabBar图标:背景透明,而且icon要小于81*81

4.限制

1.由于小程序不支持动态引入,因此小程序中无法使用 React.lazy API

2.不能在页面组件的 DOM 树之外插入元素,因此不支持

3.所有组件的 id 必须在整个应用中保持唯一(即使他们在不同的页面),否则可能导致事件不触发的问题

5.路由跳转汇总

1.Taro.reLaunch关闭所有页面,打开到应用内的某个页面

2.Taro.switchTab 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

3.Taro.redirectTo关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面

4.Taro.navigateTo保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 Taro.navigateBack 可以返回到原页面。小程序中页面栈最多十层

5.Taro.navigateBack关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层

6.注意事项

1.微信小程序开发工具的配置:
在这里插入图片描述

2.尽量使用Taro组件库的标签。虽然可以通过插件,使用html标签,但是在不同端可能会出现一起奇怪的问题;

7.分享

1.转发onShareAppMessage(Object object):监听用户点击页面内转发按钮(button 组件 open-type="share")或右上角菜单“转发”按钮的行为,并自定义转发内容。

注意:只有定义了此事件处理函数,右上角菜单才会显示转发按钮

2.分享到朋友圈onShareTimeline():监听右上角菜单“分享到朋友圈”按钮的行为,并自定义分享内容

注意:只有定义了此事件处理函数,右上角菜单才会显示分享到朋友圈按钮

8.Taro 的原理

在 Taro 中采用的是编译原理的思想,所谓编译原理,就是一个对输入的源代码进行语法分析,语法树构建,随后对语法树进行转换操作再解析生成目标代码的过程。
在这里插入图片描述

词法分析:JS代码运行前,有一个类似编译的过程即词法分析,词法分析主要有3个步骤:分析函数参数、分析变量声明、分析函数声明

语法分析:会将上一步的词法单元集合分析并最终转换为一个由元素逐级嵌套的语法结构的树,即抽象语法树

1.抹平多端差异

基于编译原理,我们已经可以将 Taro 源码编译成不同端上可以运行的代码了,但是这对于实现多端开发还是远远不够。因为不同的平台都有自己的特性,每一个平台都不尽相同,这些差异主要体现在不同的组件标准与不同的 API 标准以及不同的运行机制上

在这里插入图片描述

image-20210908090047040.png

taro build 命令是整个 Taro 项目的灵魂和核心,主要负责多端代码编译(H5,小程序,React Native等)

  1. 编译工作流与抽象语法树(AST)

Taro 的核心部分就是将代码编译成其他端(H5、小程序、React Native 等)代码

首先是 Parse,将代码解析(Parse)成抽象语法树(Abstract Syntex Tree),然后对 AST进行遍历(traverse)和替换(replace),最后是生成,根据新的 AST 生成编译后的代码…

2 .Babel 模块

Babel 是一个通用的多功能的 JavaScript编译器,更确切地说是源码到源码的编译器,通常也叫做转换编译器(transpiler)。

给 Babel 提供一些 JavaScript 代码,Babel 更改这些代码,然后返回给你新生成的代码

3.解析页面 Config 配置

在业务代码编译成小程序的代码过程中,有一步是将页面入口app.config.js属性解析出来,并写入 *.json 文件,供小程序使用。

9 . 上线流程

  1. 微信开发者工具:右上角的【上传】按钮,即可发布;

  2. 微信小程序:版本管理中会有审核版本

在这里插入图片描述

10.开发过程中遇到的问题

1.css 不能使用属性选择器,不能灵活操作DOM元素

2.目前微信社区对数学公式Latex没有一个很好的支持

3.微信富文本不支持复制文本功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/406139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3:安装配置sass

目录 前言: 1. 安装sass 2. 新建style目录,存放scss文件 3. main.ts 4. vite.config.ts 5. Test.vue 前言: 对于前端开发人员来说,css预处理的语言已经是家常便饭了,如sass,less等等,那么…

深度学习实战 1 YOLOv5结合BiFPN

目录 1. BiFPN论文简介 2. 在Common.py中添加定义模块(Concat) 3. 将类名加入进去,修改yolo.py 4. 修改train.py 5. 修改配置文件yolov5.yaml 1. BiFPN论文简介 论文《EfficientDet: Scalable and Efficient Object Detection》地址:https://arxiv…

微信小程序云开发的具体使用教程

小程序云开发介绍 云开发官方文档 一个小程序在开发时,除了考虑界面功能逻辑外,还需要后端的数据支持。而为了获得后端的数据支持,开发者需要提前考虑服务器、存储和数据库等需求,并且会花费时间精力在部署应用、依赖上。因此官方…

【JavaScript 逆向】网易易盾滑块逆向分析

声明本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!案例目标验证码:aHR0cHM6Ly9kdW4uMTYzLmNvbS90cmlhbC9qaWdzYXc以上均做了脱敏处理,Base64 编码及解码方式:…

MongoDB数据库性能监控详解

目录一、MongoDB启动超慢1、启动日常卡住,根本不用为了截屏而快速操作,MongoDB启动真的超级慢~~2、启动MongoDB配置服务器,间歇性失败。3、查看MongoDB日志,分析“MongoDB启动慢”的原因。4、耗时“一小时”,MongoDB启…

color ui

color ui——组件使用 组件类型 ColorUI Vant webapp ColorUI 下载地址 Git地址 官网地址 简介 ColorUI是一个css库!!!在你引入样式后可以根据class来调用组件,一些含有交互的操作我也有简单写,可以为你开发提供一…

微信小程序项目实例——我有一支画笔(画画)

微信小程序项目实例——我有一支画笔(画画) 文章目录微信小程序项目实例——我有一支画笔(画画)一、项目展示二、首页三、自由绘图四、照片绘图文末项目代码见文字底部,点赞关注有惊喜 一、项目展示 我有一支画笔是一…

JS中let用法

JS中let用法 基本用法 Let命令用来声明变量。它的用法类似于var,但是所声明的变量。只在let命令所在的代码块内有效。 上面代码块中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声…

蓝桥杯刷题冲刺 | 倒计时28天

作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.卡片2.数字三角形3.购物单4.回文日期1.卡片 题目 链接: 卡片 - 蓝桥云课 (lanqiao…

echarts 柱状堆叠图(图例和x轴都是动态的)

问题描述: echarts柱状堆叠图,是很常用的图表,官网的例子很简单 。图例(legend),x轴(xAxis)都是写死的。但是一般实际应用中都是 动态的。下面就举个例子,实现图例和x轴…

uniapp开发微信小程序自定义顶部导航栏

自定义导航栏渐变色,先上效果 使用uniapp开发小程序,在不同界面,要去对页面进行修改顶部导航栏。 比如说要去定义导航栏的背景颜色,常规的去定义导航栏背景颜色 全局定义导航栏 "window": {"navigationBarBackg…

猿创征文|一名大三学生的前端学习之路(真情流露)

✅ 作者简介:一名大三的大学生,致力于提高前端开发能力 ✨ 个人主页:前端小白在前进的主页 🔥 系列专栏 : node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 🍀 学习格言: ☀️ 打不倒你的会使你更强&#xf…

vue3中使用axios

vue3中使用axios 1.axios在vue3.x中的基础入门使用 在不涉及使用axios进行请求拦截以及响应拦截的场景下,axios的使用可以简化为以下步骤。 step1. 使用npm安装axios npm install axiosstep2. 我们将要使用的axios实例单独编写成一个js文件,文件夹可以建…

猿创征文|【C++游戏引擎Easy2D】学C++还不会绘制一个简单的二维图形?一篇文章教会你

🧛‍♂️iecne个人主页::iecne的学习日志 💡每天关注iecne的作品,一起进步 💪学C必看iecne 本文专栏:【C游戏引擎】. 🐳希望大家多多支持🥰一起进步呀! ✨前…

【Vue组件间通信】 全局事件总线、订阅与发布

目录 一、全局事件总线 作用 安装 组件使用案例 案例分析 组件一(小明) 组件二(小红) 效果展示 二、订阅与发布 安装 组件使用案例 案例分析 组件一(小明) 组件二(小红&#xff…

Python爬虫之Web自动化测试工具SeleniumChrome handless

​ ​ 作者 : SYFStrive 博客首页 : HomePage 🥧 上一篇续文传送门 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:如果觉得文章对你有帮助可以点点关注…

Python流星雨代码

前言 用Python画场流星雨看看,源码见文末公众号哈。 流星类 def __init__(self): self.r ra.randint(50,100) self.t ra.randint(1,3) self.x ra.randint(-2000,1000) #流星的横坐标 self.y ra.randint(0,500) #流星…

出道即封神的ChatGPT,现在怎么样了?

从互联网的普及到智能手机,都让广袤的世界触手而及,如今身在浪潮中的我们,已深知其力。前阵子爆火的ChatGPT,不少人保持观望态度。现如今,国内关于ChatGPT的各大社群讨论,似乎沉寂了不少,现在怎…

Web自动化测试怎么做?Web自动化测试的详细流程和步骤

一、什么是web自动化测试 自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目…

使用node命令提示: ‘node‘ 不是内部或外部命令,也不是可运行的程序

报错:使用node命令提示: ‘node‘ 不是内部或外部命令,也不是可运行的程序 原因:没安装node.js 或者 没配置好环境变量 情况1:安装node.js: 在官网下载 .msi 文件:Node.js 中文网 (nodejs.cn) 步骤 1 : 下…