写点什么

百度技术沙龙第 57 期回顾:新时代的前端(含资料下载)

  • 2014-12-26
  • 本文字数:2091 字

    阅读完需:约 7 分钟

2014 年 12 月 21 日,在由百度主办、InfoQ 负责策划组织和实施的第 57 期百度技术沙龙活动上,百度移动云事业部资深研发工程师张袁炜分享了如何将原生能力融入到WebApp 中,独立开发者郭宇分享了Node.js 的应用场景和存在的问题。本文将对这两个分享做一下简单的回顾,同时提供相关资料的下载。

主题一:Blend:融入原生能力到WebApp **(下载讲稿)**

为什么选择WebApp 作为开发方案呢?首先,天下武功,唯快不破。WebApp 可以随时更新,而一个原生App 的更新周期大概在14 天左右。其次,WebApp 的开发成本低,用原来的网页开发人员写一个移动端跑的网页即可,不用组建新的开发团队。

性能是WebApp 的软肋。另外,WebApp 缺乏端能力,不能适应复杂的应用场景。比如,不能说打开浏览器扫描下二维码。

如果有一种解决方案,能够融合Web 的灵活性(包括迭代速度和开发成本)和原生的能力,再加上一些原生能力,这是非常不错的。这就是HybridApp 解决方案。

业内目前已经有一些方案。比如Phonegap,它支持的平台很全面。但是全平台支持的代价是,API 数量不足。还有一个缺点是性能低下,没有对交互和用户体验做优化,导致体验很差。

再比如Titanium,可以编译成原生应用运行,但是学习成本高,要学习它的API 和架构;系统比较复杂,使用人数也很少,大概在整个市场份额里面只有5% 不到。

业内认知度比较高的HybridApp 方案,由于存在不少问题,所以百度的开发团队希望造一个不一样的轮子——希望提供一个提高性能、有融合能力的HybridApp 解决方案,这就是Blend。

Blend 的目标有三:

  • 性能
    • 又包括三个方面,一是转场动画,让它实现比较好的效果,跟原生 App 类似;二是离线缓存,避免在没有 WIFI 或没有网络的时候打开缓慢或报错;三是以原生方式提供一些组件,方便用户。
  • 能力
    • 比如说端能力,把它包装出来在 WebAPP 上面使用。再就是云能力,把百度的云服务封装成 API 开放给 WebApp。第三个是 UI 能力,比如说要做转场动画,在 WebApp 上面很难做到,必须用原生支持。
  • 易用性
    • 因为这相当于要求开发者完全抛弃掉之前的开发理念,然后重新接受一套全新的东西,这会导致推广很难,而且开发者学习起来成本也很高。所以 Blend 在易用性上有几个目标:一是渐进增强,比如有一个纯 WebApp,现在想把它弄成一个交互性更好的原生 App,只需要加一行配置或者是用某种方式去告诉框架。API 能简化就简化配置,在易用性上做了 Meta 扩展。另外就是推出一整套框架,让大家用的时候,只需要写自己的逻辑代码就可以了。

有了设计目标,回到关键点,性能、转场动画到底怎么实现。

张袁炜以百度文库的 WebApp 为例,介绍了转场动画的实现。刚才说了我们要解决的是刚才当 Blend 发现用户点击页面中某个链接,这个页面即将被刷新时,就去初始化 WebView,并且把它放在当前 View 的右边,遮住下面的层。其实里面的内容全都是 Web 的,但是转场的效果和动画是用纯原生方式来实现的。

在 Web 交互中,非常卡的东西用原生方式实现,其他所有的交互和开发用纯 Web 语言来降低开发成本。

接下来张袁炜介绍了开发 Blend 的过程中遇到的问题,以及相应的解决方案和思路。

首先是优雅降级和渐进增强。优雅降级,意思是做一个最强的方案出来,然后针对差一点的手机做一个降级的方案。渐进增强是针对最基础的环境来做,然后再在更高级的浏览器上提高的交互性能。

Blend 提供了一整套一站式服务,里面有很多组件,方便开发者使用。设计 API 的一个思路就是“简单就是美”。因为很多现有的框架很重,或者功能很强大,但是要学习可能就得花十天半个月,这样的框架可能叫好不叫座,所以要考虑简化开发者的学习成本。

Blend 的架构如下图所示:

从下往上来看,Blend 会支持三个平台,一个是 iOS,一个是 Android,还有一个就是纯的浏览器。首先说 iOS 或者 Android,可以在上面开发一个 Runtime,把原生的能力通过 js 的封装,把它的接口暴露出来给上面的 js 或者是页面调用。这是 Native 层,是用原生代码开发的。上面是 JsAPI,这一层提供了很多能力和很多交互组件供开发者使用。再上面就是 HTML API。

主题二:Node.js As Infrastructure——谈谈 Node.js**(下载讲稿)**

Node.js 的成长速度非常惊人,而且受到广泛的技术市场的认可,同时在国内外的公司也得到了广泛的应用。

郭宇结合自己的经验,介绍了 Node.js 的优势:

  • 前后端统一的设计提升代码复用度
  • 众多的开源模块降低开发成本
  • 支持高 IO Web 服务成本低
  • JavaScript 程序员还是蛮多
  • 部署简单方便,版本与环境可控
  • 处于升温状态的市场,广受支持

但 Node.js 也有一些劣势:

  • 编程模型复杂
  • 异步流程控制繁琐
  • Error Handle 成本高
  • 优秀的 JavaScript 程序员很少
  • 不适用于计算密集型应用
  • 社区规范、API 变动频繁

之后郭宇分享了自己的一些经验:

  • 如果你的团队成员小于 3 人,用!
  • 如果你的产品在起步阶段(A 轮前),用!
  • 如果你有 1 位以上优秀的 JS 程序员,用!
  • 如果生产环境主要用其他语言,不要尝试迁移
  • 放心的使用 Node.js 编写内部系统
  • 在熟悉之前,别让前端工程师触碰业务逻辑

演讲之后的圆桌讨论环节,参会者可以和讲师近距离交流,气氛非常热烈。演讲的详细内容,可以关注我们在网站上发布的演讲视频。

2014-12-26 12:291241
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 135.8 次阅读, 收获喜欢 35 次。

关注

评论

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

线性稳压电源和开关电源,到底有什么区别?

元器件秋姐

电源电路 元器件采购 元器件电商 元器件知识 华秋商城

以用户为导向,vivo打造安全新范式

Geek_2d6073

RocketMQ 5.0 API 与 SDK 的演进

阿里巴巴云原生

阿里云 RocketMQ 云原生

实践分享:30分钟在电脑端运行小程序

FN0

桌面应用 桌面应用开发

2 分钟,教你用 Serverless 每天给女朋友自动发土味情话

阿里巴巴云原生

阿里云 Serverless 云原生

聚焦年轻消费人群 百草味入围最受“Z世代”喜爱品牌TOP10

E科讯

10 分钟部署一个 API 工具

Scar 

开源 Serverless 接口测试 Vercel

数字化时代,企业需要怎样的数据中台?报名元年微课堂,一起来探索

元年技术洞察

数据中台

数据分析er看过来,五款工具有你需要的

葡萄城技术团队

数据分析 前端 数据可视化

vue和react的区别有哪些,哪个好

千锋IT教育

大数据 Hadoop 的五大优势

千锋IT教育

关于Web3.0,你了解多少?个推与您畅聊下一代互联网

个推

互联网 元宇宙 Web3.0

云原生网关的可观测性体系实践

阿里巴巴云原生

阿里云 云原生 云原生微服务

【倒计时4天】杭州专场-单元测试产品体验样板间,等你加入!

TRaaS

Docgeni 2.0 发布,开启自动化

PingCode研发中心

一路同行:开发者与华为云的2022

脑极体

鼎茂科技获得阿里云首批产品生态集成认证,携手阿里云共建新合作

阿里巴巴云原生

阿里云 云原生 加速器 企业招募

Kotlin变量的空安全(Null Safety)

子不语Any

android kotlin 11月月更

技术解读倚天 ECS 实例——Arm 芯片的 Python-AI 算力优化 | 龙蜥技术

OpenAnolis小助手

Python AI arm ECS sig

JavaScript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

【Redis】Redis AOF持久化

石臻臻的杂货铺

redis 11月月更

java企业级开发中常见的注入方式

千锋IT教育

首批!腾讯云通过金融开源技术服务能力评估

腾源会

开源

10月月更获奖名单出炉啦!快来看看你上榜没有!

InfoQ写作社区官方

热门活动

Redis6.0新特性、剖析线程模型(单线程和多线程)

C++后台开发

redis 多线程 后端开发 单线程 C++开发

Wallys/Introduction of DR9074 series network card/qcn9074/qcn9072/qcn9024/industrial M.2 card

wallysSK

QCN9074 QCN9024 QCN9072

扒去Spring事件监听机制的外衣,竟然是观察者模式

程序知音

Java spring ssm Java后端 后端技术

8分钟带你学会SpringBoot整合Redis来实现缓存技术

好程序员IT教育

redis Spring Boot

居民消费价格指数变化新鲜出炉,这类商品同比涨幅最大

前嗅大数据

数据分析 数据采集 居民消费 居民消费指数

Spring Boot框架下实现Excel服务端导入导出

葡萄城技术团队

前端 Excel 控件

基于Jmeter的百万级tps性能测试实践

环信

Jmeter 性能测试

百度技术沙龙第57期回顾:新时代的前端(含资料下载)_架构/框架_臧秀涛_InfoQ精选文章