电量:对于移动设备最大的瓶颈就是电量了。因为用户不可能随时携带电源,充电宝。所以必须考虑到电量问题。那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理。
流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了。一个包可以解决的就一个包。
网络:
这个也是IM最核心的内容了,我们要做到在任何网络下等顺畅聊天那就不容易了,好多公司都用的xmpp框架,如果在强网络环境下,xmpp完全没有问题。但是那种弱网络环境下xmpp就束手无策啦,用户体验就很垃圾了。
个人觉得xmpp可以玩玩(参考看这个RFC3920和RFC3921),但是用来真正的产品就差远了。如果遇到一个做IM的朋友张口闭口都说xmpp的话,那么不用沟通了,肯定不是什么好产品。微信、QQ以前也曾用过xmpp,但是最后也放弃了xmpp,就知道xmpp有很多弊端了,还有就是报文太大,好臃肿,浪费流量。为了保证稳定,微信用了长链接和短链接相结合,例如:
1、两个域名
微信划分了http模式(short链接)和tcp模式(long链接),分别应对状态协议和数据传输协议
long.weixin.qq.comDNScheck(112.64.237.188112.64.200.218)
short.weixin.qq.comdnscheck(112.64.237.186112.64.200.240)
2说明
2.1short.weixin.qq.com
是HTTP协议扩展,运行8080端口,httpbody为二进制(protobuf)。
主要用途(接口):
用户登录验证;
好友关系(获取,添后台系统架构
背景:
A、分布式问题收敛
后台逻辑模块专注逻辑,快速开发
可能读取到过时的数据是个痛点
需要看到一致的数据
B、内部定义
数据拥有两个以上的副本
如果成功提交了变更,那么不会再返回旧数据
推演:
1增小程序开发者工具源码看小程序架构设计实现原理
使用微信小程序开发已经很长时间了,对小程序开发已经相当熟练了;但是作为一名对技术有追求的前端开发,仅仅熟练掌握小程序的开发感觉还是不够的,我们应该更进一步的去理解其背后实现的原理以及对应的考量,这可能会解释我们在开发过程中遇到的一些疑惑,比如为啥小程序不能操作dom、小程序是web技术渲染还是native技术渲染等等,另一方面对于我们个人成长也是有帮组的。
首先声明下,文章查看小程序开发者工具源码的方法仅限学习使用。
本文将从以下几个方面来说一下小程序的实现原理
如何查看小程序开发者工具源码小程序架构设计1、小程序渲染是在同一个线程吗?双线程机制2、小程序是web渲染吗?界面渲染机制3、小程序是用web的html标签渲染吗?Exparser组件框架4、小程序可以操作dom吗?数据驱动如何查看小程序开发者工具源码
下面我们通过微信小程序开发者工具的源码来说说小程序的底层实现原理。以开发者工具版本号Statev1.02.1904090的源码来窥探小程序的实现思路。如何查看微信源码,对于mac用户而言,查看微信小程序开发者工具的包内容,然后进入Contents/Resources/App.nw/js/core/index.js,注释掉如下代码就可以查看开发者工具渲染后的代码。
//打开inspect窗口if(nw.App.argv.indexOf('inspect')!==-1){tools.openInspectWin()}
然后重启小程序开发者工具,就出现如下左侧页面,点击其中一个页面就能看到view层的dom结构,如下图右侧。
小程序架构设计
小程序的架构设计与web技术还是有一定的差别,其吸取了web技术的一些优势,同时也摒弃web技术中体验等不好的地方。下面通过问题的形式来说说小程序架构中的一些设计点。
1、小程序渲染是在同一个线程吗?双线程机制
开发过小程序的都知道,小程序是双线程设计,即视图渲染与业务逻辑分别在运行在不同的线程中。这个设计主要是解决web技术中的一个痛点:
web页面开发渲染线程和脚本线程是互斥的,长时间的脚本运行可能会导致页面失去响应或者白屏,体验糟糕。
小程序为了更好体验,将页面的渲染线程和脚本线程分开设计在不同线程中执行,具体实现:
视图view层在webview中渲染,一个页面对应一个webview业务逻辑Appservice层运行在同一个JSCore线程中,具体IOS是JAVAScriptCore,Android是X5JSCore,开发者工具是webview中;这样解决了长时间的脚本阻塞页面渲染的情况,但是也带来一些新的问题:
天生的延迟,线程间要通信业务逻辑层因为运行在JSCore中无法访问DOM和BOM的api;开发者工具使用webview不太可能使用纯native渲染,否则所有小程序需要跟微信一起编码发版。采用纯web渲染貌似是可行的,支持快速在线更新,通过环境,业务逻辑层运行在JSCore中,其没有浏览器相关的信息,访问dom无从谈起;但是小程序开发者工具使用webview来运行业务逻辑代码,它有dom相关接口;所以通过上面沙箱环境来统一使js无法操作dom。
业务代码无法访问dom,怎么实现页面动态更新呢?
答案就是采用类vue这种MVVM框架的数据驱动思想,即让视图状态和视图绑定在一起,状态变更时,视图也能自动变更,这样就不用直接操作dom。
视图的动态更新具体是采用virtualdom技术实现,virtualDOM相信大家都已有了解,大概是这么个过程:
用JS对象模拟DOM树->比较两棵虚拟DOM树的差异->把差异应用到真正的DOM树上。
下面以官网的一幅图来说视图动态更新的过程:
//wxml
信息转载自网络,更多相关信息请点击:微信营销http:///shhmt/wxyx/
相关文章
-
iPhone 12系列全新渲染图曝光 刘海更小拍照功能更强
iPhone12系列渲染图正如之前曝光的那样,iPhone12系列依然采用了“刘海屏”设计,但是“刘海”的面积较iPhone11系列有明显缩小,同时进一步收窄四周边框并保持等宽,保证正面和谐的观感。,另外,这两款手机将增加3倍变焦功能和海军蓝配色。,关于变焦这一点,据GSMArena报道称,苹果正在研究潜望式变焦镜头,但是今年iPhone12系列恐怕无缘这一配置。
2024-03-22 08:01 -
iPhone 12系列或于10月13日发布 六款配色 你爱哪个?
(原标题:iPhone12系列最新渲染图曝光:六款配色你爱哪个?,)据外媒爆料称,iPhone12系列将于美国时间10月13日发布,届时将有四款新机同步推出作为外观设计大变样的一代产品,iPhone12据悉将会回归iPhone4时代的直角边框设计,整体风格更加凌厉。,从渲染图来看,iPhone12系列拥有六款配色,分别为:红色、黑色、粉色、绿色、蓝色以及白色。
2024-03-21 21:45 -
技术流丨RAYDATA STREAMING 云渲染,创造更多可能
用户的游戏设备不再需要任何高端处理器和显卡,只需要基本的视频解码能力,无论是手机、平板电脑、笔记本电脑、台式机或是电视,只需通过浏览器均可跨平台进行游戏。,满足商业需求,产品全面覆盖毋庸置疑的是,光启元会将云渲染技术逐步全面覆盖RAYDATA产品系列,并提供独立服务,比如支持客户根据实际业务需求,自主选择在商业项目中是否配置云渲染服务;与此同时,我们也将运用云渲染技术串联打通用户终端设备的应用场景
2024-03-21 21:40 -
三星 Galaxy S21 可望拥有更大的相机模组
DoNews10月19日消息(记者刘文轩)Pigtou公布了一组据称是三星GalaxyS21(或S30)的渲染图,以图片来看,这部手机和其他全面屏手机没有多少差异,正面采用打孔屏,不过背面却拥有一个十分醒目的相机模组。,OnLeak则爆料称,三星同样会提供Ultra的高端版本,而且多相机的模组尺寸要比这个更大,并保留超长焦相机。,SamMobile的另一则爆料指出,三星将提早到一月就发布这款新手机
2024-03-21 21:28 -
工业设计师深度体验,国产设计师主机新品七彩虹ProMaster A1不简单
如果你打开很多软件留在那里不关,在来回切换的时候又会很麻烦。,这样一来在内部评审时甚至都不需要再专门渲染出一套图片出来,可以直接在电脑上实时查看任何一个角度,如果需要微调,也可以立刻看到调整后的实际效果,对效率的提升帮助非常大。,另外2667MHz四通道的内存和高速固态硬盘,让整个使用过程都非常流畅。
2024-03-21 21:20 -
适合零基础的视频剪辑教程,快速学会
说到视频剪辑,很多人都会觉得极其困难和复杂。,只要掌握了视频剪辑的基本操作流程,用什么软件都一样。,这时候你应该对渲染前做的所有视频都比较满意了。
2024-03-21 18:53 -
SEO伪原创的那些事 使用vue后怎么针对搜索引擎做SEO优化?
如果百度spider对您的站点抓取压力过大,请尽量不要使用404,同样建议返回503。,这个标签存在与否不影响网页权值,只会用做搜索结果摘要的一个选择目标。,一般建议:HTML结构要清晰和简洁跳转使用标签,不要使用js跳转图片加alt说明文章用标签承载...Vue单页项目的SEO目前,对于SEO支持比较好的项目方案是采用服务端渲染。
2024-03-21 18:08 -
亚马逊图片怎么自己做渲染?方法介绍
遇到问题并不可怕,最重要的是大家需要积极解决问题,找到解决办法,亚马逊平台开店的卖家朋友们可能会遇到关于亚马逊图片怎么自己做渲染的问题,今天帮助大家解决!产品渲染目前越来越热门,国内电商太喜欢做渲染效果,产品图片也是越来越好,亚马逊产品图也是一样,产品渲染也很多,比起拍摄精修渲染效果更高级,如果是打造精品产品,重点推的产品,在图片上可不能吝啬奥,打造出好的效果图带来更高的点击和转化。D建模渲染图3
2024-03-19 17:14
热门标签
-
微信、陌陌等著名IM软件设计架构详解 微信二次开发与微信小程序的区别
2024-03-21 19:32
-
微信小程序开发之扫码和带参数跳转 VUE前后分离调起微信支付
2024-03-21 19:32
-
微信小程序注册及认证流程 微信公众号运营中须知官方打击哪些行为
2024-03-21 19:32
-
哪些行业适合做微信小程序开发? 微信小程序的执行流程是怎么样的?
2024-03-21 19:32
-
腾讯又双叒叕开源!这次微信在用的图计算框架 python 实现网站微信登录
2024-03-21 19:32
-
微信新规来啦,犯了以下三点都会被封号 利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例
2024-03-21 19:32
-
微信主动加好友通过率90%的小技巧 16条微信小程序推广渠道
2024-03-21 19:32
-
微信标签如何分类 微信好友分组方法 微信公众号如何从0到100万粉丝
2024-03-21 19:32
-
10分钟带你学会微信小程序的反编译 2019微信防封养号技术
2024-03-21 19:32
-
如何设计QQ、微信、微博等,第三方账号登陆?(附表设计) 网络推广之微信营销小技巧
2024-03-21 19:32
-
掌握微信封号规律,轻松构建私域流量池 微信小程序的推广方法集锦
2024-03-21 19:32
-
通过微信开放平台的UnionID机制用户数据互通 记者潜伏多个骗子微信群,揭秘“局中局”骗局
2024-03-21 19:32
-
微信开发工程师带你一文了解推荐领域最新工作 微信小程序之页面路由
2024-03-21 19:32
-
为什么要做微信营销? 微信小程序云开发,不借助额外服务端爬虫实现小说阅读小程序
2024-03-21 19:32
-
微信最严新规来了!谨防别踩以下三个"雷区",否则直接封号 微信小程序切图之引用背景图片
2024-03-21 19:32
-
微信转账与发红包的五个区别 长知识了 微信公共号回复关键词的无限扩展机制
2024-03-21 19:32
-
个人微信二次开发API接口可以做什么? 如何用Python做出微信圈好友图像全家福
2024-03-21 19:32
-
【网警提醒】八大微信骗局须严防! 微信小程序支付及退款流程
2024-03-21 19:32
-
微信如何进行有效的宣传? 在微信小程序中怎么获得群聊的openGid和名称
2024-03-21 19:32
-
微信营销的经验总结 一小时搭建微信聊天机器人
2024-03-21 19:32