作者 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

【CSDN 编者按】目前小程序的生态众多,有微信小程序、支付宝小程序、快应用、百度智能小程序、今日头条小程序等,应运而生的小程序多端框架也有很多,例如滴滴的Chameleon、美团的Mpvue、京东的Taro、腾讯的WePY等。

这些框架虽说实现“多端兼容”,但不是全部兼容的,由于快应用与小程序有一定的差异性,据了解,上述的几款开源框架均尚未支持快应用。

目前有这样的一个“神器”:可同时支持快应用和小程序的开源框架,实现一处编写多处运行的转译,并且支持拆库开发、按需打包业务代码等功能。

它便是由去哪儿网大前端团队研发的娜娜奇(nanachi)小程序快应用转译框架。

下面由CSDN(ID:CSDNnews)协同去哪儿网技术学院专访去哪儿网技术总监、公共技术部大前端负责人黄庆(昵称:Neo)去哪儿网公共技术部前端架构师钟钦成(昵称:司徒正美),一起来解开这个多端神器nanachi的神秘面纱。

快应用小程序一键转译

CSDN:nanachi框架的特性是如何?对比其他公司的框架,优点是什么呢?

Neo:nanachi拥有许多特有的功能:

第一,智能WebView化,这样可以减轻小程序体积的压力。众所周知,小程序对体积的要求比较敏感,我们的应用拥有很多业务模块,所以需要将一些非重点的业务挂在WebView上。

第二,nanachi能支持快应用。据了解,上述几款框架均未支持。快应用是基于12大厂商推出的,相信未来快应用市场将对我们尤其重要,目前快应用也给我们带来不少流量与收入。

目前,我们支持平台框架转译,譬如你将一个标准的微信小程序框架源码,放在我们框架里,可一键转译为快应用,当然还支持转换成其他平台框架。实现原理是:先将原生微信小程序代码转换成nanachi代码,再由nanachi转换成其他各种小程序、快应用的原生代码。

第三,内置自动理点与上传功能,方便改良产品,其他框架没有这个功能。还有可以做自动测试回归,因为现在的小程序都是多平台,如果每次修改完都需要回归测试的话,人力成本会很高。

这对于我们完善工具链是很重要的,因为很多框架只关注开发这块的使用,但据我们之前的经验来看,开发这块满足后,还需要关注这个程序有没有问题,测试能不能提高速度,用户又哪些交互行为等,这些其实是很重要的,所以做工具链要做完整,而不能说只关注开发这一块,这是远远不够的。

CSDN:为什么没有采用上述的几个开源框架,而选择自主研发框架呢?

Neo:目前去哪儿网主要是React技术栈,从这个角度来看,京东的Taro和我们更吻合一些。其他是基于Vue的,(如果用的话)我们需要进行较大的改造。

目前来看,小程序还在快速发展中,我们平时也密切关注业界技术发展状况。不管是京东的Taro还是美团的Mpvue,GitHub上面的Issue还比较多,(他们)处理的周期也较长。

而且有一些框架对某些重要的平台支持力度也有限。我们常说,业务不等人。所以去哪儿网需要有适合自己的业务需要的框架,这是我们做nanachi的原因。

多业务部门发布小程序时,如何协同?

CSDN:去哪儿网有很多个部门,那么在小程序的发布上,目前各部门的协同工作是如何进行的呢?

司徒正美: 我们有一个叫chaika的工具,能让各个事业部自行开发自己的业务,放在不同的Git仓库中,最终chaika会将这些模块合并成一个完整的小程序,一键发布,其中合并和发布的过程不到1分钟。

目前去哪儿网小程序的模块有以下分类:

主模块:主要功能是整个小程序的一些全局配置和全局变量等, 如: package.json 中的 modules 是小程序所有模块的依赖配置。

公共模块:这是小程序中其他模块公用的模块, 包含一些工具类代码和自定义组件等。之所以把主模块和公共模块拆成两个模块, 主要是我们考虑到公共模块也可以依赖到不同的小程序中,但主模块算是单个小程序中特有的, 所以要区别对待。

业务模块:这是业务相关的业务逻辑代码, 完全独立可拔插。

前端多生态,后端如何做统一

CSDN:目前去哪儿网已对接微信小程序、支付宝小程序、快应用、百度智能小程序,那么后端服务是如何实现的呢?是一后端对应多前端,还是一后端对应一前端的方式呢?

司徒正美:目前是一套前端代码与一套后端代码加不同的登录支付逻辑。

CSDN:相比App,对比这几种小程序生态,开发难点各是什么?

司徒正美:目前除了微信小程序,其他小程序的非常不成熟,拥有各种奇怪的Bug或限制,网上的踩坑资料也很少。

CSDN:您对这几种生态有什么看法呢?nanachi的未来规划是如何呢?

Neo:能带来流量都要尽量试探。未来框架的发展还是以覆盖平台为主,目前和今日头条小程序、QQ小程序的合作正在洽谈中。

CSDN:对比微信小程序、支付宝小程序、快应用、百度智能小程序,去哪儿网在各生态的提供的功能服务有很大差异,例如在微信端提供的服务和App的差不多,而在支付宝、百度仅提供基础服务,这样部署是基于什么标准衡量呢?

Neo:这是历史原因,毕竟微信小程序出来早,我们公司在它上面已经迭代了许多功能。其他小程序是最近半年才开始开发,因此功能少些。但以后所有小程序与快应用都是同一套代码,功能会尽量保持一致。

团队开发资源分配

CSDN:目前是团队是如何分工的呢?是一个团队对应一个端,还是一个团队负责所有小程序端呢?

司徒正美:一个团队负责所有端,各个业务线会有专员开发业务代码。

CSDN:小程序和App目前的开发资源投入分配大致是怎样的?

Neo小程序投入的开发人员不到20人吧,App能达上百人。目前还是以App为主,小程序先占坑。

CSDN:去哪儿网小程序上有好多入口模块,请问每个功能项是写死的还是可配置的?

司徒正美:我们首页是通过一个叫Qconfig的服务实现,可以在线上自由地变更首页,用它灵活地上线或下线已有的频道

所以你可以看到,我们在微信小程序和快应用、支付宝、百度等渠道上线的功能模块有所不同。这都是可以自由配置的。

众多矩阵小程序集成,如何做容灾

CSDN:在去哪儿网小程序里嵌入其他好几个子小程序,如果某个子程序挂了,该如何容灾呢?

司徒正美:小程序是基于多WebView,挂了不会影响其他业页的。还有可以通过上面所有的Qconfig服务能将有问题的入口给及时下掉,无需重新发布上线的。

据了解,Taro、uni-app的技术团队均在进行兼容快应用的研发,而先拔头筹的去哪儿网nanachi也不断优化框架,加强框架转译的准确度。

那么作为小程序/快应用的开发者,你对这几个框架有什么看法呢?欢迎来留言哦。

国家认证的Python工程师有哪些能力要求?

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

嘉宾简介:

黄庆,去哪儿网技术总监,公共技术部大前端负责人。曾先后任职高德地图、阿里巴巴(北京)。作为移动互联网老兵,从最早的iOS/Android,到后面的H5/Hybrid,以及React Native都有涉猎。目前专攻小程序,对该领域保有极大的乐观态度。

钟钦成,网名司徒正美,拥有十年纯前端经验,著有《JavaScript框架设计》一书,去哪儿网公共技术部前端架构师。爱好开源,拥有mass , Avalon, nanachi等前端框架。目前在主导公司的小程序、快应用的研发项目。

框架传送门:

https://rubylouvre.github.io/nanachi/

 热 文 推 荐 

GitHub 近 100,000 程序员“起义”:向“996”开炮!

让苹果“沦为配角”的华为都发布了什么?

☞正在被蚕食的百度搜索

☞云漫圈 | 写给对 ”游戏开发” 感兴趣的朋友们

☞NLP泰斗董振东老师与他的知网 | 纪念

☞10分钟狂赚800枚比特币? 这个边玩游戏边赚钱的涂鸦少年做到了!

交恶微软、拒绝乔布斯,21 岁的他是如何开发出 Linux 的?

☞现实!程序员只有跳槽才能涨薪吗?

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在好看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

小程序多端开源框架黑马!它是如何做到快应用小程序自由转译的?相关推荐

  1. 风靡业内的跨端开源框架 uni-app 入驻 GitCode

    一套代码编到10个平台,对uni-app来说,早已不是梦想. 作为业内主流的跨端开发框架,uni-app可实现开发一次,多端覆盖,在GitHub上有26K+ star,由专注为开发者服务的DCloud ...

  2. 美团 iOS 端开源框架 Graver 在动态化上的探索与实践

    近些年,移动端动态化技术可谓是"百花齐放",其中的渲染性能也是动态化技术一直在探索.研究的课题.美团的开源框架 Graver 也为解决动态化框架的渲染性能问题提供了一种新思路:关于 ...

  3. python实现聊天小程序_Python使用django框架实现多人在线匿名聊天的小程序

    最近看到好多设计类网站,都提供了多人在线匿名聊天的小功能,感觉很有意思,于是基于python的django框架自己写了一个,支持手动实时更名,最下方提供了完整的源码. 在线聊天地址(无需登录,开一个窗 ...

  4. 49.现有移动端开源框架及其特点—MACE( Mobile AI Compute Engine)

    Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算设备优化的深度学习前向预测框架 MACE覆盖了常见的移动端计算设备(CPU,GPU和DSP),并且提供了完整的工 ...

  5. 苹果耳机AirPods Max(Pro)的空间音频技术,Unity端开源框架下载

    AIRX三次方会定期为大家推荐一些可移植性强的.可二次开发应用的.可落地实际场景使用的实战工程源码分享给大家.另外有优秀的demo或案例推广.解决方案对接的也可以联系我们(尾部有联系方式).本部分分享 ...

  6. Ionic 用于构建惊人的移动应用程序的顶级开源框架

    官网: http://ionicframework.com/ 转载于:https://www.cnblogs.com/harlem/p/6748745.html

  7. 深度学习自学(七):腾讯移动端开源框架ncnn学习总结

    一.支持的网络 Support most commonly used CNN network 支持大部分常用的 CNN 网络 Classical CNN Network: VGG AlexNet Go ...

  8. 前端 domparser未定义怎么解决_开源|wwto:小程序跨端迁移解决方案——微信转其他小程序...

    开源项目专题系列 (二) 1.开源项目名称:wwto 2.github地址: https://github.com/wuba/wwto 3.简介:wwto是58同城推出的一种小程序跨端迁移解决方案,可 ...

  9. ios 上传图片失败 小程序_微信小程序ios端 使用ajaxSubmit上传图片失败,android没问题...

    微信小程序ios端 使用ajaxSubmit上传图片失败,android没问题 微信小程序开发上传图片,使用ajaxsubmit,post请求,form设置multipart/form-data, a ...

最新文章

  1. 未找到beta版怎么解决_刚刚,谷歌正式发布Android 11 Beta版,带来多项重磅更新...
  2. Matlab与线性代数--矩阵的正交分解
  3. 从算法到硬件,一文读懂2019年 AI如何演进
  4. jquery $.extend() 对象内容合并
  5. Web 单点登录系统
  6. 成功解决ImportError: cannot import name 'PILLOW_VERSION'
  7. Python学习笔记:面向对象高级编程(中上)
  8. 远程访问ubuntu下mysql的问题
  9. 《黑天鹅》读书笔记(part2)--我们从重复中学习,但忽略了从未发生过的事件
  10. 机器学习之tensorflow出现的一些问题
  11. 窗函数性能分析——MATLAB
  12. Java删除指定值结点[递归]图解
  13. oracle表空间状态如何离线,六步了解Oracle表空间状态
  14. Gulp解决发布线上文件(CSS和JS)缓存问题
  15. 小希的迷宫(HDU 1272 并查集判断生成树)
  16. ARM 中断状态和SVC状态的堆栈切换 (异常)【转】
  17. sun认证 java怎么考_Sun认证Java开发员考试介绍
  18. 固态硬盘母盘制作 linux,网维大师母盘制作教程
  19. 机器学习预测股票涨跌
  20. 课程教学c语言遇到的问题,C语言教学中的几点思考

热门文章

  1. apache geode项目结构_使用IntelliJ IDEA+Maven 创建、开发、管理项目
  2. Golang slice高级应用
  3. Python的类成员函数、静态函数和成员的函数的比较
  4. System V信号量
  5. Tensorflow Estimator之LinearRegressor
  6. 中国通用电阻器市场趋势报告、技术动态创新及市场预测
  7. 中国丝裂原活化蛋白激酶8市场趋势报告、技术动态创新及市场预测
  8. 程序员不应该“躺平”
  9. 新荣耀员工现金补偿最高可拿 N+5;天津立法禁止采集人脸识别信息;IntelliJ IDEA 新版发布|极客头条...
  10. 2020腾讯全球数字生态大会:产业互联网战略升级,数字优先引领未来经济发展