frontend9 / fe9-library

九部知识库
1.94k stars 138 forks source link

中台前端程序员的技术铺垫 #30

Open xc1427 opened 6 years ago

xc1427 commented 6 years ago

备注: 本文仅代表作者观点。

在一个中台系统内,前端与后端并不是架构上匹敌的两方。前端工程的切实定位是:连接用户和系统的桥梁。一个系统好比冰山,说它有十份,前端是那暴露在水面的两份,还有八份在水底。上游对接 UI 和交互,下游对接后端。要讨论中台系统的前端技术发展出路(不讨论程序员的基本素养),需要从以下点出发:

  1. 前端的实质
  2. 前端工程在中台系统中的定位
  3. 整个计算机的行业趋势

中台系统: 中台系统是一类面向特定用户的信息系统,使用者多是计算机专业领域人员而非 C 端消费级用户。比如公司内部系统监控平台,运维系统,云系统的控制台。

前端实质

中台系统几乎都是 web 系统。web 前端的实质是浏览器技术,而浏览器是在 http 层工作的软件。 前端工程师首先需要在自身领域深耕。需要扎实掌握基础技术:

html, css, javascript, es.next, typescript
# typescript 趋势无法阻抗

前端已经走向了工程化,技术栈收敛到了某些特定的框架和工具,这些也是必须掌握的,

- 至少一个 UI 框架(React/Redux,Vue 等)
- 工程化工具(webpack, babel, node,CI 工具等)

浏览器是跑在 http 协议上的软件,所以和 http 有关的知识也是必须的:

- 流行 ajax 库的使用,比如 axios, fetch
- http protocol(cors, csrf, proxy, http header, http2, cache, etc)
- 流行动态 web server 的使用,比如 eggjs, express
- 流行静态 web server 的使用,nginx

浏览器技术的任何趋势也应该是一个 web 前端工程师关注的方向,比如,

PWA, serviceWorker, http2

「异步」是前端开发中最为常见的场景,所以需要掌握:

一种描述异步的模型:Promise, Generator (co, redux-saga 等), RxJs

中台系统中的前端

一个优秀的工程师除了在自己的领域深挖以外,也应该要熟练掌握上下游的技术栈。 中台系统多是基于 java 构建的,在这层上一个前端工程师应该掌握:

- 一门 java mvc 技术,比如 Spring MVC, Sofa MVC 4
- 数据库技术(你需要懂别人的领域建模)

你的系统要和用户打交道,设计师只能给你指导,实现者还是前端工程师。掌握一定的交互知识和设计工具是必要的:

- 交互知识:Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability
- 一个 wireframing 工具的基本使用,比如 sketch,axure,OmniGraffle

行业趋势

在可以看到的未来十年内,引领和驱动行业、影响社会的技术是:1. 云技术。2. AI 技术。 云技术虽然已经发展多年,还远未达到它盛开的阶段,AI 技术才是方兴未艾。

云技术的发展与当年微机操作系统的发展在某些模式上及其相像,四十年前的人们无法想象今天操作系统和应用软件的安装升级是一个普通用户就能搞定的,以 Docker、K8s 为代表的容器技术已经为云的发展打开了一片广阔的蓝海,我们无法想象今后的云变为什么样子,但可以确定的是云将无处不在,云的使用将会异常简单,所有的复杂度都将会被标准化的技术所吃掉。以后只会有端和云的区分,而不再有前端和后端的区分。

AI 是计算机能力的分水岭,在这以前的计算机只有计算能力,而之后的计算机将会有推理和决策能力,人类的大量计算工作已经在几十年间被各种计算机和芯片所取代,可以预见人类的推理和决策工作也将普遍被 AI 芯片所取代,届时人类的将会去从事创造性的工作,目前看这个是计算机无能为力的。

在这样的大背景下前端工程师将何去何从?我认为短期看是 数据的可视化呈现。云的运转离不开各种全局视角,AI 的推理终究要表达给人,作为机器与人交流的桥梁 - 前端,如何把这些信息友好和快速地展现给用户,是一个持续存在的工程领域。所以为了迎接行业趋势,前端工程师需要:

- 熟练掌握一门绘图工具,比如 G2/G6,D3,echart,tableau 等
- 以 webGL 为基础的渲染工具
- 熟练掌握统计学和图论的知识
- 容器技术和云领域知识(Docker、K8s, Service Mesh, 中间件技术)
- AI 领域知识(智能决策,智能识别,TensionFlow)

总结

前端技术要解决的本质问题是 计算机系统中数据的展现和传输,「展现」是面向用户的功能概括,「传输」是面向后端的功能概括,这之上所列举的各种技能都是为这两个目标所服务的。当然你也可以说前端工程师可以用 js 语言开发 node.js 服务端应用,但其实你已经在谈全栈开发而脱离了狭义的前端技术范畴。

题外话

目前大学是不会把前端技术作为必修课的,如果你是一个在校的大学生,那么在学好计算机专业课的同时,请先从 React/Vue 和 es6 入手,同时在学习过程中持续补充 javascript,html,css 等基础知识,争取在一年之内达到能够写得出一个中小规模前端应用,看得懂别人代码的程度。

本文框定了web 前端这个范围,native 与前端的融合目前看也是一个大趋势,前文说到在将来我们只会有端和云的区分,所以 native 上的端技术上也是一个可以大有作为的领域,目前看 flutter/react native 以及 h5 容器技术/小程序都是可以深入的方向。

lulious commented 6 years ago

good !

bupt-lxl commented 6 years ago

受益匪浅!AI确实势不可挡且潜力无穷!get一份学习清单~

chenkan commented 6 years ago

棒 💯 思路清晰又透彻,受教了 ❤️