【taro】taro react转小程序原理

本文探讨了老版Taro的工作原理,它通过AST(抽象语法树)将代码转换为小程序代码。主要涉及四个关键步骤:1) 导入的样式文件转化为wxss;2) config方法名生成.json文件;3) render方法中的jsx转为wxml;4) 其他逻辑转为js文件。Taro将这些内容导入到小程序模板中,如Component和App,并映射生命周期方法。理解这一过程虽然不复杂,但涉及大量细节处理。
摘要由CSDN通过智能技术生成

前言

  • 最近研究了老版taro的实现原理,总结一波。

原理

  • 老版的taro原理就跟我们正常想的差不多。就是通过ast转成对应的小程序代码。
  • 小程序的代码写起来是有特定套路的,所以你需要知道编译前的代码与编译后的代码啥样。
  • 在过一遍ast时,taro会去收集4个东西:
    1、import导入的样式文件最后作为wxss
    2、config方法名作为.json文件
    3、render方法中提取的jsx作为wxml文件。
    4、其他逻辑提取为js文件。
  • 一般情况,taro会把对应的包扔到npm文件夹下,然后查找在npm里面找对应的包名。
  • 小程序的通用模板一般是:
Component(require('xxxx').createComponent(Index));
  • 入口app则稍微改一下:
App(require('xxxx').createApp(_App));
  • 就是在Component中去导入通用的创造组件函数,再将收集的js逻辑导入进去,创造小程序js格式。
  • 小程序组件里有也有对应的生命周期,创建函数需要将小程序的生命周期对接编译后的方法名。比如componentDidMount对接小程序onReady,componentDidShow对接onshow等等。
  • 这种模式就是先统一编译到一个类里去,然后导入到一个生成器或者说适配器,那个生成器去提取类,最后转换成小程序代码。
  • 生成不同模式小程序只要控制require的导入的适配器即可。
  • 所以这个了解原理其实并不难,但是体力活很多。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Taro中使用React开发小程序实现地图功能,你需要使用第三方库来实现地图功能,比如腾讯地图SDK或高德地图SDK。 以下是一个使用腾讯地图SDK的示例,假设你已经安装了Tarotaro-ui: 1. 安装taro-plugin-ttml,它可以让你在Taro中使用TTML(Tencent Template Markup Language)来渲染腾讯地图组件。 ``` npm install taro-plugin-ttml --save-dev ``` 2. 在`config/index.js`中配置ttml插件: ```javascript module.exports = { plugins: ['ttml'] } ``` 3. 在需要使用地图的页面中引入地图组件并使用TTML渲染地图: ```jsx import Taro from '@tarojs/taro' import { View } from '@tarojs/components' import { Map } from 'taro-plugin-ttml' function MapPage() { return ( <View> <Map id="myMap" style={{ width: '100%', height: '500px' }} /> </View> ) } export default MapPage ``` 4. 在`app.js`中初始化腾讯地图SDK: ```javascript import Taro from '@tarojs/taro' import QQMapWX from './utils/qqmap-wx-jssdk' Taro.initAMapApiLoader({ key: 'your_amap_key', version: '1.4.15', plugins: ['AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType'], AMapUI: { version: '1.1', plugins: ['overlay/SimpleInfoWindow', 'misc/PoiPicker'] }, Loca: { version: '1.3.2' } }) // 初始化腾讯地图SDK Taro.getLocation({ type: 'gcj02', success: function (res) { const { latitude, longitude } = res new QQMapWX({ key: 'your_qqmap_key' }).reverseGeocoder({ location: { latitude, longitude }, success: function (res) { console.log(res) } }) } }) ``` 其中,`your_amap_key`是你的高德地图开发者密钥,`your_qqmap_key`是你的腾讯地图开发者密钥。 这样就可以在Taro中使用React开发小程序实现地图功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

业火之理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值