问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

你写过的所有代码都逃不过这两方面:API和抽象

发布网友 发布时间:2024-09-30 07:47

我来回答

1个回答

热心网友 时间:2024-11-07 22:30

作为前端,你可能开发过Electron桌面应用、小程序、浏览器上的web应用、基于ReactNative等跨端引擎的app,基于Node.js的工具或者服务等各种应用,这些都是JS的不同的runtime,开发也都是基于前端那套技术。

面对这么多的细分领域,作为前端工程师的你是否曾迷茫过:这么多技术我该学什么?他们中有没有什么本质的东西呢?

其实所有的这些技术,你写过的所有代码,都可以分为两个方面:api和抽象。

api

不同平台提供的api不同,支持的能力不同:

浏览器提供了domapi、支持了css的渲染,还提供了音视频、webgl等相关api,这些api是我们开发前端应用的基础。

Node.js提供了操作系统能力的api,比如进程、线程、网络、文件等,这些api是我们开发工具链或后端应用的基础。

ReactNative等跨端引擎支持了css的渲染,还提供了设备能力的api,比如照相机、闪光灯、传感器、GPS等api,这是我们开发移动app的基础。

Electron集成了Chromium和Node.js,同时还提供了桌面相关的api。

小程序支持了css的渲染之外,还提供了一些宿主app能力的api。

此外,还有很多的runtime,比如vscode插件、sketch插件等,都有各自能够使用的api。

不同的JSruntime提供了不同api给上层应用,这是应用开发的基础,也是应用开发的能力边界。

抽象

基于runtime提供的api我们就能完成应用的功能开发,但是复杂场景下往往会做一些抽象。

比如浏览器上的前端应用主要是把数据通过domapi和css渲染出来,并做一些交互,那么我们就抽象出了数据驱动的前端框架,抽象出了组件、状态、数据流等概念。之后就可以把不同的需求抽象为不同的组件、状态。

经过层层抽象之后,开发复杂前端应用的时候代码更容易维护、成本更低。

比如基于Node.js的fs、net、http等api我们就能实现webserver,但是对于复杂的企业级应用,我们通过后端框架做MVC的抽象,抽象出控制器、服务、模型、视图等概念。之后的后端代码就可以把需求抽象为不同的控制器和服务。

经过MVC的抽象之后,后端应用的分层更清晰、更容易维护和扩展。

复杂的应用需要在api的基础上做一些抽象。我们往往会用框架做一层抽象,然后自己再做一层抽象,经过层层抽象之后的代码是更容易维护和扩展的。这也就是所谓的架构。

如何深入api和抽象api

api是对操作系统能力或不同领域能力的封装。

比如Node.js的进程、线程、文件、网络的api是对操作系统能力的封装,想深入它们就要去学习操作系统的一些原理。

而webgl、音视频等api则分别是对图形学、音视频等领域的能力的封装,想要深入它们就要去学习这些领域的一些原理。

个人觉得我们知道api提供了什么能力就行,没必要过度深入api的实现原理。

抽象

抽象是基于编程语言的编程范式,针对不同目标做的设计。

Javascript提供了面向对象、函数式等编程范式,那么就可以基于对象来做抽象,使用面向对象的各种设计模式,或者基于函数式那一套。这是抽象的基础。

抽象是根据不同的目标来做的。

前端领域主要是要分离dom操作和数据,把页面按照功能做划分,所以根据这些目标就做了mvvm和组件化的抽象。

后端领域主要是要做分层、解耦等,于是就做了IOC、MVC等抽象。

可以看到,抽象是基于编程语言的范式,根据需求做的设计,好的框架一定是做了满足某种管理代码的需求的抽象。

想要提升抽象、架构设计能力的话,可以学习下面向对象的设计模式,或者函数式等编程范式。研究各种框架是如何做的抽象。

总结

不同平台提供了不同的api,这是应用开发的基础和边界。复杂应用往往要在api基础上做层层抽象,一般会用框架做一层抽象,自己再做一层抽象,目标是为了代码划分更清晰,提升可维护性和可扩展性。

其实我们写过的所有代码,都可以分为api和抽象这两方面。

深入API原理的话要深入操作系统和各领域的知识。提升抽象能力的话,可以学习面向对象的设计模式或者函数式等编程范式。

不管你现在做哪个平台之上的应用开发,刚开始都是要先学习api的,之后就是要理解各种抽象了:框架是怎么抽象的,上层又做了什么抽象。

API保证下限,抽象可以提高上限。而且抽象能力或者说架构能力是可以迁移的,是程序员最重要的能力之一。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? ...米的长方体木料截成3段,表面积增加了20平方分米,这根木料原来的体积... ...把它从中间截成两段,表面积增加了20平方分米,这根长方体木料的体 ... ...长方体,表面积增加20平方分米,求原来长方体的体积。 你有没雨看过或者写过哪些有意思的代码? ...表面积增加20平方分米,这根木料的体积原来是多少?求专业人士回答... ...成两段后,表面积增加了20平方分米,求原来这根木料的体积是多少立方米... 买国产车有购置税吗 ...方体木量截成三段后表面积增加20平方分米这段木料的体积是多少_百度... ...段,表面积增加了20平方分米,原来这根木料的体积是( )立方分米。_百... ...长方体木料平均截成3段,表面积增加了20平方分米,这根长方体木料的... 一根长5厘米的长方体木料平均截成了段,表面积增加了20平方分米,原来木 ... 重生之狼孩天下txt全集下载 福特新福克斯风尚版1.6t开了一年还能卖多少 如何用软件打开djvu文件 公考申论的最后作文答多少分才算及格? 写作的注意事项有哪些?_百度... 为什么我的电脑CPU在没有任何应用程序下还是百分百请高手赐教 各位MM们不吝赐教:姑娘们希望将来自己的老公干什么职业,为什么? ...非常的烦人.希望高手不吝赐教,本人从精神上特别感激 大家觉得哪种榨菜好吃一点 涪陵榨菜和乌江榨菜哪个好吃 ...段代码,我想知道case部分days+=30/31是什么意思?例如:我感觉12月是... 为什么有些讨论的网页打开后一个个文本的超链接的集合而不是网页的... 有没有米线是什么意思? 如何用图来表示如何不同网页的集合 ...浏览器浏览的具有相互超级链接的多媒体文档的集合 我想问一下百度搜索出来的网页是按什么规则排放顺序的呢? 百度搜索出来的网页是按什么顺序排的? 百度网页的搜索显示规则是什么 如何给笔记本增加内存 天猫下店最晚多久激活?激活后多久才交保证金? 没钱的银行卡怎么办 我们可以选择注销 病毒性感冒喝什么消炎药好 在黑暗中长大 生肖 ...但是新建压缩文件时右击还有winar的压缩选择? 病毒性感冒吃啥药好呢 病毒性感冒怎么好得快 有哪些快速剥皮皮虾的技巧? 贵州茅台六连阴原因 四个老婆都生不出儿子 我想要个儿子,而她却不能满足我,所以我想跟她离婚