HTML5技术

你自认为了解微信小程序?醒醒吧! - 无为方能无不为

字号+ 作者:H5之家 来源:H5之家 2016-10-14 11:00 我要评论( )

小程序目前被炒得沸沸扬扬,无数业内业外人士都对此雄心勃勃,希望占据先机,借此一统江湖,千秋万代。这再次证明一点,微信想让什么火,什么就能火。这种能力目前在国内估计也是无人能出其右了 好了,废话不多话,言归正传。作为一个要成为成功人士的男人,

小程序目前被炒得沸沸扬扬,无数业内业外人士都对此雄心勃勃,希望占据先机,借此一统江湖,千秋万代。这再次证明一点,微信想让什么火,什么就能火。这种能力目前在国内估计也是无人能出其右了……

好了,废话不多话,言归正传。作为一个要成为成功人士的男人,利用国庆的时间,我好好的研究了一下微信小程序,发现网上很多言论对于微信小程序的言论,在一定区间存在理解上的误区。接下来的内容,我假定你已经初步的了解过微信小程序,如果你还不了解,请移步开发文档,然后再回来阅读本文。

一、小程序到底是不是Html5

 

关于这一点,网上引起的争议其实是相当大的。最初大家的认知一边倒的认为微信小程序就是用Html5来开发,然后当小程序真正出来之后,大家发现原来小程序跟Html5只是比较相似,但具体的规则和写法却有着一些差异不同,例如:


小程序的代码目录

上图为一个小程序的代码目录,后缀名分别是wxml、wxss和js。不过微信对wxml的全称定义也不是weixin xml,而是WeiXin MarkupLanguage,很霸气的要自成体系感。自然wxss也是WeiXin Style Sheets,一样的希望给人牛逼哄哄的感觉。

下面是一段wxml示例,相对于早期的xml,扩展了花括号模板的写法。


wxml示例

到了这个阶段,部分质朴的同学就开始比较凌乱了,于是又有一种见解出现,那就是微信小程序不是Html5。好吧,我必须承认,我也一度纠结过,你看,这刚好证明了我是多么的质朴。但在经过更加深入的分析和研究之后,我想表达一个观点,

同时通过分析小程序的运行原理,微信小程序在本质上其实就是Html5,小程序的开发过程会用到大量HTML5相关的技术,但并不是全部使用HTML5开发。有 HTML5经验的前端工程师学习微信小程序的开发相对会更容易一些。微信小程序的运行并不需要一个完整支持HTML5特性的标准浏览器内核,但也可以通过添加一些辅助设施,让小程序在个完整支持HTML5标准的浏览器上运行起来。

关于让让小程序在个完整支持HTML5标准的浏览器上运行起来,有兴趣的同学具体可以参见让你的微信小程序运行在Chrome浏览器上。

那既然微信小程序的本质就是Html5,为什么微信要如此大费周张的来封装成我们现在所看到的样子了?作为一名产品汪,我的职业病瞬间就爆发了,而且是晚期,无可救治。按照我自己浅陋的推断来看,可能存在以下两个原因:

第一个原因,是借用网上不少产品人士的一种观点,那就是微信需要通过这种方法来转化开发者,这些开发者未来会逐渐演变成“微信OS平台”的忠实开发者。其实开发者通常都有患有“斯德哥尔摩综合症”,一旦在一个平台上投入了智力资源进行学习,就会开始下意识的维护这个平台(比如看不到平台的缺点,只看到平台的优点)。如果使用HTML5作为开发方式,那么现在小程序聚拢的开发者都是为了流量来的,并没有投入额外的学习成本,对平台不够忠诚。当然这个推断是否正确,无法评价,只能说是一个仁者见仁,智者见智的问题了。

第二个原因,是从技术的优化角度来推断的。众所周知,Html5在短期内,相比于本地应用依然存在无法忽视的性能缺陷。因此也有可能是微信通过完全重构了一个内置的解析器(大概有点类似于NodeJs),在优化提升性能的基础上,去除了对性能影响比较大且不是必须存在的部分之后,所得到的一个综合性的解决方案。如果是这样,那自然不能再引导众多的开发者直接使用原生的Html5技术来实现小程序的开发了。与其事后陷入各种Html属性、特性不支持的吐槽声中,不如直接开始就是一刀切,即避免了麻烦,又能符合自己新产品的定位和需要。当然这一切仅代表我个人的观点。

第三个原因,是部分技术大牛从技术突破角度来推断的。比如,也许小程序压根就不是一个B/S的结构,而是一个C/S的结构。很多人不明白c/s应用为什么也可以即点即用,不用安装。其实这不是微信的首创,首创是一种叫流应用(想了解详情请百度)的技术。只要是动态语言,加上合适的算法,就可以先下载部分程序并运行,然后边用边下,类似于流媒体。我个人认为这种可能性不大,因为我很好奇如果真是这样,那微信对小程序的空间占用问题会怎么管理?

好吧,分析到这里先告一个段落,主要是我已经吃药了,产品汪的职业病得到了有效的遏制。回顾我们开始提出的问题,就目前所能掌握的情况,我们可以很明确的得到一个结论:

微信小程序本质上就是Html5,或者说是一种优化过之后的Html5。

而至于微信为什么这么做的原因,我相信,随着微信小程序的测试账号进一步开放,我们也能够了解到越来越多的信息,届时有机会,我再继续为大家作一些粗浅的分析。

二、移动网站或WebApp能直接改造成小程序

其实,之所以会保留这个认识,主要是由于过去微信公众号的二次开发经验,很大程度上给到了我们很多人先入为主的观念。

但通过我们上面所分析的第一个问题,可以知道仅管微信小程序本质上就是Html5,但实际上却是一种优化过之后的Html5,这也就意味着绝大多数的移动网站或WebApp直接改造成小程序的难度很大,因为里面有大量的内容需要重写。比如:页面的JS脚本逻辑在是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能再脚本中使用window,也就无法在脚本中操作组件,更意味着zepto/jquery这些框架一个都用不了。

我认为,在相当大一部分情况下,一个以前已经写好存在的HTML5页面,并不能通过自动转换工具变成一个合法的小程序Page,而需要有工程师根据HTML5页面的功能,使用微信小程序的框架再实现一次。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 先了解这些 Web App ,你可以少走很多弯路 - Willard

    先了解这些 Web App ,你可以少走很多弯路 - Willard

    2016-07-07 10:00

  • 学习ASP.NET Core,你必须了解无处不在的依赖注入 - Artech

    学习ASP.NET Core,你必须了解无处不在的依赖注入 - Artech

    2016-07-06 10:00

  • 深入了解CSS3新特性(转) - sunshinegirl_7

    深入了解CSS3新特性(转) - sunshinegirl_7

    2016-04-09 17:00

  • 你对position的了解有多少? - jerrylsxu

    你对position的了解有多少? - jerrylsxu

    2016-02-14 11:02

网友点评
'