写点什么

我认为前端的职责需要重新划分

Murat Çorlu

  • 2022-08-24
    北京
  • 本文字数:2056 字

    阅读完需:约 7 分钟

我认为前端的职责需要重新划分

本文最初发布于的 Murat Çorlu 个人博客。

 

得益于云服务的高度抽象,大多数项目的后端工作都日益减少。仅使用一些公有云服务(如FirebasCloudKit)提供的动态协同数据,就可以创建出功能完备的客户端应用程序。我们不需要维护任何服务器,就可以实现身份验证。有许多身份验证提供者,甚至是一些身份验证服务,都可以帮我们做到这一点。

 

而且显然,事情不止于此。不难想象,将会有更多的数据库服务,我们可以直接从前端读取或写入数据,而且安全、高效。项目的大部分后端工作将只是多个云服务之间的相互连接和配置。

 

那么,每位 Web 开发人员都将是一名“前端开发人员吗”?当然,总还是需要更为底层的服务器端专家的,至少还需要他们来创建那些云服务。但是,Web 项目中 90%的工作可能将在客户端完成。这将意味着,“前端”的新职责和挑战将越来越多。

 

这一点,从每天都会听到的新 Web API(如Web Assembly、Web Worker、Web GPU 等)中就可以看到。我们为应对那些新增的层所做的工作不仅和“基本 UI”相关。相反,我们会借助浏览器提供的新功能,将之前在后端处理的一些东西移到“前端”。

 

以 Web Assembly 为例。Web Assembly 让我们可以在浏览器中运行一些库,而且具有原生性能。你不能在 Web Assembly 层做 DOM 操作。不过,你可以做一些非常消耗 CPU 的事情,如图像处理、数据加密,甚或是机器学习。

 

Web Workers 让我们可以在渲染周期之外运行其他 JavaScript 例程,而且不会阻塞 UI。WebGPU让我们可以充分利用 GPU 的能力,更高效地进行图像计算、加密计算或 3D 渲染。WebRTC 让它可以与客户端 App 的另一个用户建立点对点连接,并发送/接收任何数据,包括视频流或音频流。文件系统访问 API 提供对用户本地文件系统的完全访问,可以读/写文件和目录。

 

作为前端开发人员,我们在日常工作中并不熟悉这些东西。与此同时,真正的 UI 工作并没有减少。创建持久、可重用、灵活、易用且可访问的组件仍然是一项很大的挑战。设计师和产品所有者的工作干净利落,才能带来最好的 UI 和最佳的用户体验。

 

因此,我希望将来,人们会考虑将 Web 客户端开发中的这些新职责分开。让我起名的话,我会称之为“Web UI”和“Web Core”。

Web UI 开发人员


或许,我们可以将 Web UI 开发人员的职责大致罗列如下:


  • Web 组件

  • CSS

  • 路由

  • 表单

  • 动画

  • 可访问性

  • Web 字体

  • 画布

  • SVG、SVG 过滤器

 

作为前端开发人员,这些都是我们很熟悉的工作事项。它们都和 UI 及用户交互直接相关。我们都知道,如果你考虑成为所有这些领域的专家,并能够创建一个实现相当不错的 Web 应用程序,会面临许许多多的挑战。

 

这个领域也是当前流行的 Web 框架所针对的领域。我们可以用 Lit 构建组件,用Angular管理复杂的表单,或是用 Tailwind 创建响应式网格。(最后一个是开玩笑。)

Web Core 开发人员


Web Core 开发人员可能主要负责业务逻辑和客户端 App 中类似服务后端的部分,主要包括数据管理、业务逻辑和可扩展性(和当前后端开发人员的工作非常类似,是吗?),它们不会直接修改 UI。如果要为 Web Core 开发人员列出一些技术名称的话,或许可以列出下面这些:


  • WebGL——WebGPU

  • Worker

  • Web Assembly

  • Web Crypto

  • IndexedDB

  • 文件系统访问 API

  • WebRTC

 

里面没有 React 或 Angular。这里没它们什么事。但对于复杂的 Web 应用程序,那些 API 就像是宝藏。此外,面对一位资深 React 开发人员,问他 WebGPU 或 WebAssembly 的专业知识是不公平的。

示例项目团队结构


考虑一个管理照片/视频的 Web App 项目。我们将开发一个 Web 应用程序,可以向库里添加照片和视频,并可以对它们进行编辑、分类或分享。

 

我们不会为这个应用开发任何后端代码。我们将使用一个数据库服务和一个文件存储服务,并搭配一个身份验证服务一起使用。这些服务都是完全托管的外部服务。图像/视频编辑将完全在客户端完成。我们将以端到端加密的方式将所有数据存储到存储服务上。

 

如你所见,在这个项目中,不管是 UI 还是“Core”,都有相当多的事情要做。UI 端的挑战有:


  • 一个精致的 UI,用于显示和搜索照片和视频,以及将它们添加到库中。

  • 一个功能齐全且易于使用的 UI,用于编辑图像和视频。

  • 和其他人分享相册,评论照片。

  • 尽可能提高该 App 的“可访问性”。

 

另一方面,Core 端也面临着巨大的挑战:


  • 编写一些“Web Workers”,以非阻塞的方式与云服务通信。

  • 编写一个非常高效的图像操作库。

  • 编写一个非常高效的视频编辑库。

  • 一个加解密 API,在将图像和视频发送到存储服务之前以及获取到它们之后对其进行加解密。

  • 将部分数据存储在本地,使 App 可以离线运行,并能稍后通过服务同步。

 

我想,当我们像这样列出任务时,任务类型的划分就非常清楚了。“Web Core”任务是纯粹的 I/O 挑战,从不涉及 DOM 或 CSS。另一方面,“Web Core”团队将为“Web UI”团队提供的 API 与当前“前-后”端世界的 API 非常相似。JS 接口代替了 REST 或 GraphQL API。

小结


头衔和学科并不是让开发者永远坚守职责的高墙。相反,它们帮助我们一次只专注于一件事。注意力分散是我们这个时代最严重的疾病之一。我认为,对于每一位 IT 专业人员来说,关注质量而不是数量是非常有价值的。

 

查看英文原文:Front-end may soon need new sub-disciplines

2022-08-24 15:3116065

评论

发布
暂无评论
发现更多内容

给弟弟的信第15封|情绪控制的重要性

大菠萝

28天写作

5G专网+区块链:构筑智慧政务“安全信任基石”

CECBC

Java Web开发之API Boy的进阶之路

@零度

Java web API boy

开源投资回报率高达4倍!欧盟委员会全力推动开源软件发展

腾源会

开源

Linux 基金会发布 2021 年度报告,预测今年收入为 1.77 亿美元

腾源会

Linux 开源

一文讲述数仓组件SysCache

华为云开发者联盟

事务 存储 GaussDB(DWS) SysCache 缓存信息

超细!细说Zookeeper选举的一个案例(上)

恒生LIGHT云社区

golang zookeeper Go 语言

元气部落盲盒系统开发元气部落app开发

风行无疆

前端开发之Vue框架的优势

@零度

前端开发 Vue优势

WAVE SUMMIT+2021深度学习开发者峰会举办,开源共建助力飞桨生态发展

科技热闻

【漫画】数据云,真香在哪?

星环科技

大数据

神器来袭,手把手教你使用 Milvus_cli

Zilliz

数据库 命令行

东汉末年,他们把「服务雪崩」玩到了极致

悟空聊架构

熔断 28天写作 服务雪崩 悟空聊架构 12月日更

“十四五”规划,开源重塑软件发展新生态,获国家重点扶持

腾源会

开源

跟着动画学Go数据结构之插入排序

宇宙之一粟

golang 数据结构 插入排序 12月日更

解决rabbitmq消息队列的顺序及重复消费问题

编程江湖

大数据

中石化信息化数字化首席专家李剑峰:数字化转型中关键基础软件的国产化应用

OceanBase 数据库

开源 国产化 oceanbase 中石化

简述移动端IM开发的那些坑:架构设计、通信协议和客户端

BeeWorks

未来企业如何应对人才之争

BeeWorks

PingCAP 入选 CB Insights 中国「数据链路安全领航者」榜单,保障全球用户存储安全

PingCAP

重磅|腾讯云开源业界首个 etcd 一站式治理平台 Kstone

腾源会

开源 cncf Kstone

AI 收藏夹 Vol.004:虚拟爱豆出道!

Zilliz

人工智能 神经网络 AI

手写清除console的loader

编程江湖

前端开发

万字教你如何用 Python 实现线性规划

华为云开发者联盟

Python 函数 线性规划 求解器 单纯形法

今夜无眠

Tiger

28天写作

资讯|WebRTC M95 更新

网易云信

WebRTC

从前端到全栈 -- 最全面向对象总结

程序员海军

Java 面向对象

Java 集合框架面试问题集锦

编程江湖

面试题 JAVA开发 java编程

联邦学习在光大科技的落地应用

博文视点Broadview

华为硬件配置命令,建议收藏

Ethereal

网络工程师 网络技术 华为设备 厂商设备 运维技术

Nebula Graph 源码解读系列 | Vol.06 MATCH 中变长 Pattern 的实现

NebulaGraph

图数据库 知识图谱 分布式图数据库

我认为前端的职责需要重新划分_大前端_InfoQ精选文章