从微信小程序开发者工具源码看实现原理(一)小程序架构设计使用微信小程序开发已经很长时间了,对小程序开发已经相当熟

本文将从以下几个方面来说一下小程序的实现原理

小程序的架构设计与web技术还是有一定的差别,其吸取了web技术的一些优势,同时也摒弃web技术中体验等不好的地方。下面通过问题的形式来说说小程序架构中的一些设计点。

开发过小程序的都知道,小程序是双线程设计,即视图渲染与业务逻辑分别在运行在不同的线程中。这个设计主要是解决web技术中的一个痛点:

小程序为了更好体验,将页面的渲染线程和脚本线程分开设计在不同线程中执行,具体实现:

页面渲染的方式主要有三种:

界面主要由成熟的Web技术渲染,辅之以大量的接口提供丰富的客户端原生能力。同时,每个小程序页面都是用不同的WebView去渲染,这样可以提供更好的交互体验,更贴近原生体验,也避免了单个WebView的任务过于繁重。既然采用Hybrid方式渲染,那么页面的渲染可能会用到原生native来渲染,什么情况会用到原生渲染呢?

上面说到小程序主要由成熟的web技术渲染,能否直接使用html提供的标签如div、table等组织页面呢,答案不可以。主要考量:

所以,小程序不能直接使用html标签渲染页面,其提供了10多个内置组件来收敛web标签,并且提供一个JavaScript沙箱环境来避免js访问任何浏览器api。

既然小程序不能直接使用html标签来渲染页面,那它提供的如view、cover-view等内置组件是否意味着最终都转换为html提供的内置标签来渲染呢?答案当不是。我们来看如下代码:

可以看出,小程序提供的组件并没有最终转换为为html对应的标签来渲染,而是使用自定义的元素来渲染。这些内置组件都是由Exparser框架负责管理,它内置在小程序基础库中,为小程序的各种组件提供基础的支持。

那么问题来了,小程序是怎么给业务代码加上以上封装的呢?其实很简单,在小程序开发者工具中有一个后台服务,访问小程序的每个模块的path时,后台服务会调用wrapSourceCodeInDefine方法将请求的JS文件的内容分别包裹在define域中,方法的代码如下图所示:

这里的define是小程序底层实现模块化的方法之一,还有一个是require方法;通过define来定义一个模块,require来引用一个define定义的模块。从上面小程序对业务模块代码的封装可以看出:

业务代码无法访问dom,怎么实现页面动态更新呢?

答案就是采用类vue这种MVVM框架的数据驱动思想,即让视图状态和视图绑定在一起,状态变更时,视图也能自动变更,这样就不用直接操作dom。

视图的动态更新具体是采用virtualdom技术实现,virtualDOM相信大家都已有了解,大概是这么个过程如下图:

实际处理可以简单描述如下:

用JS对象模拟DOM树->比较两棵虚拟DOM树的差异->把差异应用到真正的DOM树上。

其中,virtualdom是通过内置的wcc可以将wxml转换为js对象形式,以此来表示DOM树结构。

下面以官网的一幅图来说视图动态更新的过程:

我们在开发者工具开发小程序时,一般都会选择一个基础库,如小程序开发者工具选择界面:

小程序基础库是用JavaScript写的,但是我们并没有在我们的小程序中直接引用,那么我们是怎么使用基础库提供功能的呢?答案是:

小程序基础库功能包括两个部分视图层的WAWebview.js和业务逻辑层的WAService.js。下面就简单说下对应功能:

下看看一下WAService.js源码内容缩略图:

从源码可以看出基础库提供的WAService.js有很多功能,主要包括以下几部分

小程序基础库为视图层提供的基础功能有些与WAService相同,主要功能如下:

THE END
1.C#小结:开发一个Web项目要用到的软件清单c#web开发6. PowerDesigner:一个用于数据库设计、数据架构建模、分析和管理的工具。 7.node.js:一个JS运行环境,用于前后端分离开发。 8. Postman:一个接口调试工具。 9. Redis/Memcache:两个缓存工具。 10. SonarQube:一个用于提升代码质量的工具。 11.Jenkins:一个开源的持续集成/持续部署工具,用于自动化构建、测试、部https://blog.csdn.net/m0_67412019/article/details/133386966
2.ASP.NETCore适用于.NET的开源Web框架.NET 是一个开发人员平台,由工具、编程语言、库组成,用于构建许多不同类型的应用程序。 ASP.NET Core 通过专门用于生成 web 应用的工具和库扩展了.NET 开发人员平台。 更深入发掘: 什么是 ASP.NET Core? 了解ASP.NET Core 通过我们的教程、视频课程和文档,了解 ASP.NET Core 提供的所有功能。 https://asp.net/
3.万字干货!超全面的小程序设计指南优设网支付宝小程序设计规范:https://docs.alipay.com/mini/design 特点:在组件上采用了此前成熟的 Ant Design 设计,在开放 API 上则面向自身特色能力来封装,在框架方面采用开源的 React/webpack 等技术为基础,结合了支付宝自身的多年技术沉淀来实现。 量级:月活 7 亿 https://www.uisdc.com/mini-program-design-guide
4.我帮您打造微信小程序web可视化开发者工具是一款的可视化WebHTML我帮您打造微信小程序web可视化开发者工具是一款的可视化Web应用开发和运行平台。基于浏览器的集成开发环境,可视化和智能化的设计,能轻松完成身微信小程序和面向手机的移动应用开发;高效、稳定和可扩展的特点,使微信小程序的开发更快捷和简单。此系统DIY官网导出后https://github.com/LX0/diygw/
5.2023年推荐使用的59个超赞的Web开发工具我们对Web开发工具的看法 从表面上看,对Web开发工具进行分类似乎很简单。然而,即使潜入浅水区,也会出现一些模糊界限的考虑。 例如,考虑视频流服务是否算作开发工具。在泡沫中,可能不会。但是,如果您使用它来记录特定设计应用程序的屏幕,它会突然转变为独特的协作工具。 https://www.wbolt.com/web-development-tools.html
6.Grid++Report6.7.1.0含Demo模板例子免费报表设计开发工具多Grid++Report是一款同时支持C/S软件(桌面程序)与B/S软件(WEB程序)开发的报表工具,功能全面易学易用。C/S开发适用于VB.NET、C#、VB6、VB、VC、Delphi、C++Builder、QT与易语言等。B/S开发适用于ASP.NET(C# & VB.NET),PHP,JSP(JAVA)等,支持所有WEB服务器。开发C/S报表与B/S报表的编程接口、报表模板与报表https://www.iteye.com/resource/zjun2nd-12152705
7.使用electron开发桌面级小程序自动部署系统支持部署小程序开发者工具的坑,接下来我将此次开发过程的思考和问题进行总结,从多个角度来介绍本项目。 J.A.R.V.I.S是做什么的? 它是一个安装在Mac或Windows上的app程序,可以随时从Git上拉取最新代码选取分支和tag并自动打包构建不同环境上传至小程序后台的发布系统。 https://cloud.tencent.com/developer/article/1449147
8.软件工程专业培养方案(2022)4.2 能够基于软件工程专业知识,确定技术路线,设计可行的实验方案。 4.3 选用或搭建合适的实验环境,安全地开展实验,正确采集实验数据。 4.4 能正确采集、整理实验数据,对实验结果进行分析和解释,获取合理有效的结论。 毕业要求5(使用现代工具):能够针对软件工程领域复杂工程问题,开发、选择与使用恰当的技术、资源、现代工https://www.csust.edu.cn/jtxy/info/1302/20908.htm
9.电子商务网站建设第一部分是电子商务网站的基础理论,包括电子商务网站概述、电子商务网站的规划设计,重点奠定学生规划设计网站的能力;第二部分为网站建设的实现工具,包括最新的Dreamweaver网页实现工具的使用、最新的XHTML的用法;第三部分是网站的功能实现的相关知识,包括电子商务网站系统设计、ASP.NET编程语言的使用、动易后台的使用;第四https://baike.sogou.com/v5852534.htm
10.桌面移动及Web应用的开发工具Qt开始使用我们的课程材料、网络研讨会及其他直观学习工具。 立即开始学习Qt S3 Fuzion 的 Xelorate Built with Qt Xelorate是一款基于云计算的电子零件研究应用程序,兼具桌面应用程序和Web世界的优点,为供应商与工程师客户实现直接、实时的互动。 "采用集中式计算方法的基于Web的开发无法提供与Qt框架相同的性能水平和https://www.qt.io/zh-cn/product/qt-for-application-development
11.基于微信小程序的开发工具设计实验报告?微信小程序开发工具主要基于微信的小程序开发框架和 API,通过 Web 技术实现对小程序代码的编辑、调试和发布。在开发工具中,用户可以使用 HTML、CSS 和 JavaScript 语言等技术进行小程序开发,同时还可以通过开发工具提供的模拟器和真机调试功能对小程序进行调试,以保证程序的稳定性和兼容性。 https://www.yimenapp.com/kb-yimen/22183/
12.前端程序员推荐:web开发人员常用小工具大集合!99%的你用得到前言:随着技术发展,web网页开发要求越来越高,前端开发者都希望能更快速更高效更完美地展示,但工欲善其事必先利其器,今天我们就为大家整理一些好用的web开发常用工具,希望可以收藏实践下。 CSS 3相关 1.CSS3样式生成器:http://www.css88.com/tool/css3Preview/ https://www.jianshu.com/p/b10cb134b7f6
13.web可视化开发工具DecSoftAppBuilder2024.55x64安装免费版使用“ IDE工具”面板非常简单,只需单击可用的控件之一,然后在应用程序设计器中单击:然后将您单击的控件插入应用程序设计器中,然后可以使用IDE控件检查器开始更改其属性。,IDE控件样式检查器,将它们的一些事件编成代码等。 3、DE控件检查器 DecSoft App Builder IDE控件检查器允许在设计时为应用程序视图,应用程序对话https://www.5aixz.com/bianchengruanjian/2377.html
14.微信开发者工具mock(微信开发者工具模拟器启动失败)2、微信小程序如何盈利,小程序开发的盈利模式有哪些 3、怎样使用微信小程序的第三方js库? 4、微信web开发工具在哪 怎么自己制作微信小程序 如何制作微信小程序,首先我们需要从他的构成确定,微信小程序的制作需要的点有三个:设计、前端、后端。而相对简单的微信小程序可能只需要设计、前端。 https://www.eolink.com/news/post/71072.html