前端、客户端主要是负责构建和用户打交道的界面,也就是 UI(user interface),而构建 UI 须要在不一样的位置显示文字、图片、视频等等,要分红不一样的区块和页面,为了简化构建 UI 的过程,前端、客户端都提供了相应的布局方案,甚至还提供了 DSL 来简化布局的描述,好比前端的 html、css,安卓的 xml 都是用来简化 UI 描述的 DSL。css
基于这些布局方案,咱们能够快速构建出应用的界面,可是有的时候这些布局方案不适用,就须要本身绘制,这时候就要经过 canvas、webgl 的方式来绘制更灵活的 2d、3d 视图。安卓、ios等也提供了 canvas 的 api。html
绘制界面总体上就分为这两种,一种是基于各平台的布局方案的,一种是本身绘制,前者经常使用来作应用开发,后者经常使用来作游戏开发和一些可视化。这两种构建UI 的方式区别仍是挺大的,应用开发、游戏(可视化)开发是两条不一样的路。前端
基于浏览器的 dom 和 css 的布局方案的,也就是基于 dom 的,可使用一系列 dom api 来操做 dom,而后从新布局和绘制,经过这种方式来作各类交互。ios
而不基于 dom 的绘制方案,也会维护一套对象体系,好比 stage、sprite 等,而后在修改了对象的属性以后,从新绘制到 canvas。程序员
绘制时须要各类资源还有数据,而提供这些资源和数据的就是后端,后端经过 http、websocket 等方式来传输绘制须要的资源和数据,资源存在静态服务器,托管在 CDN,数据都存在数据库里,根据不一样的请求参数来进行资源的 CDN 的查找和数据的 CRUD,而后提供给前端。web
随着应用规模的上升,后端的提供数据的服务器和提供资源的 CDN 都会作分布式,经过部署在不一样地区的多台机器来保证效率和稳定。数据库
这就是 web 应用运行的基本流程。canvas
从开发到部署运行是有个过程的,这个过程就是软件工程的生命周期,从一次开发完全部功能的瀑布,到快速迭代的敏捷,从手动执行构建和部署,到彻底自动化的 devops,工程效率是愈来愈高的,这是一个必然的趋势。后端
做为 web 应用的开发者,要掌握前端的两种绘制界面的方式,掌握后端的数据库和 CRUD 以及提供接口给前端,掌握 CDN 的部署、后端服务的部署,若是应用规模大了之后还要掌握各类中间件和分布式的技术。此外,还要掌握 devops 的自动化的工具链。这些技能掌握以后,就是一个全栈开发者了。api
在完成功能的基础上,对于比较复杂的场景,须要作代码的设计,也就是架构,保证随着迭代代码复杂度不会失控。相对来讲,后端的复杂场景多一些,前端相对较少,因此后端谈架构比较多,但前端也有一些复杂场景须要架构设计,好比微前端,好比 vscode 的 ioc、service、多进程划分等。
从可以完成基本功能的全栈开发,到能处理复杂场景的技术架构,就是web开发程序员的成长路径了。