2018年的前端架构师都在干嘛?

简介:

前言:本文整理自自己在知乎问题《2018年的前端是否有『架构』可言?》的回答。据说是有掘金限量笔记本可以拿,于是很没骨气地整理成文章发出来。如果大家也喜欢掘金的笔记本,也来发文章哦。

皮一下

一,明确下架构的定义,在知乎的这个问题中,题主说“整个后端的架构是非常复杂和庞大的,一个好的架构师需要在数不清的方案组合中进行架构选择”。看起来架构似乎是一个在无数方案组件中做选择的问题。

所以,如果回答“前端的方案组合很多,所以架构也很麻烦”,是否就可以回应这个问题了。那么,前端方案组合多吗?确实是多如牛毛吧,比后端多很多很多吧。

以上是牛角尖。

一、关注点

后端架构的目标,题主也说到了,高性能、高可用、可扩展、安全。

至于后面说的那么多知识点,虽然都是有用的,但是不免有些掉书袋了。高可用有各种难点,有各个方面的高可用需要关注,但事实上,后端经过这么多年的发展,尤其是海量用户场景大量出现以后,这些问题的解决方案也都非常明确了。如果不明确的也是业界公认暂时无解的问题,例如分布式CAP等。至于其中碰到的具体问题的的具体技术上的策略,如果还需要自己从头去想,那这个后端工程师(还不叫架构师)应该是不合格的。我理解,做后端的架构其实基本上是在前人整理过的各种场景的解决方案中做选择。

那么前端呢?目标也是高性能、高可用、可扩展、安全吗?所以只要数据库不用选,语言不用选,框架三选一,架构就简单了?我认为这是对前端的关注点理解不到位的体现。

二、前端的核心关注点——用户

作为前端工程师,关注点是什么呢?首先就是用户,包括用户侧的操作和用户体验。

例如一个界面给到用户,比如报错是红色文字还是输入框变红?Loading放顶上还是页面中间?用户点击提交后按钮显示Loading还是灰掉?转菊花还是骨架屏?先显示占位图还是先白屏?

再比如用户访问我的网站快不快,用起来爽不爽,会不会觉得卡,会不会觉得low。这些东西会决定你的页面是单页面还是多页面,URL如何设计,加载策略是什么?

我认为这些才是前端最该关注的东西。

所以我做的架构一点都不高大上。仅仅是决定如何让网站加载更快,如何不引入不必要的代码,把不必要的代码干掉,如何让用户加载最少的内容,如何让用户最快看到效果,前端渲染还是后端渲染,同步输出还是异步输出等等。

是不是觉得一点都不是架构师干的事?但前端构架师确实就是在干这些事。所以,你要说前端架构师是一个技术上的架构师,倒还不如说是更关注用户的体验架构师。从这个角度来说,前端架构师和跟后端架构师的关注点不在一个维度上。

三、工程难度

题主说,“最多算上错误监控、埋点方案、缓存策略等偏运维的决策”,仿佛这些是一句话可以搞定的很简单的事情。

是,后端错误监控不难,无非try..catch嘛,再不济进程挂了还有各种运维工具可以救人于水火。但是前端呢?一个ajax加载失败了怎么监控,一个css加载失败了怎么监控,再极端一点,浏览器卡死了怎么监控,页面崩溃了怎么监控?

至于埋点,能做得好的我都非常佩服。连用户关闭了你的页面都监控不到,还想通过埋点来获取业务和技术数据?

至于缓存就更奇葩了,到底有没有缓存,到底是200还是304还是没有请求了,到底版本对不对,到底有没有被代理瞎搞,到底这个神奇的浏览器是怎么处理缓存的……别以为说一句“加个缓存”,就这么轻轻松松地搞定了。每一个把缓存玩好的前端工程师都值得尊敬。就不说更多的什么localStorage/serviceWorker之类的了。

说这一大段,并不是要说前端架构师搞这些很苦很累,你们要尊重我们。而是想说,这些不起眼的事情,不如想象的那么容易,很多时候架构师是在帮助工程师探路或者踩坑,把这些东西的技术方案搞定。

四、面向团队

现阶段的前端工程化还不成熟,这是个切实的情况。架构师在项目选型的同时,有相当部分的精力会放到工程化方案的选型上。是否用webpack,是否用npm,是否用TypeScript,是否用ES6/7/8,是否要babel,是否用PostCSS。是否要CI,是否要自动打包发布。是否要分包加载,是否要抽取CSS文件……

这些事,在后端可能不存在,在客户端可能也不存在,或者即使存在,也被IDE悄悄地代劳了。作为项目的选型者,写几个依赖,install一下就开工了。但是前端不行,前端这里有大量的工程化选型或者配置/开发的任务。

作为架构师,如何选择一套好用的、没有坑的语言/构建工具,也不容易。

我举个例子吧,大家可能觉得TypeScript很好,直接用不就好了吗?殊不知,TypeScript需要配置tsc或者webpackts-loader(现在babel也可以了),还有tsconfig文件,以及各种.d.ts文件。当然,即使这样,也有可能在写代码的时候报一堆无法解决的错误,需要你花大量的时间去研究为什么有这个做,怎样可以不报错(也可能根本就不能不报错)。当你在Vue中使用TypeScript时,你需要研究怎样让它识别Vue Component的类型,怎样做自动提示和类型检查。当你在ajax使用时会发现你要研究怎样将服务端返回的数据与某个类型映射起来(然后发现在runtime时毛用都没有)。

前端架构师,也有相当多的精力在这上面。

这是一个好的现状吗?未必,但现状确实如此,这个锅架构师不背谁来背?

五、小结

所谓架构,我理解是综合考虑目标、业界和团队,作为合理的方案选择,既能支撑业务的发展,又能令团队满意。如果能达到这个目标,自然就是一个好的架构。目前来看,前端要做到一个好的架构不容易,做的事情并不比后端少。

至于说前端架构师做的所谓的这些架构的事情是否高大上,那是另一个没有答案的问题。


作者:TooBug
链接:https://juejin.im/post/5b10b00de51d45069f5e0110
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
5月前
|
前端开发 安全 JavaScript
【实训项目】“我来拿”APP设计
【实训项目】“我来拿”APP设计
|
设计模式 机器学习/深度学习 SQL
软考高级系统架构设计师通关经验分享
为什么考系统架构设计师是国家设立的计算机技术与软件专业技术资格考试(简称软考)中的一个高级科目,属于工程师高级职称系列,具有一定含金量。浙江省每年通过软考高级的人数约为1000+人,其中系统架构设计师科目的通过人数约为200+人。从学习角度来说,通过准备系统架构设计师的考试的过程,可以查漏补缺,并且了解一些系统架构设计相关的基础知识,实现一定程度上的自我提升;从目的性的角度来说,通过考试,可以在一
9112 3
软考高级系统架构设计师通关经验分享
|
4月前
|
前端开发 JavaScript 开发工具
前端知识笔记(三十)———前端需要掌握的技术有哪些方面
前端知识笔记(三十)———前端需要掌握的技术有哪些方面
32 1
|
7月前
|
前端开发 JavaScript 小程序
预备金九银十,这套前端面试小册阁下请收好
预备金九银十,这套前端面试小册阁下请收好
56 0
|
9月前
|
前端开发 JavaScript Java
思维拉练前后端分离诞生记-系统学习八
通过5+6的需求的实现,以及不同版本的变化带来思考的过程;希望您用餐愉快。
|
9月前
|
运维 算法 架构师
又爆新作!阿里甩出架构师进阶必备神仙笔记,底层知识全梳理
据有关数据表明,目前Java程序员这个群体的数量不减反增,行业内的竞争也是越来越严重。在同一时间入行的人,经过一段时间的学习后,差距就会显示出来。其实出现这样的原因大多数都是因为学习的方向出了问题。大多数人学Java刚开始只是为了快速就业,但是在工作了之后却没有一个好的学习路线,那些其实很重要的东西只是因为工作上用不到从而忽略掉了,慢慢的才发现自己与别人之间已经存在很大差距了!
|
10月前
|
前端开发 架构师
前端学习笔记202304学习笔记第八天-架构师的思维设计需求1
前端学习笔记202304学习笔记第八天-架构师的思维设计需求1
42 0
|
运维 架构师 前端开发
前端架构师的一些思考和总结
![](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/neweditor/439fd5fe-4566-4a0f-b4f1-b72b7181daed.webp) 加入大淘宝到现在也有六年多了,一路走来很开心可以一直做技术。负责过业务、基础库、工具以及架构,期望自己不断成长。 想对之前的工作做一些思考和记录,也想为后续的工作找一个合适的开始。有蛮多
224 0
前端架构师的一些思考和总结
程序人生 - 如何让简历中的「项目经验」更出众?
程序人生 - 如何让简历中的「项目经验」更出众?
315 0
程序人生 - 如何让简历中的「项目经验」更出众?
|
JavaScript 前端开发 API
这种微前端设计思维听说过吗?
前言:最近有种感觉,好像微前端成为当下前端工程师的标配,从single-spa到qiankun,各种微前端架构解决方案层出不穷。那一夜,我在翻阅github时,留意到一个新的微前端框架,来自京东零售开源的MicroApp,号称无需像上面提到那两个框架一样需要对子应用的渲染逻辑调整,甚至还不用修改webpack配置。还有一个成功引起我注意的是:它把web-components的概念给用上了!让我们一探究竟!
165 0
这种微前端设计思维听说过吗?