写点什么

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

  • 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:117276
用户头像

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

关注

评论

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

【LeetCode】K 连续位的最小翻转次数Java题解

Albert

算法 LeetCode 2月春节不断更

最新Hadoop的面试题总结

大数据老哥

腾讯云大神用这份“redis深度笔记”把Redis入门到精通全部精髓全部展现出来了

redis 架构 计算机

十四五期间我国区块链技术趋势特征分析

CECBC

区块链 大数据

百度Hydra工具在移动端UI兼容性测试上的高效应用

百度Geek说

测试 UI

DPDK大页内存原理

赖猫

Linux DPDK

GitHub上爆火的Java性能优化100+小技巧!(干货建议收藏)

Java架构师迁哥

大厂必问算法!查漏补缺LeetCode必考“1024道技术点面试题”

Java架构之路

Java 程序员 架构 面试 编程语言

温故而知新!腾讯Android开发面试记录,薪资翻倍

欢喜学安卓

android 程序员 面试 移动开发

诊所数字化:诊所医护人员绩效指标评估方式

boshi

绩效 数字化转型 医疗 七日更

让虞书欣、李诞拍到停不下来!AR+AI双引擎的互动小游戏,如何打开IP新玩法?

爱奇艺技术产品团队

使用 Tye 辅助开发 k8s 应用竟如此简单(三)

newbe36524

Docker 微服务 k8s dotnet

TCP 协议灵魂问题,巩固你的网路底层基础

阿里面试这样问:redis 为什么把简单的字符串设计成 SDS?

程序员小富

Java redis 面试

5.state更新流程(setState里到底发生了什么)

全栈潇晨

React React Hooks react源码

电信的标准化组织

Geek_古藤模根

标准化 电信

技术需求文档,应当这么写!

穿甲兵

需求 文档

翻译:《实用的Python编程》01_06_Files

codists

人工智能 后端 python 爬虫 数据结构与算法 文件操作

如何提升网页核心指标

Vincent

linux内核协议栈 邻居协议之ARP协议处理初始化

赖猫

Linux 协议栈 Linux内核

地表建筑物识别Dayo1

IT蜗壳-Tango

七日更 2月春节不断更

探究Python源码,终于弄懂了字符串驻留技术

华为云开发者联盟

Python 字符串 Python解释器 字符串驻留 字符

6.render阶段(厉害了,我有创建Fiber的技能)

全栈潇晨

React React Hooks react源码

元旦立下的Flag,春节后该如何实现?

脑极体

01 | Mysql基础架构

zach

MySQL

区块链难在落地,亟需补人才缺口迎爬升期

CECBC

区块链

资本之外,区块链破圈正当时

CECBC

区块链

Elasticsearch Search API 基础语法

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

真牛皮!2021最新Android大厂面试真题大全,BAT大厂面试总结

欢喜学安卓

android 程序员 面试 移动开发

如何读懂CNN、BBC、经济学人、卫报、纽约时报?看完这本经典即可事半功倍!

wbliu85

学习 英语

一、MongoDB简介

Kylin

数据库 mongodb 学习 七日更 二月春节不断更

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