广告
返回顶部
首页 > 资讯 > 精选 >微信小程序底层实现原理的示例分析
  • 182
分享到

微信小程序底层实现原理的示例分析

2023-06-26 09:06:20 182人浏览 八月长安
摘要

这篇文章给大家分享的是有关微信小程序底层实现原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  根据小程序开发文档-框架(https://mp.weixin.qq.com/debug/wxadoc/d

这篇文章给大家分享的是有关微信小程序底层实现原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  根据小程序开发文档-框架(https://mp.weixin.qq.com/debug/wxadoc/dev/framework/MINA.html)部分,可以从微信小程序提供的开发接口上看出:

  1. 提供了JavsScript运行环境,由javascript编写的业务代码完成逻辑层的处理

  2. 通过数据传输接口(注册Page时的data属性及后续的setData方法调用)将逻辑层的数据传输给视图层

  3. 视图层由WXML语言编写的模板通过“数据绑定”与逻辑层传输过来的数据merge成展现结果并展现

  4. 视图的样式控制由WXSS语言编写的样式规则进行配置

  再分别来看这4点各自的细节问题:

  1. 提供了JavsScript运行环境,由JavaScript编写的业务代码完成逻辑层的处理

  JavaScript运行环境是什么?

  开发文档Q&A(Https://mp.weixin.qq.com/debug/wxadoc/dev/qa/qa.html)中这句已给出,js运行环境是在JsCore里:

  为什么脚本内不能使用window等对象

  页面的脚本逻辑在是在JsCore中运行

  2. 通过数据传输接口(注册Page时的data属性及后续的setData方法调用)将逻辑层的数据传输给视图层

  数据在逻辑层与视图层间如何传输?

  视图为纯native渲染,故位于native端。

  而逻辑层如上所述,是跑在JsCore中的JavaScript代码。

  有了JsCore,微信小程序框架的native端与js端就可以通过JsCore来相互通信了。于是,微信小程序框架的native端与js端可以约定好通信协议/规范,再把js端通过此通信协议/规范与native通信的部分封装并暴露接口为api(最上层的传输或说设置数据的API也就是上面说的注册Page时的data属性与后续的setData方法),这样逻辑层的业务代码就可以实现向视图层传输数据了。

  (对native其他API的调用也用类似的方法即能走通)

  3. 视图层由WXML语言编写的模板通过“数据绑定”与逻辑层传输过来的数据merge成展现结果并展现

  视图层与数据如何merge为展现结果并展现?

  首先看WXML语言提供的接口,发现它:

  类似于html/xml,用标签方式来描述视图

  类似angular/Vue,通过指令(标签的特殊属性)与双大括号来实现模板的增强功能,使模板与数据merge为结果标签

  但细看发现,指令其实很简单,只提供了用于循环列表的wx:for指令,与用于控制逻辑的wx:if,wx:else,wx:elif指令

  双大括号内支持简单的表达式,表达式中的变量即逻辑层输入的数据

  每次逻辑层更新数据,视图层会相应更新merge并更新渲染

  考虑最简单的情况,要完成这3个功能,大致可以通过做如下事来完成:

  native端读取WXML模板文件,再根据逻辑层传来的数据将其中的指令与双大括号处理解析(可根据大括号表达式从数据中取值并计算,再以对表达式值进行循环与判断便可相应解除wx:for,wx:if指令),生成与数据merge后、可以表征最终展现内容的标签串,

  再以解析xml的方式解析标签为带有属性的节点树,并对应节点树中各节点相应创建native中的视图元素(可能为系统组件、也可能为微信框架中的视图组件)、设置相应属性、维护为正确的父子关系即可。

  逻辑层数据更新时,也更新相应属性即可。

  当然实际处理中,要考虑的因素要多许多,也会做许多优化,但基本思路应大致如此。

  4. 视图的样式控制由WXSS语言编写的样式规则进行配置

  样式如何匹配与设置?

  构建出各视图元素后,仍由native读取WXSS文件,用简单字符串匹配即可将其解析为一对一对的"选择器-规则"对,规则内即为属性键值。之后再对各视图元素与"选择器-规则"对中的选择器进行匹配,匹配成功设置相应属性值(还要考虑全局样式与页面样式及style属性样式中的优先级)即可

  如何使用CSS样式对native元素进行布局?

  最基本的flex布局可以由facebook的css-layout来完成(GitHub - facebook/css-layout: A subset of CSS (specifically flex-box) re-implemented as a stand alone project for use primarily on mobile. Used by React-native)

  另外,事件方面,native接收到用户事件后,必要时通过JsCore反向与其内运行的js进行通信,将事件数据传递给js端的框架,再由js端框架调起相应回调即可。

感谢各位的阅读!关于“微信小程序底层实现原理的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 微信小程序底层实现原理的示例分析

本文链接: https://www.lsjlt.com/news/308750.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序底层实现原理的示例分析
    这篇文章给大家分享的是有关微信小程序底层实现原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  根据小程序开发文档-框架(https://mp.weixin.qq.com/debug/wxadoc/d...
    99+
    2023-06-26
  • 微信小程序底层的实现原理分析
    这篇文章主要为大家展示了“微信小程序底层的实现原理分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序底层的实现原理分析”这篇文章吧。从map组件说起在今天公布的开发文档里,我们知道使用...
    99+
    2023-06-26
  • 微信小程序的示例分析
    这篇文章主要介绍微信小程序的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!未来的发展趋势未来的发展趋势是一切触手可及。比如去餐馆吃饭,扫一扫二维码就可以看菜单、点菜、付款;到公交站台,扫一扫二维码就知道有哪些...
    99+
    2023-06-26
  • C++中string底层原理的示例分析
    小编给大家分享一下C++中string底层原理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、深浅拷贝浅拷贝:在实现string时要是不实先strin...
    99+
    2023-06-25
  • 微信小程序中视图层条件渲染的示例分析
    这篇文章给大家分享的是有关微信小程序中视图层条件渲染的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下使用wx:if进行视图层的条件渲染示例:wxml:使用vi...
    99+
    2022-10-19
  • 微信小程序中wx.previewImage的示例分析
    这篇文章主要为大家展示了“微信小程序中wx.previewImage的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中wx.previewIm...
    99+
    2022-10-19
  • 微信小程序开发实践的示例分析
    这篇文章主要介绍了微信小程序开发实践的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。小程序由于微信提供了一些组件,在微信中的一些体验确实不错,对于开发来说,由数据驱动...
    99+
    2023-06-26
  • 微信小程序拼接图片链接无底洞的示例分析
    这篇文章主要为大家展示了“微信小程序拼接图片链接无底洞的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序拼接图片链接无底洞的示例分析”这篇文章吧...
    99+
    2022-10-19
  • 微信小程序云开发的示例分析
    这篇文章主要介绍了微信小程序云开发的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下小程序云开发是微信最近推出的新的一项能...
    99+
    2022-10-19
  • 微信小程序框架wepy的示例分析
    这篇文章将为大家详细讲解有关微信小程序框架wepy的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。wepy框架借鉴了vue的语法风格和功能特性,但是在使用过程中还...
    99+
    2022-10-19
  • 微信小程序中wx.chooseAddress(OBJECT)的示例分析
    这篇文章给大家分享的是有关微信小程序中wx.chooseAddress(OBJECT)的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、wx.chooseAddress...
    99+
    2022-10-19
  • 微信小程序WXS模块的示例分析
    这篇文章给大家分享的是有关微信小程序WXS模块的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。WXS 模块WXS 代码可以编写在 wxml 文件中的 <wxs> 标签内,或...
    99+
    2023-06-26
  • 微信小程序开发实例分析
    这篇文章主要介绍“微信小程序开发实例分析”,在日常操作中,相信很多人在微信小程序开发实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序开发实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-26
  • 微信小程序组件事件的示例分析
    这篇文章主要介绍了微信小程序组件事件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。组件事件事件系统是组件间交互的主要形式。自定义组件可以触发任意的事件,引用组件的页...
    99+
    2023-06-26
  • 微信小程序开发中Tabbar的示例分析
    这篇文章将为大家详细讲解有关微信小程序开发中Tabbar的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序 Tabbar1.下载微信小程序开发软件;htt...
    99+
    2022-10-19
  • 微信小程序中MD5方法的示例分析
    这篇文章给大家分享的是有关微信小程序中MD5方法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序 MD5的方法详解生成的文件可以放在  utils文件...
    99+
    2022-10-19
  • 微信小程序后端开发的示例分析
    这篇文章主要介绍了微信小程序后端开发的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序后端开发流程根据官网总结为两个步骤1、...
    99+
    2022-10-19
  • 微信小程序商城项目的示例分析
    这篇文章主要为大家展示了“微信小程序商城项目的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序商城项目的示例分析”这篇文章吧。页面分析:使用fo...
    99+
    2022-10-19
  • 微信小程序class封装http的示例分析
    这篇文章将为大家详细讲解有关微信小程序class封装http的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下config.jsvar confi...
    99+
    2022-10-19
  • 微信小程序兼容方式的示例分析
    这篇文章主要介绍微信小程序兼容方式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!小程序的功能不断的增加,但是旧版本的微信客户端并不支持新功能,所以在使用这些新能力的时候需要做兼容。文档会在组件,API等页面...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作