设为首页 | 收藏本站欢迎来到卓越网络免费免备案CDN加速,DDoS和CC攻击防御,高防CDN管理平台!

已阅读

cdn加速平台搭建-JavaScript之快小而轻

作者:cdnfine      来源:cdnfine      发布时间:2019-05-14
当你必须仰起头来注视一样东西的时候,就会错觉那是真理。
——笛安《南音》
 
1
窗口
 
在上篇文章中讲到浏览器在移动端小屏幕的市场和前景,手机厂商在推出新产品时几乎都在同时推出各自的浏览器,希望“挤进”浏览器市场,从而抢占流量入口。浏览器这一网络流量的关口,至少目前还是保持移动端和PC端中Web业务的入口,浏览器的主页面拥有着广阔的内容场景和巨大的流量空间。当你打开浏览器,默认的网址是一个搜索框时,这就是流量的开端。如果加上一些新闻资讯,您偏好的内容就会越来越多的推荐给您。各个手机厂商没有占领移动端的浏览器市场,一方面是因为移动端浏览器技术上的问题还没有解决,再者是运算资源和处理速度的限制,浏览器除了要求机器性能外,用户体验还占有很大一方面,单纯的预装并不能抢占浏览器市场。推荐阅读:《CDN加速云计算发力助市值破万亿
另外,各个公司正尽其所能,目的是让大家忘掉浏览器的概念,从而没人关心浏览器,而只关心透过浏览器的网络有什么内容。现在,很多移动端应用软件(Application,简称App)都内置了浏览器功能,比如任一款强大的社交或是应用App。不是每款带有搜索框或者写明了“浏览器”的软件才叫浏览器,很多内置浏览器都“去掉”了浏览器的标签。比如没有显式的搜索框,没有显式的网址导航,没有浏览器的跳转、历史等功能。但这并没有说明它可能是一款改头换面的有着特定功能的“浏览器”。
越来越多的用户不愿意下载手机App,一是随着系统预装的增多,会导致并不宽松的移动端的内存严重紧张,虽然现在的移动设备的内存越做越大。二是某些App对用户的价值变低,这表明用户常用的App已经固定,超过3屏以外的App,其使用率将岌岌可危。这就使那些一次性、快用快走的“小”程序应运而生。Web、原生、快应用、小程序的崛起,不得不说是一场手机应用端的变革,它让直接面向浏览器开发的移动端网页程序转到了某个App上。因此而来的各种快应用,无非都是由原来的浏览器内核包装而来。我们可以看到,很多的快应用、小程序的页面设计和渲染模式以及脚本语言都和浏览器是异曲同工。
2
模式
cdn加速平台搭建-JavaScript之快小而轻
不知道您手机上有多少款App,如果您的一个需求可以用小程序来实现,您是否还愿意下载App来实现。或许,网页版本的PS早已经能满足很多非设计人员的需求了,再者,AutoDesk的CAD(计算机辅助绘图)软件,这一复杂宏大的项目也搬迁到了Web端。这些项目搬迁到Web端,除了满足了无需安装即时使用的需求,也满足了在任何设备都可以使用的目的。像这样除了下载安装需要网络外,其余几乎无需网络的应用软件向Web页面的进发,已经成为了一种趋势。首先,这些基于桌面的应用软件会率先推出移动端,第一个问题就是计算资源的限制和操作方式的不同,各种屏幕的显示以及不同分辨率的适应。
在这里,我们再来对比一下B\S(Browser Server)模式和C\S(Client Server)模式。基于C\S模式的软件主要是一些对安全级别要求比较高的社交软件和一些功能复杂、代码宏大的软件,再者,就是需要强大图形支持的游戏了。B\S的缺点是安全级别低,应用软件的权限受限程度比较高,各个页面的内容的缓存容量有限,相比之下,C\S在这几方面都有得天独厚的优势,此外,C\S还可以实现一些更好的用户交互和图形渲染。而大部分B\S可以实现一次开发,到处运行,无需考虑设备问题,也无需在客户端进行繁杂的更新过程。
如果在基于B\S模式加上一个浏览器内核呢?或者说给C\S模式添加一个浏览器内核,从而形成一种双重模式都兼顾的桌面应用。那么,B\S模式的缺点会不会得以改善,C\S模式会不会得到增强,原来的C\S和B\S的应用、功能、模式会不会有所改变?其实,市场上很多软件都基于Chromium内核开变成了B\S和C\S的双重模式。比如,阿里巴巴的千牛从网页端迁入到客户端,和原来的B\S模式功能几乎相同,但独立的桌面应用,而不再依赖浏览器,这可能本身就是一种赋能和优势。而WPS则在原来的客户端上嵌入了浏览器,浏览网址您甚至不需要浏览器。C\S和B\S的结合,或许可能带来崭新的功能,以及满足快速迭代更新的业务需求。
而在手机移动端,很多应用几乎都有浏览器的功能,您或许在一个有着内容推送的App内,可以访问到任何允许的网站,甚至您手机上安装的输入法或许就可以实现这个目的。这里,我们说的浏览器是从广义上来讲能提供页面式访问功能的App,不仅仅是指能够解析HTML标签、样式及其脚本的App。
3
渐进
 
这里,我们来做一个详细的解析,假设您需要买东西,您在浏览器的地址栏输入一个网址,网络服务商的服务器将返回给您一个页面作为请求的应答,您可以在这个页面和服务器进行交互,来购买您需要的东西。假设同时又有一个人同时访问了这个网址,服务器端又返回了一个页面给另一个客户,第二个客户也同样可以和服务器进行交互,来购买东西。这样,服务器端就同时产生了多个网页和多个交互数据(可能创建一个新的进程或容器),服务端需要分别保存您和其他人的数据来保证购买商品的行为被正确执行。这就是简单的并行过程,其实,当您访问购物网站时,你的页面和其他人的页面是相同的,而您的数据和其他人的数据时不同的。这是些浅显的道理,但假如我们来编写基于Web访问的服务端框架时,我们就需要考虑这一点:静态的界面只需复制,动态的数据需要并发。所以,当用户的请求合法时,服务端就可以向所有用户发送相同的页面了。这里所说的就是,Web服务除了需要将界面发送给客户端以外,其他的和C\S模式几乎是相同的。如果,操作系统给予基于Web的应用一些更多的支持呢?基于Web的应用是否会走的更好、更远?
具有广义式页面访问功能的App,能够实现基于移动端原生系统上的功能,这既保证了它能够使用系统特性,又能同时兼顾性能。如果该App能实现WebView的一些扩展,就能同时拥有浏览器端的优点,这和原生的浏览器相比,可能稍有性能差异。其实,某些App的内核,可能就集成有某些浏览器内核。基于浏览器内核的开发也有其自身的优势,典型的就是一次开发,到处运行,开发者可能不需要同时为拥有不同操作系统的移动客户端写多个不同的代码,从而可以实现快速、统一的开发流程和目的。同时,可以更快更好的实现某些网络服务和界面渲染。而基于浏览器内核的开发,使其无法访问某些原生的系统特性,使其开发受到了各种限制。如果,为浏览器内核加上某些原来没有的系统特性呢?于是PWA应运而生。
 
PWA Toolkit
PWA(Progressive Web App,渐进式接近原生App的Web App)可以让网页应用呈现和原生应用相似的体验。它是一种理念,在移动端利用标准化框架,使用多种技术来增强Web App的功能,可以让网站的体验变得更好,能够模拟一些原生功能。PWA有多个优点:不需要下载安装即可使用;PWA对缓存数据库操作支持的非常好,和原生App对Sqlite的缓存,以及对文件的读写操作相比,完全可以应对各种场景;拥有离线访问能力,如Google开发的Workbox来实现通用本地存储,这可以让您的Web缓存量成倍增加。
4
多面
 
PWA的身影不仅在移动端,在桌面端也可以发现。还记得我们前面文章里讲到的微软开发的VB(Visual Basic)可视化程序开发的思想,被誉为“西雅图夜空的雷电”这段佳话吗?它为在茫茫黑夜里编写程序界面的开发者,带来了黑夜里的光亮。这是应用程序进入C\S高峰时代的标志,它迎来了C\S模块开发的爆发。最近,在B\S上,基于浏览器内核的开发逐渐崛起,也引起了其组件和应用的爆发。如使用Node Webkit可以快速将Web应用打包成各个平台的桌面应用。此类组件还有NW.js和Electron,它们均可通过Web技术来构建桌面客户端,不但省时省力,而且用户体验良好,这类应用有钉钉客户端、石墨文档客户端等[1]。
如果您使用过Atom或者VS Code,那么,您可能对基于Web技术的文本编辑器非常熟悉,Atom是2014年推出的基于Web的文本编辑器,它的脚本文件叫atom-shell,后来发展成了Electron,Electron提供了Mac、Windows、Linux三个平台上的一些原生API,而在GitHub上火热的VS Code就是使用Electron实现的,它允许使用Node.js(作为后端)和Chromium(作为前端)来完成桌面GUI应用程序的开发。
 
VS Code
我们可以看到桌面应用以Web开发技术作为核心,以浏览器内核作为跨平台核心,最终将Web开发的代码和浏览器内核打包。这样使得前端开发相对简单,而且开发效率大大增加,开发时间则相对减少。有很多基于Electron构建的应用,比如微信小程序Ide、微信PC版等。值得一提的是,使用该技术重新实现的迅雷X10.1版本开始可以完美支持2K、4K等高清显示屏,界面中的文字渲染也更加清晰锐利。此外,Spotify(流媒体音乐服务平台)的PWA桌面版在Mac上也如丝般顺滑,水般流畅。同时,各大公司都纷纷拥抱PWA,如微软的Windows 10操作系统[1]。
 
迅雷
5
快小
 
不知道您是否能感受到快应用和小程序的热度,它们散发的能量已经辐射到大部分的终端。它们的特点是免安装、免存储、一键直达、直接推送。2018年3月20日,由小米、中兴、华为、金立、联想、魅族、努比亚、OPPO、vivo九家手机厂商将在北京推出“快应用”标准,该标准将在部分场景下取代App。而这是因为小程序的快速发展,严重影响手机厂商的应用分发和内容、广告等红利。
而各大手机厂商将基于安卓生态合力进击,试图重新拿回应用分发上的主导权。作为新一代移动端应用分发入口,小程序、快应用的趋势将继续明朗化,竞争也在急剧激烈化。战线从手机微信、QQ、支付宝、淘宝,再到谷歌的Instant App和PWA、Facebook的React Native[1],而今日头条、百度、京东、美团等也都推出各自的小程序。两者的区别有:快应用是手机厂商推出的,它基于Native渲染,性能体验会比较好。而小程序是各大互联网公司推出的,微信小程序是基于Webview渲染,因而对CSS(层叠样式表)支持较好,而快应用则可以调用丰富的系统API(应用程序接口),小程序则对此绵软无力。总之,您可以把快应用理解成Android桌面端的小程序,是您在其桌面搜索框里就可以搜索使用的。
 
9大手机厂商联合发布快应用标准
这里,谈一下微信小程序的由来,其官方网站上是这样说的:“小程序并非凭空冒出来的一个概念。当微信中的WebView逐渐成为移动Web的一个重要入口时,微信就有相关的JS API了。实际上,微信官方是没有对外暴露过如此调用的,此类API最初是提供给腾讯内部一些业务使用,很多外部开发者发现了之后,依葫芦画瓢地使用了,逐渐成为微信中网页的事实标准。2015年初,微信发布了一整套网页开发工具包,称之为JS-SDK,开放了拍摄、录音、语音识别、二维码、地图、支付、分享、卡券等几十个API。给所有的Web开发者打开了一扇全新的窗户,让所有开发者都可以使用到微信的原生能力,去完成一些之前做不到或者难以做到的事情。”[2]
 
微信小程序
微信小程序虽然是对WebView的封装,它与普通的Web开发还是稍有区别:小程序的逻辑层和渲染层是分开的,逻辑层运行在JSCore中,并没有一个完整浏览器对象,因而缺少相关的DOM API和BOM API[2]。此外,一些基于JavaScript的组件库和轻量级框架,也可能不能继续使用,如JQuery,Npm打包的第三方库等。
6
统一
 
这里,想要向读者介绍的是,Web、PWA、原生(Native)、快应用、小程序几乎都是使用JavaScript(或由其封装的框架)进行开发,或者说这些应用的前端技术栈都离不开JavaScript,但是它们基于的类库和平台不尽相同。例如,微信小程序的wxml语法、快应用提供的ux文件、百度智能小程序的swan文件、Google Flutter的dart还有基于React、Vue、Angular等轻量级数据驱动框架的Web应用。那么,能不能构建一个统一的开发平台,来消除小程序、快应用和Web应用之间的差异,以适配各个平台呢?
使用DSL(Domain Specific Language,特定领域下的语言)有利于实现这一目标。DSL是为了解决在构建系统时,使用者和构建者的语言模型不一致导致需求收集困难,而在模型之上建立的一种更加灵活的对模型化的理解和使用得”共同语言“,DSL有些像声明式(Declarative)编程,由它来建立统一的标准,其他平台对其实现或提供公共接口。拥有了DSL,就拥有了“共同语言”,从而统一词汇基础,用以构建上层语义模型。一些框架正在做这些事情,如基于Vue的DSL实现和Picasso的DSL实现方案。它们从渲染、解析、执行、适配,到打包、发布都提供了一整套的解决方案。大一统的时代会不会到来,我们拭目以待。
7
致谢
 
至此,从浏览器的诞生,再到浏览器大战,然后走向移动端小屏幕,再到移动端App的快应用、小程序和Native,我们用JavaScript来串联,让这个系列的文章失去了很多读者。不过,读到这里,感谢您的不厌其“繁”。到这里,这个系列应该可以算是正式结束了,本来在这里要做一些回顾与展望,但我们把它留在下一篇文章,以JavaScript本身来做总结与展望,以不辜负JavaScript以技术字眼来穿针引线。请看下篇:JavaScript之总结展望。

Keywords: 免费CDN加速 免备案CDN加速 高防CDN加速