去哪儿网跨端小程序开发实践谈

2019 年 8 月 15 日

去哪儿网跨端小程序开发实践谈

ArchSummit 深圳 2019 大会上,钟钦成(司徒正美)讲师做了《去哪儿网跨端小程序开发实践谈》主题演讲,主要内容如下。

演讲简介

两年前,微信小程序横空出世,及小米直达号联合其他手机商摇身一变,推出快应用,在这个互联网寒冬中,去哪儿网敏锐抓住机会,迅速推出去哪儿微信小程序与快应用,以一套代码加语法宏的方式进行开发, 取得不俗的收益,日收入百万级别。

一年前,其他小程序也冒出来了,显然这意味新的商业机会,但旧的开发方式已经无法进行下去 (宏里面太多分支),因此去哪儿网开发了自己的转译框架 nanachi,实现一套代码运行于 N 个平台(微信,QQ 轻应用,头条,抖音,钉钉 E 应用,支付宝,百度,快应用,H5)。

本次分享介绍研发心得,大家耳熟能详的转译部分(babel 的 API 的调用)会略过,但会展示更加有用的信息,及在框架无法 hold 住的情况下处理措施。

演讲提纲

1、框架的研发细节

  • React 代码如何转换成小程序的代码
  • React 组件实例如何匹配相同页面上相同位置的小程序实例,实现数据的同步与视图的刷新
  • API 的兼容与 Promise 化
  • 针对个别平台的标签差异开发出补丁组件,在编译阶段无感支持这种标签
  • 样式单位的转译
  • 对事件进行统一委托,解决传参与 bind(this) 与数据上传

2、框架外的技术文案(需要开发人员手动添加额外代码,或进行某方面的约束)

  • 针对平台的限制或体积的限制,需要将某个页面或频道放到 webview 中,开发出智能 webview 方案
  • iconfont 的跨平台处理
  • 根据不同平台打包业务代码
  • 拆库开发,方便多条业务线同时开发
  • 通过与各大公司的技术人员洽谈,协商加入某些 API,减轻兼容难度
  • 如何设计跨端的目录结构
  • 快应用的兼容问题

听众受益

1、对项目负责人来说,了解一下各种小程序的收益情况(微信 > 快应用 > 支付宝 > 百度),了解兼容难度,市面上有各种号称非常不错的转译框架,其实只能解决 60% 的问题,于是才有了各种补丁方案,如何在框架无能为力的情况进行自救。从项目实施来讲,我的建议有三点:

  • 必须有 backup 方案
  • 如果决定上线,必须提前研发,不一定等到推广费到位,因为坑多
  • 加强与大公司技术人员的沟通

2、对开发者,可以了解到众多平台的差异与相应的解决方案。

讲师介绍

钟钦成(司徒正美)

去哪儿 架构师

网名司徒正美,拥有 11 年纯前端经验,涉猎多种语言与设计模式,精通 DOM 与 JS 各种黑魔法,精通选择器引擎、模块加载器、MVVM。著有《JavaScript 框架设计》一书,去哪儿网平台事业部前端架构师,人民出版社 Web+DB Press 中文版编委会编委!

开发过选择器引擎,前端模板,富文本选择器,甘特图 H5,多套 UI 库。主要开源项目有:mass、avalon、anujs、jsx-parser、fetch-polyfill、nanachi 多端小程序转译框架。

完整演讲 PPT 下载链接

https://archsummit.infoq.cn/2019/shenzhen/schedule

2019 年 8 月 15 日 00:00 5756

评论

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

C语言输入和输出

C语言技术网-码农有道

C语言 输入 输出

高仿瑞幸小程序 06 layout布局

曾伟@喵先森

小程序 微信小程序 前端

深入理解MDL元数据锁

Simon

MySQL

【Howe 学 JAVA】Java 类集框架2——集合输出

Howe

Java 集合 输出 类集

C语言常量、变量和关键字

C语言技术网-码农有道

C语言 常量 变量 关键字

放假了,你还会打开钉钉么?

无箭的丘比特

高效工作 团队管理 企业文化 个人成长 技术管理

【Howe 学 JAVA】Java 类集框架2——Set 集合

Howe

Java 集合 set

前端开发的瓶颈与未来之路

keelii

node.js typescript ruby-on-rails 编程 前端

OceanBase原理与实现分析

ElvinYang

“随大流”的你是不会成功的

小天同学

个人成长 思考 写作平台 感悟 坚持

带你100% 地了解 Redis 6.0 的客户端缓存

程序员历小冰

redis 缓存 redis6.0.0

物联网资产整合架构

老任物联网杂谈

物联网架构

游戏夜读 | 游戏设计需要天赋?

game1night

自助设备系列——技术应用

孙苏勇

产品 行业分析 智能设备

《Linux就该这么学》笔记(一)

编程随想曲

Linux

Using R for everything: 方差分解(Variation partition)变量筛选与显著性标注

洗衣机用户不会用洗衣机

数据分析 R

C语言if分支结构

C语言技术网-码农有道

C语言 C语言if分支结构

如何扩大我们的英语词汇量

七镜花园-董一凡

英语学习

面试官竟然一直和我聊线程的启动和终止

Simon郎

大数据 后端 多线程 Java、

JavaScript 学习笔记——数据类型

zjlulsum

JavaScript, 前端 学习笔记 类型推断 入门

你还在这样使用MYSQL吗?

无箭的丘比特

MySQL 数据库 数据库规范 数据库设计

办公人员的 python 妙用——抽签结果提取

Sicolas Flamel

Python 远程办公

【Howe 学 JAVA】Java 类集框架1——List集合

Howe

Java List 集合

C语言运算符

C语言技术网-码农有道

C语言 运算符

当前的经济形势,如何让自己免于风险?

鼎玉谷

探寻融云多年领先的秘密:不断创新贴近开发者真实需求

DT极客

CentOS7使用Iptables做网络转发

wong

Centos 7 iptables

MacOS使用指南之我并不需要系统菜单栏

lmymirror

macos 高效工作 完美主义 操作系统 新手指南

工具集系列 02|还在为海报设计、LOGO 设计发愁?这些在线工具值得收藏

一尘观世界

效率工具 设计 海报 课程封面 知识付费

给应届毕业生们的七点建议

Neco.W

大学生日常 工作 应届毕业

保险知识梳理

魁拔

保险 生活质量

去哪儿网跨端小程序开发实践谈-InfoQ