【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

王跃:关于微信小程序的技术,也许你想错了

  • 2017-10-15
  • 本文字数:2216 字

    阅读完需:约 7 分钟

2017 年 1 月 9 日,微信小程序正式发布。在近一年里,小程序一直在坚定的向前走。它的理念和模式受到广泛认可,也被其他人所模仿。

在微信小程序尚在内测之时,外界对它所采用的技术就有很多猜测,正式发布的小程序解答了人们的一些疑惑,但有些问题官方并未正式对外公开说过。InfoQ 对微信小程序相关项目负责人王跃进行了采访,了解了一些开发者关心的问题。

受访嘉宾介绍

王跃(微信号:springwang),微信小程序相关项目负责人,拥有 10+ 年前端开发经验,曾就职于搜狐和新浪,2013 年加入腾讯,负责互娱游戏营销系统,道聚城等多个项目前端架构和开发。对小程序底层架构原理有深入的研究和理解,并且有腾讯多款小程序开发实战经验。

InfoQ:王老师好,您在负责小程序前端之前,做过哪些事情?

王跃:在微信小程序项目之前,我负责过腾讯互娱游戏高级营销系统的前端架构和开发,它承载腾讯几百款游戏业务的日常营销活动,另外还有腾讯道聚城前端架构和开发,覆盖像王者荣耀,LOL,CF 游戏道具的交易,在腾讯之前我还负责过搜狐白社会 SNS 的前端核心框架和模块开发,新浪微博的前端开发工作。

InfoQ:当时小程序还没发布时,坊间传说小程序使用了类似 RN 的技术,发布后人们发现它还是运行在 WebView 里的,不知道实际情况如何?

王跃:从技术实现的层面来说,不管是小程序,还是 RN,或者 Weex,都有共同点,比如 JS 和 Native 的通讯机制,比如 JS 直接调用原生组件的渲染,如在 iOS 平台,小程序和 RN 都采用 JavaScriptCore 来执行 JS。但是小程序和 RN 设计初衷和应对的场景不一样,我们知道小程序的场景主要是在当前实际物理场景用户可以即扫即用,用完即走,整个交互都是非常轻量级的,不涉及特别复杂的交互逻辑,所以在设计上考虑尽量简单,首先是系统底层框架简单,其次开发者开发简单,再次用户使用简单,所以小程序大部分的 UI 组件还是 H5 的渲染方式,而不是像 RN 设计成 Native 的 UI 组件。

当然小程序本身为了解决部分组件性能的问题也采用了 Native 的方式,所以方案上的选项主要是基于实际场景考虑,不是纯技术上的考量。

另外准确的说小程序不仅仅运行在 Webview 里,需要区分不同的部分,这个在我的分享里会有详细的解释。

InfoQ:在 Android 上小程序是运行在 X5 引擎上的,X5 团队有为小程序做一些特别的优化,或者添加特性吗?

王跃:微信 Android 版的浏览服务用的确实是我们腾讯浏览器团队提供的 X5 引擎,在性能方面小程序和 X5 团队之间一直有保持沟通和协调,双方都尽可能设法优化并持续提升用户体验。

InfoQ:刚发布时有人发现小程序的一些代码和 Vue 的有点像,而单向数据流又让人联想到 React,在当初开发小程序核心框架的时候有哪些思考?

王跃:这个跟问题 2 类似,首先小程序和 Vue,React 本质上还是不一样的,小程序是需要特定的 Native 层支持,同时底层功能也更强大,而 Vue 和 React 运行在通用的 WebView 之上,不需要特定 Native 支持,但大家为什么觉得会有些类似呢,主要是指在数据绑定,事件绑定等部分的实现上会有一些类似,当然这几种技术没有好坏,主要还是看我们是解决什么场景下的什么问题。

InfoQ:iOS 和 Android 平台的小程序有一些区别,比如 Android 上可以把小程序图标放到主屏,还有人发现微信小程序在 Android 下有单独的进程,小程序是不是对 Android 进行过更多 Native 化的探索?

王跃:Android 可以放到主屏幕而 iOS 不行这个主要是 OS 层面的限制,至于 Android 下的运行方式,主要是通过单独的 Activity 来承载视图,设置为单独的进程主要是为了保证小程序的运行内存,跟 Native 化没有直接的联系。

前面问题也提到了,小程序本身已经有好几个组件是使用 Native 方式实现的,主要目的还是为了保证小程序的执行效率,达到更好的用户体验,Native 的组件也不是针对 Android 一个平台,Android 和 iOS 都有做,后续是否会有更多的 Native 化的实现,还是看实际组件在采用 Web 实现时是否符合我们对用户体验的标准。

InfoQ:前段时间有人发现小程序出了自己的脚本格式 WXS,它是小程序新的 DSL 吗?

王跃:目前,WXS 对于小程序开发不是必须的,它的主要目的是为了增强 WXML 的数据处理能力而新引入一种技术实现,其实际解析的语言规范还是 JS,并没有引入新的语法,仅仅对 JS 做了上层的封装和限制,所以学习上基本没什么成本,大致了解下开发文档马上就能上手,这里 WXS 跟 DSL 也没太大关系,没有可对比性。

InfoQ:小程序和 PWA 可以说代表着移动 Web 的两条不同的发展路线,从旁人的眼光来看,小程序更加务实,但人们也期待小程序更加开放一些。在这方面您是怎么看的?

王跃:这里我说下个人的想法,不代表官方意见,任何一种模式都是为了在特定环境下解决特定问题而设计的,所以 PWA 有它的应用场景,而小程序有小程序的应用场景,两种模式都有其优势和限制,这两种模式的差异其实跟我们现在的 Web 和 Native 很像,Web 提供相对常用和通用的功能(大部分功能和基本使用体验),而个性定制(更流程复杂的功能和交互体验)可以充分发挥当前平台的能力,我个人觉得这两种模式都会一直存在,关键是看能否为用户提供价值,不过,未来这两种模式一定会有越来越多的融合,就像 web 和 Native 的融合产生了 Hybird 模式一样,想象一下,未来一定会有一种新的模式,可以像 PWA 一样具有更通用的运行场景(提供核心功能),同时又可以根据当前的运行环境接入定制化的高级能力,实现 Write Once,Run Anywhere 的美好愿景。

2017-10-15 22:116861
用户头像

发布了 164 篇内容, 共 103.3 次阅读, 收获喜欢 391 次。

关注

评论

发布
暂无评论
发现更多内容

万物皆可集成资源包!低代码集成系列一网打尽

葡萄城技术团队

兴业银行正式加入openGauss社区

openGauss

openGauss正式推出资源池化架构,全新升级社区工具DataKit

openGauss

阿里云 EMAS & 魔笔 :1月产品动态

移动研发平台EMAS

阿里云 App 低代码 移动研发

【漏洞发现】|多个严重CVE漏洞被发现,系内存类安全漏洞

云起无垠

漏洞 Fuzzing

Java实现Http多次请求复用同一连接

做梦都在改BUG

Java HTTP

TiDB Serverless 和技术生态全景

PingCAP

TiDB

openGauss社区十一月运作报告

openGauss

openGauss内核分析(四):查询重写

openGauss

行业大咖云集 多元观点碰撞 OpenHarmony技术峰会与你相约深圳

叶落便知秋

OpenHarmony

openGauss内核分析(五):统计信息与行数估计

openGauss

ChatGPT被开发者嫌弃?真正的用户群体出现

Onegun

人工智能 ChatGPT

如何使用 NFTScan NFT API 检索单个 NFT 资产

NFT Research

API NFT

【我和openGauss的故事】openGauss的WDR报告解读

openGauss

设计原则 — L 里氏替换原则

Lemoon Can

SOLID 设计原则 SOLID原则 里氏替换原则

AI不仅造就了ChatGPT,也重新定义了模糊测试

云起无垠

模糊测试

一文详解SpEL表达式注入漏洞

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

存储拆分后,如何解决唯一主键问题?

小小怪下士

Java 程序员 后端 uuid

基于图数据库 NebulaGraph 实现的欺诈检测方案及代码示例

NebulaGraph

图数据库 反欺诈 安全风控

妙啊,空结构体还能这么用?Go语言的结构体看这篇就够了

王中阳Go

Go golang 高效工作 学习方法

SpringBoot与Loki的那些事

做梦都在改BUG

Java Spring Boot 框架

云小课|MRS基础原理之Flink组件介绍

华为云开发者联盟

大数据 华为云 企业号 2 月 PK 榜 华为云开发者联盟

openGauss获2022年度创新产品奖!

openGauss

国内开源生态发展现状:开源基金会与开源组织 | 雨林开源行

开源雨林

Linux 开源 基金会 OSPO

要想随时编码即刻创新,这个工具你需要一个

华为云开发者联盟

云计算 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

赛意信息荣获2022年深信服优秀ISV合作伙伴奖 强强联手赋能企业再升级

科技热闻

实用指南:如何在Anolis OS上轻松使用 Kata 安全容器?

OpenAnolis小助手

容器 安全 操作系统 龙蜥社区 kata

提升企业管理效率 从权限控制开始

力软低代码开发平台

GitHub神坛变动!10W字Spring Cloud Alibaba笔记,30W星标登顶第一

做梦都在改BUG

Java 微服务 Spring Cloud

【ECCV 2022】TeSTRa:稳定的流式视频识别

Zilliz

计算机视觉

从混沌到清晰,阿里全球商品类目域建设思考

阿里技术

全球化技术能力

王跃:关于微信小程序的技术,也许你想错了_移动_徐川_InfoQ精选文章