简述微信小程序原理

简介: 简述微信小程序原理

一、本质的区别


首先,小程序的逻辑层和渲染层是分开的,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象。


       所以就没有相关的DOM API和BOM API,这一区别导致了前端开发非常熟悉的一些库,例如 jQuery、 Zepto 等,在小程序中是无法运行的。


       同时 JSCore 的环境同 NodeJS 环境也是不尽相同,所以一些 NPM 的包在小程序中也是无法运行的。


总之,js是单线程的,小程序是双线程,逻辑层和视图层(渲染层)是分开的,同时运行的。


二、通信的区别

     

又因为小程序是双线程的,任何逻辑层和视图层的数据传递都是线程之间的通信,所以具有一定的延时,所以页面的更新就成了异步操作。


异步会使得各部分的运行时序变得复杂一些,比如在渲染首屏的时候,逻辑层与渲染层会同时开始初始化工作,但是渲染层需要有逻辑层的数据才能把界面渲染出来。


如果渲染层初始化工作较快完成,就要等逻辑层的指令才能进行下一步工作。


三、运行机制


小程序启动运行两种情况:


1.冷启动:用户首次打开或者小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动,即为冷启动。


2.热启动:用户已经打开过小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需要将后台态的小程序切换到前台,这个过程就是热启动。

相关文章
|
传感器 算法 Python
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)
1110 0
|
Android开发 Windows
Android开机键失灵启动手机的解决办法
问题描述 Android手机的关机键损坏,无法开机。 解决方法 将手机通过USB线链接电脑,进入命令行,找到adb命令所在目录,运行如下命令: adb reboot 注意:用这种方法的前提是,如果你当前的系统是windows,那么需要安装你的手机的USB驱动。
2968 0
|
算法 机器人 Python
【启发式算法】RRT*算法详细介绍(Python)
RRT(Rapidly-exploring Random Tree Star)* 是一种用于机器人路径规划的启发式算法,它是在经典的 RRT(Rapidly-exploring Random Tree)算法的基础上进行改进的。RRT* 通过优化路径质量,能够找到最短的路径,适用于高维空间中的路径规划问题。
1696 2
|
Web App开发 弹性计算 运维
快速部署1Panel运维面板
1Panel是一款Linux服务器管理面板,提供Web界面进行主机监控、文件、数据库和容器管理。本文介绍如何通过计算巢快速部署1Panel面板。
快速部署1Panel运维面板
|
XML Shell Android开发
FAQ 笔记
FAQ 笔记
610 0
|
关系型数据库 MySQL
MySQL · 特性分析 · innodb_buffer_pool_size在线修改
InnoDB Buffer Pool缓存了表数据和二级索引在内存中,提高数据库效率,因此设置innodb_buffer_pool_size到合理数值对实例性能影响很大。当size设置偏小,会导致数据库大量直接磁盘的访问,而设置过大会导致实例占用内存太多,容易发生OOM。
5147 0
idea设置不同环境
在IDEA中,可通过设置`spring.profiles.active=beta`或`-Dspring.profiles.active=beta`来激活beta环境。查看编辑示例图。
405 2
|
机器学习/深度学习 人工智能 监控
利用AI提升代码质量:现代开发者的利器
【10月更文挑战第4天】在软件开发中,代码质量是项目成功的关键。本文探讨了如何利用AI提升代码的可读性、可维护性和性能。AI可通过代码审查自动化、自动化测试、性能优化和安全漏洞检测等多种方式帮助开发者。具体实践步骤包括选择合适的AI工具、集成工具、训练模型以及持续监控改进。实际应用案例如SonarQube、DeepCode等展示了AI在现代开发中的巨大潜力,预示着AI将在未来软件开发中扮演更重要角色。
|
SQL 机器学习/深度学习 分布式计算
Apache Spark 3.0:十年回顾,展望未来
今年是Spark发布的第十年,回顾Spark如何一步步发展到今天,其发展过程所积累的经验,以及这些经验对Spark未来发展的启发,对Spark大有脾益。在7月4日的Spark+AI SUMMIT 2020中文精华版线上峰会上,Databricks Spark研发部主管李潇带来了《Apache Spark 3.0简介:回顾过去的十年,并展望未来》的全面解析,为大家介绍了Spark的起源、发展过程及最新进展,同时展望了Spark的未来。
9178 0
Apache Spark 3.0:十年回顾,展望未来
|
机器学习/深度学习 自然语言处理 算法
深度学习中的自适应神经网络:理论与应用
【7月更文挑战第1天】本文旨在探究自适应神经网络在深度学习领域的理论基础及其在多个应用场景中的实际效能。通过分析自适应机制如何优化网络结构,提高学习效率和模型泛化能力,我们进一步讨论了自适应神经网络面临的主要挑战及未来发展方向。

热门文章

最新文章