JavaScript思考

JavaScript思考

按照现在时髦的取名方法,这篇文章的题目应该改为《大数据时代,你的前端开发落伍了吗?》。为什么要这样?第一,紧贴时代,人工智能、大数据、机器学习都是热门话题,必须贴着讲;第二,战战兢兢,烘托气氛,你说别人的前端开发落伍,别人可能心有怨言,点进来看也不一定。

好,闲话少述!在没有JavaScript和ajax的年代,用户输入的合法性验证还只能通过perl这类后端语言处理,如今,web应用早已经发生天翻地覆的变化,SPA、PWA等新概念层出不穷,web应用不仅要处理更复杂的用户交互逻辑,也要为用户处理、展示和操作更多的数据,这无疑给前端开发者带来了新的挑战,同时也促进了前端开发人员的改变,激发了一批优秀前端框架的滋生。

我们先来看看前端开发领域几个历史性的框架、技术与时代背景。

jQuery时代的前端开发

jQuery是前端领域一个革命性的框架,但是现在她的地位正受到严格的挑战,有人说,jQuery早已落伍了,跟不上时代的潮流。2006年,约翰·雷西格发布了jQuery的第一个版本,自此之后,jQuery用她简洁强大的api极大地改善了前端领域的开发和用户体验。有了jQuery,人们第一次感到操作dom是如此轻松的事情,而且由于jQuery还提供了许多兼容性良好的工具api、动画api、ajax api,以及良好的扩展架构,直到现在你依然能够看到很多jQuery社区的优秀产物。

可惜时代变了,backbone、angular、react、vue等众多MV**框架来了,撼动了jQuery的地位,但是在具体介绍这些框架的通类思想时,我们先来谈谈服务器端的代码架构。

MVC和restful API

我理解的mvc和restful api并不冲突,只不过因为mvc里存在的“V”,可以让后端语言如php、Java等进行前端胶水程度的开发,比如WordPress,作为全球最流行的cms框架,WordPress的前端代码可谓相当“壮观”,当你制作WordPress主题或者插件时,你必须得会点php、又会点JavaScript,这样你可以把html、css、JavaScript、php甚至SQL写在一个文件里了,所谓终极的大师就是把事情搞复杂,把代码搞混乱,但是不出bug。这一点连vue的作者尤雨溪也痛批不止,WordPress的创始人兼CEO matt还说道,这次版本发布不能修改太多,我们需要一步一步来。不过,所幸的是WordPress毕竟是一个内容管理系统,无需处理过多的数据,这就不影响WordPress的流行。现在不是有句名言吗:我就是想做个网站而已。

再谈restful API,随着职业分工越来越明确,后端工程师已经懒到连html都不写了,直接给一堆api让你调用,而且你再跟他谈一谈什么是对开发人员友好的API,他还会跟你探讨这样做后端反而不好处理。

所以综上来说,这个给前端开发带来了新的机遇和挑战,造就了前端目前的大环境。

MV**类的框架是为了解决什么问题?

据说马云十年前就已经带领淘宝进入DT时代了,所以前端上的MV**框架基本上也是为了跟上时代的潮流。jQuery的设计思路是以用户驱动为主,用户操作引起数据改变;但是面对大型数据应用加rest时,jQuery操作dom的弊病就显露无疑,你能想象后端给你传了一百个数据项,你把通过操作dom把数据渲染上去吗?这样的开发体验是及其糟糕的。这让MV**类的框架就变得非常实用,其核心思想就是数据驱动,没有了后端语言的胶水合剂般的功能,前端开发人员就要自己心疼自己了,选一款好的工具事倍功半。而且自从nodejs横空出世,js变得无所不能,前端开发人员心疼自己之后,还是得接着学习层出不穷的js runtime、framework、library、api。

除此之外,js社区突飞猛进,es规范开始一年一版,无论是js语法还是语言特性都充满巨大变化,MV**的思想也跟上了时代。

选哪一个MV**框架?

选择的问题最难处理,看你对哪个单词有好感吧。

经济规律的问题

话说社会上一切问题的根本是一个经济学问题,当然这个“话说”是我自己说的,但是我们怎么从经济学的基本道理去理解和解释前端领域的这种变化呢?而经济学主要关注成本和收益的问题,社会分工是为了更高的效率,以此来增加更多的社会财富,以前我们看到小公司的一个工程师包打一切,前后端打通,通吃三端,但是这毕竟需要太多的精力去处理不同的语言以及数据流沟通,所以我们看到nodejs出来,创业公司使用nodejs会不会效率更高呢,这只是我的猜测。

随着马云的大力鼓吹大数据,现在整个互联网界的数据变得和男人一样敏感,绝不称“小”言必称“大”,这也催生了很多新职位,比如说,现在的软件开发职位大致分为三种:软件开发工程师、数据工程师、数据科学家,薪资水平和能力要求也逐步提升,所以和传统的分类:前端开发工程师、后端、iOS、运维、dba等等完全不一致,这对软件开发工程师的素质要求更高,因为你总不能让我们公司首席数据科学家来写html吧!经济的发展,职业分类和影响程度也开始发生变化,这一切在不经意间改变。

总结

在总结里,我想谈一谈我的前端观念。你不要笑,虽然一般前端大神才有资格谈这个话题,那你也允许我一次。这个问题可以再进行一次转化:

问:那个XXX框架和构建工具你学会了吗?

答:我只是想做个网页而已。

作者: 曾小乱

喜欢写点有意思的东西

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据