0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何制作一个小程序框架

Wildesbeast 来源:掘金 作者:muwoo 2020-02-15 13:45 次阅读

对于小程序框架实现原理,在支付宝小程序官方文档上有这样一段描述:

与传统的 H5 应用不同,小程序运行架构分为 webview 和 worker 两个部分。webview 负责渲染,worker 则负责存储数据和执行业务逻辑。 1.webview 和 worker 之间的通信是异步的。这意味着当我们调用 setData 时,我们的数据并不会立即渲染,而是需要从 worker 异步传输到 webview。 2.数据传输时需要序列化为字符串,然后通过 evaluateJavascript 方式传输,数据大小会影响性能。

概括一下,大致意思是小程序框架核心是通过2个线程来完成的,主线程负责webView的渲染工作,worker线程负责js执行。说到这里,你是不是会产生一个疑问:为什么多线程通信损耗性能还要搞多线程呢?可能大多数人都知道因为Web技术实在是太开放了,开发者可以为所欲为。这种情况在小程序中是不允许的,不允许使用' + '

' $('body').append(_iframe).ready(function () { $(".close_verification:eq(0)").click( function (e) { e.stopPropagation(); $.ajax({ url: www_host + '/webapi/Mcenter/sms/getvalidstatus', type: "post", dataType: 'json', success: function ( res) { if (res.data .phonestatus == 0) { layer .msg( "请先验证手机号" ) } else { $(".pop_verification_mask") .remove() } } }) }) }) } else { _iframe = '
' + '
请验证手机
' + '
尊敬的用户:
' + phoneTxt + '
' + '' + '
' $('body').append(_iframe).ready(function () { $(".close_verification:eq(0)").click( function (e) { e.stopPropagation(); $(".pop_verification").remove() if ($(".pop_verification_mask") .length >= 1) { $(".pop_verification_mask") .remove() } }); }) } } //已经验证手机号 if (res.data.phonestatus == 1) { if (typeof callback === "function") { callback() } } else { setHtml(); //没有完成验证先弹出手机验证 // 接受数据 // $.receiveMessage(function(msg){ // // 接收到纯数字时设置iframe的高度 // if($.isNumeric(msg.data)){ // }else if(typeof(msg.data)=="string"){ // } // }, passport); } } }) } else { //调用登录 $.ssoDialogLogin(); //单点登录 return false; //弹出登录 } } }) } $('body').css({ 'background-color': '#fff' }); $('.newheader2021').css({ 'border-bottom': 'solid 1px #e5e5e5' });