Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >前端技术规划与战略:2022

前端技术规划与战略:2022

作者头像
Phodal
发布于 2022-01-21 01:41:34
发布于 2022-01-21 01:41:34
98500
代码可运行
举报
文章被收录于专栏:phodalphodal
运行总次数:0
代码可运行

最近几年,因为前端没啥有意思的东西好玩的,主要精力就在工作相关的后端架构咨询和设计上。只是,刚好最近在编写知识管理元框架 Quake ,应用了一些算是比较新的架构思想,特别好玩。所以,这篇文章结合一些公司的前端架构需求,社区上的一些趋势,以及自己的探索编写出来的。

回顾 2021 规划

开始之前,先回回顾一下我在年初写的《前端规划:我的 2021 前端技术战略》,总体上有四个关键要素:

  • 前端架构治理。主要的点是:大型前端应用、规范之旅。
  • 微前端“普及”。主要的点是:微前端框架成熟、
  • 低代码平台的返璞。主要的点是:重塑用户体验、构建开发者体验。
  • 超越前端。主要的点是:Serverless 一体化、重回跨语言前端(如 Rust 等)。

总体上来看,基本上和今年的趋势大差不差了(明明还是差很多的)。所以,如果让我去规划 2022 的话,它可能是这样的。

1. 元宇宙的前端:复兴的前端 3D 世界。

6 年前,我在玩 VR 探索前端可能性的时候,写了一系列的相关文章,比如那篇《Oculus + Node.js + Three.js 打造VR世界》,还有《JavaScript 在 VR 世界的应用》,总体上,我并不看好普通的前端开发往 VR 世界扩展,它多数是一些图形学相关的知识,需要上手成本会略高一点。

不过,如果一定要的话,可以参考一下我上个月写的《从 Codecity 到元宇宙:元宇宙的软件形态会怎样的?》。只是从某各意义上来说,元宇宙和狭义上的 Web 前端没有多大的关系,除了技术,我们还需要这么一些知识:

  1. 构建 3D 世界的能力,如结合 Three.js 来进行与 VR 的交互。
  2. 将物体从物理世界复刻虚拟世界。即数据孪生。
  3. 从平面软件到物体建模。
  4. 接入虚拟化与沉浸式。

所以,如果想做计划储备那就需要:游戏编程、数字孪生、交互设计、协作模式。总体来说,关系不大,它可以构建一个快速的 MVP。

除了对于元宇宙本身来说,企业对于虚拟形象的热门化,也会带动前端在 3D 世界的发展。

2. 无组件架构:新的可复用模式

虽然,我玩微前端玩得很早,一直觉得微前端(MicroFrontend)这名字不好,只是也懒得去纠结。与现有的遗留系统迁移使用的微前端模式相比,我更看好诸如于 ComponentLess 这样的组件模式,有点类似于 Serverless 之于 NanoService。使用更细粒度的 Web Component 组件,可以构建出更小的应用,易于替换与解耦设计。

回到案例上, 在构建和设计 Quake 应用的时候,我们就是这么玩的:

  • Web Component 作为基础。使用了基于 Web Component 作为应用的基础,在这个基础上套娃(wrapper)了 React 框架的组件、Vue 框架的组件、Angular 框架的组件……。
  • 组件级别的封装。我可以用 React 中的某个框架,可以用 Angular 中的某个框架,只需要封装为 Web Component 即可。
  • 无限套娃模式。可以在 A 组件调用 B 组件,B 组件还可以调用 A,然后无限死循环了。
  • 随意可抛弃式。

所以,就孕育出了无组件的定义:

无组件(Componentless)架构是一种架构模式,它是指大量依赖于三方组件(运行时依赖的组件而非编译时依赖的组件,即编译即服务)或暂存容器中运行的自定义代码的前端应用。应用的三方组件如同三方 API 服务一样,可各自独立发布、独立部署,应用无需重新编译、构建和部署。

3. 低代码及其细化策略

从模式上来说,在低代码社区里,低代码平台已经初步分为(可以是阶段,也可以是方向):

  • nocode 无代码:不需要写代码就能做出一个应用。
  • lowcode 低代码:仅需写少量代码就可以做出一个应用。
  • procode 专业代码:应用所有的代码都需要开发人员编写。

对于三种不同的方式,成熟的低代码都有自己的方案。不同公司有不同的策略:在一个平台上支撑三种不同的方式,又或者是在三个平台上支撑三中不同的方式,只是会复用三种不同的基础设施。这些并不重要,重要的是在实现会发现:多数的低代码平台太复杂了,还需要进一步地拆分。

4. 开发者们的体验

今年与越来越多的小伙伴们交流起了开发者体验,于是开源了电子书《开发者体验:探索与重塑》(https://dx.phodal.com/)。从趋势来说,在开源继续热火朝天的 2022 年来说,开发者体验应该会成为人们研究该领域的一个新趋势。原先我们假定的是:开发团队应该关注于开发者体验。然而,从国内的实践情况来看,所有与这个平台、工具、SDK 等相关的利益相关者们,都应该关注于开发者体验。尤其是,相关的最高管理者,他们决定了相关项目的 KPI/OKR。

无论如何,在设计 KPI 的时候,记得:从协同价值出发、以过程改进为核心,引入适当的不可量化指标。

不过,在写 2021 年规划的时候,我也同样预测了这个趋势。所以,我并不确定他会不会如预期一样。只是呢,在未来的几年里,它是一种不可避免的趋势。

5. 更好的遗留系统迁移

对于大部分公司而言,人们对于前端遗留系统的预期是:不花费大量的时间和精力,只需要它能 run 起来,在未来几年后一起重写(这个事可能不会发生)。所以,在 2021 年里,我尝试去扩展遗留系统迁移的方式。

在 IE 逐渐被淘汰之后,在前端遗留系统的迁移上,我们会有更多的选择,诸如于采用下一代 Web 组件化 Web Components。因此,我们可以采用诸如于领域元组件的方式 —— 它是一个包含特定领域组件(业务场景)的集合。其内部包含了一系列的组件,依赖于输入的领域元数据或者领域特定语言,构建出适用于特定领域的组件。

当然了,原先的微前端架构、花式构建(组件式构建、拆分式构建)依旧是试用的,只是现在有了更多的方法了。

6. 有限的改进前端工具

从 2021 年的趋势来看,已经有越来越多的前端工具,使用 Rust 和 Golang 等 “更快” 的语言编写。所以,这个趋势依旧会在 2022 年继续。毕竟,凡是用 JavaScript 写的,都可能用 Rust 重写一遍。

只是从个人的体验来说,这种改进方式是有限的,前端应用的构建慢多数是因为前端项目代码量大导致的。所以,除了改进前端工具之外,还有一种出路是减少代码的编译。

7. 前端元框架

继续上面的话题,作为一个架构师,跳出具体框架和具体技术栈来考虑问题,便会发现好多事件特别好玩。先前的主要源泉来自于 2018 年构思的:《前端下半场:构建跨框架的 UI 库》,以及去年构思的《Yiki:元微前端框架》。

过去,我一直构建一个基于 Web Component 的 UI 库,后来太懒了。所以,我就继续用 Ionic 的组件库,配合上上面提到的 NanoComponent,搭建一个 Web Component 路由,我们就可以构建一个全新的前端架构模式。基于此,还可以构建出一个适用于前端框架的元框架。框架本身是用来解决问题,提供生产力的,但是前端框架太多就是个问题。

这个有待于在 2022 年里,再想想怎么搞。

8. 探索前端 + AI 的方向

市面上当前流行的 Design to Code,Product to Code,个人觉得是把牛刀用到了吃鸡上:说不上是有意义的创新。说是在降低工作量,但是可能投入远比这多的工作量 —— 远不如 DSL 来得靠谱 + 可迁移。

我一直在思考有没有更创建的前端(边缘侧) AI 方向,但是没有想到。我相信聪明的社区会有更多的答案。

9. DSL as Core

最后一点,就是过去我一直在玩的东西,DSL as Core。回到这个思想来看的话,我觉得什么设计转代码是不合理的,KPI 思想下的产物。理想的模式,应该是 DSL 生成设计 + DSL 生成代码,类似于 unflow 的思想。这样一来,我们就可以无更顺畅的将业务需求转为设计,并实现它的自动化 所以,在 Quake 中是这么玩的,通过 DSL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---------------------------------------------------------------
| Calendar(flow("show_calendar"), 12x) |
---------------------------------------------------------------
| Network(<graph-network>, 4x) | Timeline(flow("show_timeline"), 8x) |
---------------------------------------------------------------

就可以生成以下的页面:

当然了,上面的 flow 是来自于 DSL,类似于: from('todo','blog').to(<quake-calendar>).filter('created_date > 2021.01.01 AND created_date < 2021.12.31')会自动生成对应的 JavaScript 代码,又或者是任意的后端代码。它可以从数据库中读取 todoblog,然后渲染到 <quake-calendar> 组件中。

随后,只需要为这些 DSL 创建一个配置页面,就可以实现低代码或者无代码。这种模式并不适合于常规的业务开发, 但是非常的好玩:我需要有 CRUD API,还有组件,我就能提供无限的可能性。

10. 构建组合式架构

简单来说,就是提供一个机制来快速组装应用,无论是微前端还是 Componentless 都是相同的目的。这也是我最近正在探索的东西,详细的内容可以年后用一篇文章来探索。

其它

和 2020、2021 年相比,相信 2022 年会出现更多好玩的前端技术。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 phodal 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ARM汇编:数据处理指令集:MOV、ADD、ADDS、ADC、SUB、SUBS、SBC、RSB、MUL、AND、ORR、EOR、BIC、CMP、TST、TEQ、LSL、LSR、ASR、RORV
ORR指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。操作数1应该是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于设置操作数1的某些位。 指令示例:ORR R0,R0,#3;该指令设置R0的0、1位,其余位保持不变。
全栈程序员站长
2022/09/06
3.5K0
汇编指令大全
 80×86指令系统,指令按功能可分为以下七个部分。   (1) 数据传送指令。   (2) 算术运算指令。   (3) 逻辑运算指令。   (4) 串操作指令。   (5) 控制转移指令。   (6) 处理器控制指令。   (7) 保护方式指令。 3.3.1数据传送指令   数据传送指令包括:通用数据传送指令、地址传送指令、标志寄存器传送指令、符号扩展指令、扩展传送指令等。   一、通用数据传送指令   1传送指令   传送指令是使用最频繁的指令,格式:MOV DEST,SRC   功能:把一个字节,字或双字从源操作数SRC传送至目的操作数DEST。   传送指令允许的数据流方向见图311。
全栈程序员站长
2022/09/06
1.5K0
汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
转自:http://www.cnblogs.com/del/archive/2010/04/16/1713886.html
战神伽罗
2019/07/24
12.7K0
常用汇编指令
 mov ah,2  int 21h 输出单个字符 mov ah,9 int 21h 输出字符串与DX联用!
jack.yang
2025/04/05
1150
逆向so文件调试工具ida基础知识点
https://www.freebuf.com/column/157939.html
小小咸鱼YwY
2020/09/27
1.9K0
通用计算机指令,计算机移位指令[通俗易懂]
移位指令对操作数按某种方式左移或右移,移位位数可以由立即数直接给出,或由CL间接给出。移位指令分一般移位指令和循环移位指令。
全栈程序员站长
2022/08/11
1K0
【汇编语言】标志寄存器(三) —— 条件跳转,精准决策:汇编语言的比较与转移
下面的内容中我们将学习一些根据cmp指令的比较结果(即,cmp指令执行后,相关标志位的值)进行工作的指令。
Crossoads
2024/12/29
1920
【汇编语言】标志寄存器(三) —— 条件跳转,精准决策:汇编语言的比较与转移
【汇编语言王爽】学习笔记p54-p79
axbxcxdx sidi bpspip csssdses flag 按位起作用
20岁爱吃必胜客
2022/11/13
8810
【汇编语言王爽】学习笔记p54-p79
汇编指令-CMP、TEQ(5)
该文介绍了CMP和TEQ指令的功能和用法,以及相关的操作数、操作符和标志位。
诺谦
2018/01/03
1.4K0
逻辑运算指令和移位指令
AND, OR , XOR 和 TEST都是双字节操作指令,操作数的寻址方式的规定与算术运算指令相同.
全栈程序员站长
2022/08/31
1.2K0
大学课程 | 《微机原理与接口技术》笔记
数据定义伪指令(1)用于定义数据区中变量的类型及其所占内存空间大小(2)DB(Define Byte):定义的变量为字节型(3)DW (Define Word) :定义的变量为字类型(4)DD (Define Double Word) :定义的变量为双字型(5)DQ (Define Quadword) :定义的变量为4字型(6)DT (Define Tenbytes) :定义的变量为10字节型
Justlovesmile
2021/12/14
4K0
大学课程 | 《微机原理与接口技术》笔记
汇编语言从入门到精通-2CPU资源和存储器
  在汇编语言中,需要访问的硬件资源主要有:CPU内部资源、存储器和I/O端口。本章将着重讲解CPU内部寄存器的命名、功能及其常见的用途,还要介绍存储器的分段管理模式、存储单元地址的表示法以及其物理地址的形成方式。
墨文
2020/02/28
7320
汇编语言从入门到精通-2CPU资源和存储器
第三章 寻址方式与指令系统
cheese
2023/10/25
8940
第三章 寻址方式与指令系统
汇编基础
​ cup与所有内存之间:地址总线,数据总线,控制总线,每条线对应不同信息,指令与数据分开
Dean0731
2020/08/17
1.5K0
x86汇编指令详解_x86汇编指令详解
参考链接:X86-assembly/Instructions/lea – aldeid
全栈程序员站长
2022/09/30
1.4K0
Win32汇编:汇编基本知识总结
汇编语言是所有程序设计语言中最古老的,它与计算机机器语言最为接近,通过汇编语言可以直接访问计算机的硬件,能够直接与CPU对话,可以说汇编语言是所有编程语言中语法格式最自由的,但自由的代价就是需要了解计算机体系结构和操作系统的大量细节,每编写一段程序都需要考虑各种硬件的状态,从而导致使用汇编写程序效率非常低.
王瑞MVP
2022/12/22
1.3K0
【学员笔记分享】二进制逆向学习笔记:汇编之通用寄存器
https://blog.csdn.net/cqkxboy168/article/details/8994479
Ms08067安全实验室
2020/07/14
1K0
5.2 汇编语言:标志位测试指令
汇编语言是一种面向机器的低级语言,用于编写计算机程序。汇编语言与计算机机器语言非常接近,汇编语言程序可以使用符号、助记符等来代替机器语言的二进制码,但最终会被汇编器编译成计算机可执行的机器码。
王瑞MVP
2023/10/11
5880
汇编语言从入门到精通-5微机CPU的指令系统1
5.1 汇编语言指令格式   为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的,这就象在学习高级语言程序设计时,要清楚高级语言语句的语义、语法及其相关规定一样。
墨文
2020/02/28
1.1K0
汇编语言从入门到精通-5微机CPU的指令系统1
汇编语言期末复习不挂科——知识点总结
数据的表示和类型 二进制:二进制的表示元素是0和1,书写时,在数据后面紧跟一个字母B,如:0101B 八进制:八进制的表示元素是:0-7,书写时,在数据后面紧跟字母Q,如1234Q 十六进制:基本元素是0-9,A-F,其中A-F依次代表10-15 ▮书写时,数据后面紧跟字母H,当十六进制的第一个字符是字母时,在其前面必须添加一个“0” 寄存器 16位寄存器:
全栈程序员站长
2022/07/31
9940
汇编语言期末复习不挂科——知识点总结
推荐阅读
相关推荐
ARM汇编:数据处理指令集:MOV、ADD、ADDS、ADC、SUB、SUBS、SBC、RSB、MUL、AND、ORR、EOR、BIC、CMP、TST、TEQ、LSL、LSR、ASR、RORV
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验