前端综合

盘点近几年前端技术及其2016年技术发展方向

栈的融合

我刚接触前端的时候,还没有听说「全栈」,Web 技术栈往小里说,包含了从前端设计、交互、前端实现、网络数据传输、后端实现、后端运维和数据库等几个方面,能短时间内从无到有实现这么一套系统,并且能够抗得住一定流量冲击的人,我们可以称之为全栈工程师。能够有架构有条理地实现这套系统,并且抗得住大流量、有集成测试、有监控的,这种我们可以称之为资深全栈工程师。现在不乏这种人才,也不乏自吹为这种人。

栈的融合得益于 Node.js 的出现,作为前后端分离的桥梁,它拉近了前端工程师与后端的距离,有的人在这座桥梁上卖力行走,渐渐的也从前端走进 了后端,甚至走进了后端的运维。至此,前端也拥有了部署和发布整个应用的能力,这是一个质的突破。

使用 Node.js,简单几行程序便能实现一个 web 服务器、便能搭建一个多人聊天的网页,它的便捷性可见一斑。NPM 社区的发展,沉淀了成千上万的组件包,一行命令即可获取,这种组件拼凑式的开发,任何功能的实现都不会显得太复杂,而这里的「不复杂」也蕴含了无数的坑坑洼洼,在这一层的融合上也会遇上不少阻碍:

  • 冗余的庞大的包内容,为了使用一个小功能,我们从网络上拉取下来一个巨大的包,而且这里的「巨大」对很多人来说都是无感知的,很少会有人进入 node_modules 去查看依赖的第三方包是如何实现的,实际情况可能会相当震撼,第三方包还引用了一堆第三方包,这些包都会在 Node.js 执行的时候被收纳进去,放在内存中。
  • 猛烈的迭代,今年的 Node.js 被人嫌弃迭代太慢了(当然,这是表面原因),走出了一个分支 io.js,发展了一会儿,进度赶超了 Node.js,后来觉得一家人不干两家活,又合并回去了。虽说上层 API 几乎没有变化,但是底层却被翻了一个天。
  • 偶尔的巨大漏洞,每隔一端时间就会暴露 Node.js 存在漏洞,这些漏洞的补救措施就是立即升级版本号,比较让人担心受怕。
  • 后端意识不强烈,前端占领了中间层的开发,有的时候还干这后端的活儿,然而却没有后端沉淀多年固有的意识,测试和监控做的相当潦草。

JavaScript 从客户端的脚本语言纵身跃进进入了后端行列,而今也开始深入到移动端 Native 领域,确实是无孔不入,这可能就是语言的特性,也可能是技术本身就在寻求融合点,把有差异的地方全部躺平,然后用统一的方式去关注业务,关注用户。端和栈也在融合。

后端服务化,云数据,云安全

用户体验变得越来越重要,响应式技术的发展也是后续网页应用的一大特点,端和端之间的差异只是在表现上,数据这一层差异不是特别大,很多应用 PC 和 Mobile 共用一套接口,或者 Mobile 的接口在 PC 接口的基础上做了一层包装,对接口字段做了些许删减。后端为了响应各个端之间的数据需求,也需要关注数据的可利用性,接口包装的拓展性等,这是后端服务化的一个表现。移动端的开发上,前后端间隙十分明显,越来越多移动端应用的发布已经脱离了后端,前端完全通过异步方式获取数据。

业务变化很快很快快,今天这个产品被并购,明天那个业务被砍掉,每个人负责的业务线可能冷不丁地就变了。很多大公司的决策是由上往下的,上面微动,下面可能就是大动,可能某个部门就不存在了,也可能被划分成几个产品部门。

所以「大后台,小前台」的趋势必然形成。前端,毫无疑问,在这个前台之中。前台的特点是灵活的,多变的,可快速重组的。对后台而言,为了响应前台的变化,需要提供更细粒化的 API,将数据打散,打得更加零碎,零碎的数据易于重组,这是在考验后端的架构能力。如今,很多前端也都是半栈工程师,盘踞在前后端中间层上,然而如何迎接这种后端服务化的模式,似乎这个准备还是不够充足的。

GraphQL 的出现场景跟 React 类似,React 是前端应对不同场景的一种强有力手段,而 GraphQL 则是后端应对不同需求场景的一次尝试,Web APIs 将会成为 Web App 和 Mobile App 的一个中心点,前端基于后端的 RESTful 服务构建应用,这里面存在太多未知的问题需要探索,这是一个大数据下探索的新起点,也给前端开发者创造了无数的可能。

这几年各类网盘,各个云服务商都在抢占市场,有提供图片储存的,有提供 CDN 静态资源缓存的,有提供大文件储存的,也有卖数据库服务的。种类繁多,而归根到底都是,你付钱给我,我提供储存和安全,还提供方便的 SDK 让你获取自己的数据。云服务卖的是一套服务,它是把所有人的数据风险集于一身,用强硬的技术做安全防御。云,赋予了我们无穷的想象空间。

三辆马车,我们还差一辆

开发功能对很多人来说是轻松活儿,基本的前端语言加些复杂的特效,实现成本不会很高;即便是搭建一个网站,使用 Node.js 社区中的框架也能够轻松实现。然后极少人会去关注每个功能点的测试,一个项目下来基本看不到测试用例,更不用说会去做监控相关的事情。结果就是,踏过了无数的坑洼之后终于上线了,而后续加功能的时候发现,加了东西就跑不通,新内容影响了之前的逻辑,只好去修复之前的逻辑,修好之后发现更早之前的逻辑又不通了,整个修复过程就像玩多米诺骨牌。

程序开发三板斧:功能、测试和监控。在 github 上可以看到很多程序都加入了持续集成,这是一个好兆头,意味着我们写的程序也越来越健壮,至少贡献给世人使用的程序是健壮的。很多程序的代码覆盖率也达到了 90%+,这些数据都是重视测试的证据。


然而,三辆马车,我们最后一辆依然没有开动起来。很多公司都会有自己的 log 平台,每个用户访问页面中的任何一个链接都会将用户信息和访问信息以 log 日志形式收集到 log 平台上,然后通过监控平台或者离线分析的方式,获取业务数据或者技术数据,进行分析和二次开发。这些东西在大公司见的很多,而这方面的东西在前端,尤其是使用 Node.js 做程序开发的前端身上,看到的并不多。

(0)
Loading收藏(138)

本文由 前端网(w3cvip) 作者:琴歌 发表,转载请注明来源!

关键词:, ,

热评文章

发表评论

*