博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序的双线程模型
阅读量:3935 次
发布时间:2019-05-23

本文共 505 字,大约阅读时间需要 1 分钟。

微信小程序的双线程:

渲染线程脚本线程是分开运行的。
所以我们书写的 JavaScript 无法直接操作 DOM ,更新 UI ,因为驱动 UI 更新的永远是data

为什么小程序要使用双线程模型?

1.安全考虑。微信小程序是基于微信平台的,我们书写的业务代码只是注入到平台的一段程序,所以为了不危及到平台自身的安全,微信平台就以微信客户端Native作为中转站,渲染层和逻辑层分开通过Native进行通信。

2.提升性能,保证用户体验。因此没有采用 iframe 和 web worker 方案。将逻辑线程变成独立的“主线程”。

普通网页开发:

浏览器是多进程的,而不是单线程。 javaScript 语言是单线程。

浏览器在每个页签进程中,会用不同的线程去处理不同的事务。GUI渲染线程负责渲染页面,JS引擎线程负责解析和运行js代码,定时触发器线程则负责 setTimeout / setInterval 定时器等。

GUI渲染线程JS引擎线程之间采用的是互斥、阻塞的管理模式,也就导致了可能会出现脚本执行时间过长而页面奔溃的现象。就是因为这种互斥、阻塞的管理模式,会让一部分人觉得浏览器是单线程的。

转载地址:http://dzrgn.baihongyu.com/

你可能感兴趣的文章
介绍Jib - 更好地构建Java Docker镜像(转)
查看>>
Spring cloud 技术文档汇总(收集)
查看>>
nacos-config源码分析
查看>>
nacos-discovery源码分析
查看>>
HttpClient请求外部服务器NoHttpResponseException
查看>>
springCloud升级到Finchley.RELEASE,SpringBoot升级到2.0.4
查看>>
Spring boot + Arthas
查看>>
omitted for duplicate jar包冲突排查
查看>>
如何保证缓存与数据库的双写一致性?
查看>>
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy排查
查看>>
深浅拷贝,深浅克隆clone
查看>>
Java基础零散技术(笔记)
查看>>
Mysql优化sql排查EXPLAIN EXTENDED
查看>>
架构学习笔记(笔记)
查看>>
线程之间数据传递ThreadLocal,InheritableThreadLocal,TransmittableThreadLocal
查看>>
spring循环依赖,解决beans in the application context form a cycle
查看>>
分布式锁的实现
查看>>
Elasticsearch迁移
查看>>
解决POJO的属性首字母为大写,但是赋值不了的问题
查看>>
Elasticsearch is still initializing the Monitoring indices问题解决
查看>>