#main img{width:100%;}

简介

理清 Native 和 Web 的亮点和痛点,借鉴对方亮点解决自身的痛点,并给出淘系 App 在这些方面的实践。

Mobile Web 的协作能力底层来自 Webkit,上层有 html/js/css 控制页面的结构/行为/样式,URI 连接不同的资源,这样的机制可以被 Native 借鉴,构建 Native 的分层架构。

资源

内容

天猫移动端GMV42% 年底推达 70%

Native 和 Web 的亮点和痛点

Native 融合 Web 的能力 VS Web 融合 Native 能力:

native通常用在:首页、搜索页、详情页、交易页等重要核心的页面,保证DNS垮了用户依然可以使用native完成核心交易
web页:频道、活动、促销等不是很重要或者频繁变动的页面

融合

  • native基础
  • web体验
  • react native

native基础

主要就是业务复用
两边分层架构对比
挑战:解耦
工具:耦合图-->清晰直观、发现问题、评估集成复杂性
//todo工具怎么用?

web体验

首次加载

问题:首次请求资源-->白屏、用户体验差
解决:业内普遍使用:打包静态资源到端,然后push到客户端

二次加载

利用浏览器自身的缓存机制,二次加载不用向服务器请求所有资源,速度明显快了很多
//todo打包系统?发布系统?有现成工具?

WebView  Crash  监控

监控:

  • crash上下文//todo 如何理解?
  • xcode自带调试工具[模拟器]
    • 应用:我司页面最高才耗74m内存,在安全范围内

crash原因:

  • js频繁执行占用内存
  • web本身在内存管理上是弱项
  • 图片解码也很占用内存

action:

  • 释放隐蔽内存:优化js性能

    • 困难:web生命周期内存释放不完全
  • 优化图片:
    • 无损压缩:使用1.5倍-2倍尺寸就行
    • lazyload
    • cdn质量控制:压缩到50%,内存优化大,视觉效果无差别
Hybrid API

问题: 各BU私有API
解决: 统一Hybrid方案

总结

打包、xList//todo、性能监控、HybridAPI、Native基础

react native

slogan: write once,run anywhere!learn once,write anywhere!

Native有更好的手势识别、动画效果、原生控件、合适的线程模型尽管Web Worker//todo可以解决一部分问题,但如图像解码、文本渲染仍无法多线程渲染,影响了Web的流畅性
我们需要native的人机交互+web的开发效率和发布能力

猜你喜欢 Web vs Native vs RN:

  • 内存
  • CPU
  • 启动时间

规划:

组件:

其他问题:

思考

自己的组件库//todo
引入RN//todo成本未知,暂时不

应用

我司暂时木有crash的问题

【QCon笔记】Native 和 Web 融合的更多相关文章

  1. Android开发—— Native 与 Web 之架构抉择

    前 言 移动App是对URL和搜索引擎的革命,当今移动App开发貌似出现两大阵营:Native 和 Web,各自都认为自己才是未来的趋势,Native操作流畅.迅速,Web开发周期相对较短,还能轻松跨 ...

  2. 什么是 Native、Web App、Hybrid、React Native 和 Weex?(转载)

    什么是 Native.Web App.Hybrid.React Native 和 Weex?   来源:zwwill_木羽 segmentfault.com/a/1190000011154120 一句 ...

  3. ASP.NET MVC Web API 学习笔记---第一个Web API程序

    http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...

  4. React Native & react-native-web-player & React Native for Web

    React Native & react-native-web-player & React Native for Web https://github.com/dabbott/rea ...

  5. Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较

    说明 Native.Hybrid.React.Web App方案的分析比较 目录 前言 参考来源 前置技术要求 楔子 几种APP开发模式 概述 Native App Web App Hybrid Ap ...

  6. Spring实战第八章学习笔记————使用Spring Web Flow

    Spring实战第八章学习笔记----使用Spring Web Flow Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序. 其实我们可以使用任何WEB框架写流程化的应 ...

  7. Spring实战第五章学习笔记————构建Spring Web应用程序

    Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...

  8. 《工作笔记:移动web页面前端开发总结》

    工作笔记:移动web页面前端开发总结 移动web在当今的发展速度是一日千里,作为移动领域的门外汉,在这段时间的接触后,发现前端开发这一块做一个小小的总结. 1.四大浏览器内核 1.Trident (I ...

  9. 技术实践丨React Native 项目 Web 端同构

    摘要:尽管 React Native 已经进入开源的第 6 个年头,距离发布 1.0 版本依旧是遥遥无期."Learn once, write anywhere",完全不影响 Re ...

随机推荐

  1. 阿帕奇apache服务器和webDav服务器快速配置。

    当自己在家敲代码需要发请求时,就可以配置本地apache,Mac电脑自带的服务器.这个比windows上的本地服务器还要好用,下面写下最快速配置方案. 0.在开始之前需要给自己的电脑设置下开机密码,想 ...

  2. 图解六大UML类图关系

    在学习UML类图的过程中,UML类图关系是必须要掌握的问题,UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. UML类图关系简介 依赖(Dependen ...

  3. android [因为开了刷机精灵等软件 导致adb 无法使用]error: could not install *smartsocket* listener: cannot bind

    今天 使用 刷机精灵后 在使用android studio 时发现 adb 无法正常使用.   于是 想重启 adb.exe , 直接在DOS里杀掉adb输入:adb kill-server 再启动输 ...

  4. GitHub Desktop 桌面工具,离线版本下载(无需考虑网络问题)

    http://pan.baidu.com/s/1qYq4X0C GitHub Desktop 桌面工具,离线版本下载 对于网络不好,不稳定,安装多次都不成功的,这是你们的最好的安装方法了.

  5. MySQL分表自增ID解决方案

    当我们对MySQL进行分表操作后,将不能依赖MySQL的自动增量来产生唯一ID了,因为数据已经分散到多个表中. 应尽量避免使用自增IP来做为主键,为数据库分表操作带来极大的不便. 在postgreSQ ...

  6. Extjs插入图片

    Extjs并没有提供直接的组件来显示图片.网上通过设置textfield的InputType为Image然后再修改dom对象来实现,其实 image的属性值并没有包含在Extjs的官方文档当中.可以通 ...

  7. 测试必备技能系列4:如何用SSH向linux服务器上传下载文件

    通过ssh方式,向远程服务器上传文件 非常方便 直接看老徐之前的文章http://www.51testing.com/?uid-497177-action-viewspace-itemid-37054 ...

  8. SQL Server(九)——事务

    事务: 保障流程的完整执行,就像银行取钱,先在你账上扣钱,然后存入别人的账上:但是从你账上扣完钱了,突然网断了,对方没有收到钱,那么此时你的钱也没了,别人的钱也没加上,事务为了防止此类情况的出现. 事 ...

  9. apache 虚拟主机详细配置:http.conf配置详解

    apache 虚拟主机详细配置:http.conf配置详解 Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd. ...

  10. JS代码判断字符串中有多少汉字

    $("form").submit(function () { var content = editor.getContentTxt(); var sum = 0; re = /[\ ...