前端和客户端主要负责构建与用户交互的界面,即UI(用户界面),构建UI需要展示文字、图片、视频等在不同的位置,被分成不同的块和页面。为了简化构建UI的过程,前端和客户端都提供了相应的布局方案,甚至还提供了DSL来简化布局的描述,比如前端的html、css、androidxml都是DSL用于简化UI描述。基于这些布局方案,我们可以快速构建应用界面,但有时这些布局方案并不适用,需要我们自己绘制。这时候我们就需要使用canvas和webgl来绘制更加灵活的2d和3d视图。Android、ios等也提供canvasAPI。绘图界面一般分为两种,一种是根据各平台的布局方案,另一种是自绘。前者常用于应用程序开发,后者常用于游戏开发和一些可视化。这两种构建UI的方式区别还是挺大的。应用开发和游戏(可视化)开发是两条不同的路径。基于浏览器的dom和css布局方案,也就是基于dom,可以通过一系列的domAPI来操作dom,然后重新布局绘制,通过这种方式进行各种交互。一个不基于dom的绘图方案,也会维护一套对象系统,比如stage、sprite等,修改对象的属性后,再重新绘制到画布上。绘制需要各种资源和数据,后台提供这些资源和数据。后端通过http、websocket等方式传输绘制所需的资源和数据,资源存储在静态服务器,托管在CDN,数据存在。在数据库中根据不同的请求参数进行资源CDN搜索和数据CRUD,然后提供给前端。随着应用规模的增大,提供数据的后端服务器和提供资源的CDN将是分布式的,多台机器部署在不同的地域可以保证效率和稳定性。这是运行Web应用程序的基本过程。从开发到部署运行都有一个过程。这个过程就是软件工程的生命周期。从一次性开发所有功能的瀑布式,到快速迭代的敏捷,从手动构建部署到全自动化devops,工程效率越来越高,这是必然趋势。作为Web应用开发者,必须掌握前端的两种界面绘制方法,掌握后端数据库和CRUD并为前端提供接口,掌握CDN的部署,后端服务的部署。如果应用规模很大,还需要掌握各种中间件和分布式技术。另外,掌握devops的自动化工具链也是很有必要的。掌握这些技能后,你就是一名全栈开发人员。在完成功能的基础上,对于更复杂的场景,需要对代码进行设计,即架构设计,保证代码的复杂度不会随着迭代而失控。相对来说,后端复杂的场景多,前端少,所以后端讲的架构比较多,但是前端也有一些复杂的场景需要架构设计,比如微前端,比如ioc,service,vscode的多进程划分。从能完成基本功能的全栈开发,到能处理复杂场景的技术架构,这就是Web开发程序员的成长之路。【编辑推荐】HarmonyOS官方战略合作共建——HarmonyOS技术社区云端容器:你有哪些选择?5G消息全面进入发展期什么是域名劫持?如何应对域名劫持自学编程,首先应该选择什么语言?一篇文章读懂网络爬虫发展史
