腾讯开源内部跨端框架 Hippy,打磨三年,日均 PV 过亿

2019 年 12 月 24 日

腾讯开源内部跨端框架 Hippy,打磨三年,日均 PV 过亿

12 月 20 日,腾讯开源跨端框架 Hippy。在腾讯内部,Hippy 已运行 3 年之久,跨 BG 共有 18 款线上业务正在使用 Hippy,日均 PV 过亿,且已建立一套完整生态。相较于其他跨端框架,Hippy 对前端开发者更友好:紧贴 W3C 标准,遵从网页开发各项规则,使用 JavaScript 为开发语言,同时支持 React 和 Vue 两种前端主流框架。



Hippy 视频:https://v.qq.com/x/page/i3038urj2mt.html。


业内现状:大部分跨端框架对前端开发者不够友好


“跨端”是目前前端界比较流行的一个词汇。“跨端”之所以流行,根源在于传统网页开发受浏览器能力限制太大,尤其是各家浏览器的不同实现、离线能力和性能上的缺陷导致 App 很难满足用户体验的需求。跨端框架本质上是将终端能力以一种形式提供业务开发使用,可以无限制地使用所有终端能力的同时,尽量让业务开发只编写一套代码,这样既能满足性能需求,又能减少开发成本。


但纵观整个社区内的跨端开发框架,仍旧存在两个主要问题:


  • 跨端框架对前端开发者来讲难度较高,如果不具备移动终端开发能力,很难上手;

  • 平台差异大,相同功能甚至要为不同的平台使用不同的接口编写大量平台相关代码。


出现上述问题的原因,是因为目前业内的跨端框架,大部分由终端开发者主导开发,并不是从前端开发者角度出发的,所以对于前端开发者来说不够友好。


腾讯跨端解决方案 Hippy:前端开发者更易上手


Hippy 跨端框架是由 QQ 浏览器部门发起的,针对前端开发者推出的跨端解决方案。为业内现存问题,Hippy 紧贴 W3C 标准,遵从网页开发各项规则,从前端开发人员角度出发,使用 Javascript 为开发语言,同时支持 React 和 Vue 两种前端主流框架。对于前端开发者而言,Hippy 上手难度会更低,学习曲线会更平滑。


Hippy 实现了类似 Flutter 的引擎直通架构(在 React Native 中的 Fabric 架构),通过 C++ 开发的模块直接插入 JS 引擎中运行,绕过了前终端通讯编解码的开销,有效提升了 JS 前端代码和终端的通讯性能。在此基础之上,Hippy 正在实现高性能自绘,以提供更强的性能和更好的用户体验。


hippy-react 从语法上更加接近终端底层,某种程度上语法接近 React Native,同时通过官方提供了 hippy-react-web 组件库,也可以方便地生成 Web 版网页。



全民 K 歌:react + hippy-react + hippy-react-web


hippy-vue 的组件、参数和接口完全符合浏览器标准,前端开发用浏览器标签和常用的 CSS 选择器就可以完成跨端界面绘制。


其优势如下:


  • 前端开发基本了解一下 hippy-vue 开发的限制就可以上手跨端开发;

  • 可以复用 Web 端绝大多数的生态;

  • 不需要 Web 转接库就可以直接生成网页。


事实上,hippy-vue 其实只是浏览器上的 Vue 在终端上的一个渲染层,理论上大多数 Vue 在网页上的生态可以直接迁移过来。



王者营地:vue + hippy-vue


Hippy 在腾讯内部已经有一套完整生态,包含 GCanvas、Lottie、SVG 等都有对应组件封装,同时包含腾讯内部自研的 Hippy 业务组件库、高性能图形库、异常上报(支持 Sentry)等,也会在未来逐步对外开放。


Hippy 正式开源 Github 地址:


https://github.com/Tencent/Hippy


本文转载自公众号云加社区(ID:QcloudCommunity)


原文链接


https://mp.weixin.qq.com/s/Jo9wjXqqrLg5uQK7u8dHtg


2019 年 12 月 24 日 16:433547

评论 3 条评论

发布
用户头像
前年的vueconf上框框就提到了,今天终于正式发布了?不过感觉时间窗口有点错过呀
2019 年 12 月 25 日 11:57
回复
用户头像
国内的开源,即使是ali,tencent这样的大厂,大部分虎头蛇尾,文档不全,谁敢用到正式产品?
2019 年 12 月 25 日 11:17
回复
一般来说,都是fork一个版本,边同步更新边根据自己业务魔改或者提交pr,开源终究是个双赢的模式
2019 年 12 月 25 日 11:58
回复
没有更多评论了
发现更多内容

Java-技术专题-synchronized关键字

李浩宇/Alex

关于日期及时间字段的查询

Simon

MySQL sql查询

是时候学习Linux了

Simon

Linux

枚举算法练习例题(Python版)

罗罗诺亚

Python 算法 枚举

低/零代码干掉了传统的开发模式

代码制造者

编程语言 低代码 零代码 信息化 编程开发

MySQL索引问题探究手记

flyer0126

MySQL 索引

面试必杀技,讲一讲Spring中的循环依赖

程序员DMZ

spring

易观郭炜:流动水系数造未来

易观大数据

MySQL5.7升级到8.0过程详解

Simon

MySQL

量纲分析(Dimensional Analysis)入门

InfoQ_b5c13aa54782

数学 基础 物理 量纲分析 电磁

钓鱼网站:详解hosts文件

xcbeyond

Java 域名解析 hosts

如果你每次面试前都要去背一篇Spring中Bean的生命周期,请看完这篇文章

程序员DMZ

spring 生命周期

MySQL关于日期为零值的处理

Simon

MySQL

写作只是消遣?

Geek_db1689

写作 讨论写作 自我感悟 瞎想乱写

别人家的 DevOps 流水线,价值一个亿

Atlassian速递

DevOps 数字化转型 金融 Jira 数字银行

随手记

InfoQ_0d79a8bcf933

数据结构与算法

Android |《看完不忘系列》之Retrofit

哈利迪

android

SpringCloud服务注册中心双节点集群(Eureka集群)

xcbeyond

Java 架构 微服务 Eureka 集群

海量并发也没那么可怕,运维准点下班全靠它!

华为云开发者社区

容器 网络 并发 华为云 裸金属容器

操作系统bochs安装及使用

allworldg

操作系统

集成学习方法及应用,破解AI实践难题

博文视点Broadview

人工智能 学习 AI 周志华

如何利用k8s拉取私有仓库镜像

Damon

Docker k8s

区块链、人工智能……警惕非法金融借创新概念迷惑投资人

CECBC区块链专委会

区块链 金融

面试官:你说你懂i++跟++i的区别,那你知道下面这段代码的运行结果吗?

程序员DMZ

JVM i++

跨域问题(CORS / Access-Control-Allow-Origin)

xcbeyond

Java CORS 跨域

SWARM学习1——Kademlia分布式路由表协议

AIbot

区块链 DHT 分布式存储 分布式文件存储 分布式路由

自从有了语音开黑小能手,队友再也不会骂我了!

anyRTC开发者

WebRTC 在线教育 直播 RTC RTMP

谈一谈Kuberflow

soolaugust

tensorflow 学习 kubeflow Kubernetes 云原生

Dell G7 指纹识别设备 - Goodix fingerprint 失效官方解决办法(图文)

Saint_X

硬件

实践案例丨教你一键构建部署发布前端和Node.js服务

华为云开发者社区

node.js 后端 服务器 代码 华为云鲲鹏

恢复青春气息,就靠这套人像美肤算法了

博文视点Broadview

算法 计算机视觉 图像识别 人像

腾讯开源内部跨端框架 Hippy,打磨三年,日均 PV 过亿-InfoQ