近期闲了下来,人一旦闲下来,有时间去思考一些问题。比如说思考一下这个问题:前端到底是个什么神仙工作,说起来也从事前端开发好几年了,但是真正在这里面收获的有什么东西么?
好像有,又好像没有。有是因为做过不少项目,各种项目,管理后台,weApp,H5,小程序,考勤系统,客服系统,分销系统,数据大屏展示杂七杂八的各种项目。但是学到东西了吗?学到了,但是又好像没学到。
对前端的各种框架都能写,也了解了一些底层的原理。但是有什么用么,好像也没什么用。工作中其实还是去写一些基础的业务代码罢了。
这是一个很矛盾的问题。有些东西在实际的工作中没什么用,但是你还必须得花一部分时间去学习它,而且最好能够做到精通,因为有些时候没准会有一个什么想法就能用的上,还是聊聊前端的概念吧。
早期,在大部分人看来,前端其实就是负责实现一些界面,然后负责调用一下后端的接口。通常这个界面只包含PC端,用到的技术通常有Javascript, css ,html。这个时候,互联网的技术刚开始流行前后端分离,然后有了前端
的概念。
这个时候的前端主要是负责将UI设计人员的设计稿转为Html代码,交给后端人员去套模板,或者借助一些诸如art-template
的模板编译工具去进行开发,在代码中加入一些前端界面上的交互以及和后端的交互。
再后来,移动互联网兴起之后,又出现了大前端
的概念。这个概念主要是将移动端相关的技术点引入进来,比如:响应式网页,React-Native,Flutter ,uni-app,appCan,cordova,小程序等一系列的移动端相关的技术点引入进来,实现从PC一端到客户端的多端或者全端的覆盖。
而泛前端
是我早上出门的时候忽然想起来的一个词。刚才搜索了一下,其实网上也有这个概念,这里只谈一下我对它的理解。
这个概念可以从下几个方面去解读:
从表现形式上看,一切与用户直接相关的,由程序员负责实现的软件或者硬件,都可以称之为前端。前端的概念不在仅仅局限于我们日常开发中的网站,管理后台,小程序,游戏等等,其他的软件以及硬件设备,都可以称之为前端。
从技术实现上,随着我们的技术能力的不断提升,原先一些由后端负责的流程,逐渐的演变到前端人员也可以高效,高质量的完成工作,也可以归纳到前端的范畴,比如:项目的CI、CD过程。
技术上,通常情况下,对算法的掌握不是关键因素。但是如果某些特定的业务场景需要对算法才可以开展,那么相关的算法也可以归纳到前端的范畴。比如有这样一个场景:用canvas实现一套web版的cad制图工具,这个就需要很强的算法功底才能实现。但是往往我们的项目都是一些比较基础的业务代码,写起来往往能学习到的东西不多,即便我们能够很好的完成工作,但是成就感不大。
另外,随着我们对业务流程的熟悉程度不断加深,对于一些特定的场景,除了后端人员对它进行抽象之外,前端人员也能够对之进行抽象整理。从而沉淀出一些对项目的日后的发展有借鉴意义的技术,这个也可以理解为前端的范畴。
前端只是前端,大前端可以理解为全端,而泛前端则是对前端以及大前端的深化。除了能够胜任开发任务之外,还要对业务的场景,未来做好规划,而这个规划的实现,一方面需要个人的技术作为支撑,另一方面需要个人的眼光作为方向。
这里可能会衍生出另外一个话题。
我们每天都在做项目,项目是实现的业务,那么业务是实现的什么呢?其实业务实现的是场景,一个用户需求的场景,那么这个场景又出现的什么地方呢?这个场景其实是行业中的一个问题。
追本溯源,写这个项目,除了能让你用某个框架更熟练之外,你能在这个项目中学习到行业知识吗?或者针对某些特定的场景,能给出比较满意的解决方案吗?
这个问题值得思考。