一个HTML5老兵坦言:我们真的需要“小程序”么?
在PC时代,浏览器成为互联网信息的入口,并非因为它支持了HTML技术,而是因为它给人类带来了“世界是平的”的空间和理念,人类历史上第一次实现了信息的互联互通。
今天,微信虽然用了HTML5技术来做应用号(小程序),但是它并没有真正用到HTML5的精髓——开放、互联,也就决定了它无法实现“微信OS”的最终野心。
昨晚,微信发布了大家期待已久的应用号(正式名称:小程序)的内测,马上朋友圈就被刷屏了,一时间新闻稿铺天盖地,HTML5开发社区欢呼雀跃。大家都认为移动互联网迎来了一个新的“微信操作系统(OS)”时代,HTML5 Web App的春天来了。作为一名HTML5领域的创业老兵,也作为曾经的HTML5国际标准的制定者之一, 我本该激动万分,但是当我看完微信应用号的介绍之后,我却对“微信OS”的未来持保留态度。
应用号推出的确“恰逢其时”
历史是一面镜子,移动互联网的发展可以同PC互联网中得到很多借鉴,虽然表象不一致,但是本质是相通的。 软件程序有两种架构:一种是C/S(客户端/服务器);另一种是B/S(浏览器/服务器)。
移动端的APP和当年PC端的Windows软件都是C/S架构, HTML5和PC端的网页(HTML4) 都是B/S架构。 PC时代,早年是C/S架构为主,大家都是去下载网站下载Windows软件,这点和移动端去应用商店下载APP的过程是一样的。
后来,大家逐渐开始不去下载网站了,逐渐转向使用浏览器来获取信息, 以B/S架构为主。从C/S转向B/S的一个关键变量就是网络带宽速度,因为B/S依赖网络,只要网络条件一旦成熟,B/S就会大行其道。
今天移动端也正在经历PC端一样的进化过程,网络带宽越来越好,用户也越来越不愿意去应用商店下载了,我相信大家去应用商店次数都是越来越少了。
图:PC互联网和移动互联网的演进历史惊人的相似
今天移动端也正在经历PC端一样的进化过程,网络带宽越来越好,用户也越来越不愿意去应用商店下载了,我相信大家去应用商店次数都是越来越少了。
必须承认,腾讯是非常擅长做产品的公司,每一次产品迭代都做得很扎实。正当移动互联网处在从C/S架构逐渐转向B/S架构的风口上的时候,恰逢其时推出应用号,欲顺势干掉所有的APP应用商店,利用其庞大的用户基数以及微信内嵌的浏览器,成为一个应用分发的超级大平台,最终实现"微信OS"的超级大野心。
浏览器一直被认为是Web OS, 这个故事听上去顺理成章。 然而,事情并不一定会朝着这个方向发展,这里面有个重要的细节被忽略了。
“用了HTML技术不等于真正的HTML的平台”
Again,历史是一面镜子。微信并不是第一个做应用号的公司,早在2010年,在大洋彼岸,世界上最大的互联网公司——Google推出了基于Chrome浏览器的“应用号”Chrome App。然而就在上个月,也就是2016年8月,Google宣布停止支持Chrome App。
Chrome的活跃用户有10亿,比微信还多, Google也比腾讯更有财力, 为什么Chrome App伟大计划最终失败? Chrome App和微信应用号都有一个致命的共性: 虽然都是用了HTML技术,但是没有用到HTML的精髓。
当年World Wide Web(万维网)之所以能够一夜之间席卷全球,核心原因之一就是HTML的第一个字母“H”(超链接)。虽然是看起来是个很简单一个技术,但是折射了互联网的核心设计理念:开放、互联。
通过一个网址链接, 任何人都可以查看你发布的内容, 不需要经过应用商店审核,任何两个网页之间可以方便跳转。 而从今天的应用号发布的介绍来看,所有发布的应用号都需要通过腾讯的审核,而且应用号也是封闭,并不能和外部的网页自由跳转。
因此,今天的应用号只是用了HTML技术中无需下载安装、跨平台的功能, 并没有用到HTML开发互联的精髓。 它只是一个“用了HTML5技术的平台”,但不是一个真正的“HTML5应用平台”;它可以成为微信IM的一个重要补充, 但是成为不了一个人们期待中的“互联网操作系统”。 在互联网的世界里,只有开放才是最有生命力的。
真正的HTML5平台
Again,again,历史的确是一面镜子。在PC时代,这两个软件是大家最高频使用的: IM和浏览器。一个连接人与人,一个连接人与信息。 这是人类最基本的两个需求之一。
腾讯无敌的社交基因决定了它在PC和移动时代,都完美做到了连接人与人。但是,连接人与信息领域,并不是腾讯的强项。
随着移动互联网逐渐进入深水区,微信的简单内嵌浏览器未来将不能完全满足需求人们高效安全获取信息的需求,它的半封闭生态也将不适应互联网的开放互联的趋势。
浏览器——真正的HTML平台,将会“王者归来”,成为最高效安全连接人与信息的工具。
这个趋势在国外已经很明显了, Google今年4月份的时候宣布,Chrome浏览器移动版的月活跃用户突破10亿,最近5个月增长2亿!而且Google今年在抛弃掉Chrome“应用号”的同时也发布了重量级的HTML5新技术框架——PWA(Progressive Web App)。
HTML5一直被诟病的就是无法在离线状态下使用以及体验不够流畅。基于PWA框架, HTML5应用可以同时支持在线和离线,而且加速速度和交互体验有了显著的提升。通过PWA,HTML5相比App的缺点部分就被抹平了,而优点部分却很突出,因此被业界普遍看好。PWA已经在Chrome、Firefox、Opera等浏览器中都可以运行。
当“浏览器”王者归来的时候,用户可以更高效在互联网上冲浪,开发者可以更方便发布HTML5应用,尤其是对于中大型企业用户,可以更自主、可控的开发和部署企业级HTML5应用,那时候,我们还需要“小程序”么?
作者简介:
陈本峰,云适配创始人兼CEO, 国家“千人计划”特聘专家、中国企业级HTML5产业联盟主席、HTML5国际标准制定者之一、微软总部IE浏览器核心研发,国际互联网标准联盟W3C中国区HTML5布道官,专注互联网标准制定以及浏览器内核技术研究超过10年;2016年初,牵头成立了“中国企业级HTML5产业联盟”并担任主席,旨在推动HTML5技术的企业级应用进程;曾就职于微软美国总部IE浏览器核心研发团队,成功发布了IE8、IE9、IE10,参与了下一代互联网标准HTML5国际标准制定以及IE中HTML5引擎的设计。
作者:36氪的朋友们
一个HTML5老兵坦言:我们真的需要“小程序”么?的更多相关文章
- 动手开发一个名为“微天气”的微信小程序(上)
引言:在智能手机软件的装机量中,天气预报类的APP排在比較靠前的位置.说明用户对天气的关注度非常高.由于人们不管是工作还是度假旅游等各种活动都须要依据自然天气来安排.跟着本文开发一个"微天气 ...
- 利用css transition属性实现一个带动画显隐的微信小程序部件
我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说明)所以我们这个时候会 ...
- 耗时一个月上架了一款微信小程序,赚了2022年的第一笔副收入
今天不谈技术,只谈经历. 前戏 相信有很多的程序员都有一个产品梦,希望有一款属于自己产品.毕竟工作中遇到的有些"脑残"的产品经理不是一个两个,最后不得不因为"技术服务于业 ...
- VS 星期作业 if else的应用 做一个受不受异性欢迎的小程序
static void Main(string[] args) { //漏掉代码 输入错误 进行提示! string T1, T2, T3, T4, T5, T6, T7, T8, T9, T10=& ...
- Python 一个抓取糗百的段子的小程序
import requests import re #糗事百科爬虫类 class QSBK: #初始化方法,定义一些变量 def __init__(self): self.headers={ &quo ...
- 一个快速检测系统CPU负载的小程序
原理说明 在对服务器进行维护时,有时也遇到由于系统 CPU(利用率)负载过高导致业务中断的情况.服务器上可能运行多个进程,查看单个进程的 CPU 都是正常的,但是整个系统的 CPU 负载可能是异常的. ...
- 设计一个自动生成棋盘格子的JS小程序
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 一个随机验证码且不重复的小程序以及求随机输入一组数组中的最大值(Java)
1.代码: package day20181015;import java.util.Arrays;/** * 验证码的实现 * @author Administrator */public clas ...
- 命令行翻译 推荐一个linux系统中可用的终端小程序
程序的github地址:https://github.com/fanbrightup/fanyi 使用起来非常简单,同时支持中英文互译甚至是整句. 步骤一:首先你需要安装node,参见我的node安装 ...
随机推荐
- 动手学习TCP:客户端状态变迁
上一篇文章中介绍了TCP连接的建立和终止. 通过实际操作了解到,在TCP协议工作过程中,客户端和服务端都会接收或者发送特定标志的TCP数据包,然后进入不同的状态. 也就是说,TCP协议就是一个包含多种 ...
- java使用HttpClient传输json格式的参数
最近的一个接口项目,传的参数要求是json,需要特殊处理一下. 重点是这两句话: httpPost.setHeader("Content-Type", "applicat ...
- is A和has A的区别
is A has A Red is A Color: class Red extends Color{} class Blue extends Color{} class Yellow exrends ...
- 好玩的-记最近玩的几个经典ipad ios游戏
最近回了趟家,在家里闲着没事去app store找了找一些高分游戏玩一玩,下面就是我最近玩的游戏. 海岛奇兵 想必大家都很了解,这是由开发过clash of clan部落冲突的公司所开发的另一款多人策 ...
- UESTC 918 WHITE ALBUM --生成树变形
最小生成树变形. 题目已经说得很清楚,要求到达每个房间,只需求一个最小生成树,这时边权和一定是最小的,并且那k个房间一定与所有点都有通路,即一定都可以逃脱. 但是有可能当所有点都有了该去的安全房间以后 ...
- redis 一二事 - 设置过期时间,以文件夹形式展示key显示缓存数据
在使用redis时,有时回存在大量数据的时候,而且分类相同,ID相同 可以使用hset来设置,这样有一个大类和一个小分类和一个value组成 但是hset不能设置过期时间 过期时间只能在set上设置 ...
- Android代码规范----按钮单击事件的四种写法
[前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中声明onClick属性(很少用) 在XM ...
- GetComponent
GetComponent 的几种写法: 1.AutoRotation cmp1=(AutoRotation) GetComponent(typeof(AutoRotation)); 2.AutoRot ...
- Windows系统安装Oracle 11g数据库
一.下载 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html以下两网址来源此官方下载页 ...
- Java 枚举活用
/** * 联盟神兽.神兽资源枚举 * * @author TonyCody * @author 13-9-22 * @time 下午5:35 */ public enum LegionDogzTyp ...