网站首页 > 技术文章 正文
架构或者可以说是一套方法论,让我们知道在什么场合遇到什么问题应该如何解决。
架构师=前端工程师+后端程序员+系统分析人员+关键技术解决方案+各种技术组合+设计模式+部署调整+软技能;
前端架构的原则
在设计前端架构的时候,我认为应该遵守几个基本原则。
第一个是「以不变为中心」。
软件开发的本质就是操作数据,放在 web 开发的场景,后端是存储、获取数据,前端是收集、展示数据。
数据在前、后端流转时,数据的基本形态不会变:基本类型、对象、列表;数据的传输协议也不会变:HTTP、WebSocket。在前端开发中,离它们越远、离 GUI 越近的东西就越容易变。
所以,首先要做的就是梳理出哪些东西是不易变化的,哪些是很容易就变了的。
第二个是「各层皆可替换」。
将根据易变性梳理出的模块按职责进行分层,定义好层与层之间的对接协议(接口)。除了因自身进化需要,对接协议是基本不会变的,也不应去改变。以此为前提,各层实现可在业务需要或技术升级时进行替换。
第三个是「视图层尽可能薄」。
视图层的职责是展示数据,理应只有交互逻辑,而大多数前端在写 UI 组件时会掺杂较多的业务逻辑,使视图层变得很是厚重、臃肿。这样一来,业务逻辑不利于复用,也会增加视图层技术的迁移成本。应将业务逻辑进行抽象,并提取到领域层,让视图层保持纯粹。
由于视图层的易变、多样,并想让它尽可能薄,最好有什么方式能够增加它访问逻辑层的成本,就像前端只能通过网络请求访问后端一样。
忽然想到在做业务开发时有遇到过这种架构,你有印象吗?没错,就是微信小程序!微信小程序的架构是将逻辑层与视图层放到不同的线程中运行,从而做到了天然隔离,它们之间交流的媒介只有「数据」:
微信小程序是建立在客户端应用提供一些原生能力基础之上的,那么在浏览器中能够达到相同或类似的效果吗?当然可以!浏览器提供原生能力,视图层运行在 iframe 中,逻辑层则在 web worker 里:
觉不觉得这很像「微前端」架构——据我理解,简单来说就是一种能够让不同技术栈的模块同时运行在浏览器中,它们可以是组件也可以是应用,并且相互之间能够通信、协同工作的架构模式。
基于这种架构,可以开发出一个类似于浏览器、操作系统的「超级 app」,成为平台级应用。
前端架构师需要什么能力?
我觉得说架构师很空泛,大家会告诉你技术的深度广度,软技能硬技能等等内容。各位无论处于什么阶段的前端,可以对照下面前端能力阶段,找到自己的特征和提升方法。
入门阶段
能够解决一些问题,常见的HTML标签和属性、时间、方法,常见的CSS属性也了解。Js掌握基础,条件,语句和循环,还有简单常用的算法。还了解一些常用工具比如:Webstrom、Sublime text3、Dreamweaver等。
进阶:这个阶段最简单的方法就是找到官方帮助手册,通读所有的方法属性,读到完全理解了,这些手册可以帮助我们夯实基础。最起码优化了我们不规范的代码。
解决问题阶段
这个阶段的前端可以解决一些有难度的问题了,哪怕是复制粘贴,也可以完成布置的所有需求。这个阶段内容不会出错了。
进阶:此阶段最大的特点是能够解决问题了,但不是最佳解决方案。解决这个问题最好的办法就是拓展认知。积累大量的项目经验,比如到GitHub上面找一些开源。
优化方案阶段
本阶段碰到一个需求可以给出各种方案了,自己也讷讷感判断出优秀的方案。这个阶段在团队基本上就是主力了。有个2-3年前端开发经验的基本上都是这个阶段。
进阶:2-3年的工作经验最容易飘。戒骄戒躁,注重前端框架的实现原则、开发、重新配置前端一般终端组件的能力。
拥有全局观的阶段
这个时候思想在需求前面,有的时候需求还没有提出来,我们就有发现的能力。另外这个时候已经不追求最优不最优了,而是解决方案和代码可复用性等。
提升之路:关于面向对象开发的思考;面向对象的JavaScript;javascript闭包、范围链、原型链等高级功能;常用的设计模式;使用本机JavaScript原理实现框架封装;...;基于组件和模块化的发展:SeaJS、RequireJS。有能力解决复杂的问题和技术问题,并能够独立设计和开发复杂的功能模块。
往「架构师」的发展
- 第一是深度:封装概念
- 第二是广度:自称体系,基础扎实,掌握理论,知道原理;
- 上一篇: 2023最新版-Web前端架构师(35周完结无密)
- 下一篇: 架构师必备技能,你都具备了吗?
猜你喜欢
- 2025-05-25 你在 Spring Boot3 开发中,还在为前端接口参数校验头疼?
- 2025-05-25 为什么大部分程序员做不了架构师?
- 2025-05-25 大厂架构师被A1逼疯:我20年经验不如A1五分钟生成的方案
- 2025-05-25 十年老前端的生存法则:在技术迭代的马拉松中挖护城河
- 2025-05-25 [完结12章]前端高手成长课:从业务深挖到代码架构设计方案落地
- 2025-05-25 为什么说前端转全栈比Java程序员更容易?这3个思维优势太致命
- 2025-05-25 系统架构师:从码农到“总设计师”的进化之路
- 2024-09-24 一个架构师需要掌握的知识技能
- 2024-09-24 前端架构师司徒正美去世,或许他只是去了二次元世界!
- 2024-09-24 Web架构师都在阅读的8本书
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)