成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你寫過的代碼都逃不過這兩方面:API和抽象

開發 前端
作為前端,你可能開發過 Electron 桌面應用、小程序、瀏覽器上的 web 應用、基于 React Native 等跨端引擎的 app,基于 Node.js 的工具或者服務等各種應用,這些都是 JS 的不同的 runtime,開發也都是基于前端那套技術。

[[435845]]

作為前端,你可能開發過 Electron 桌面應用、小程序、瀏覽器上的 web 應用、基于 React Native 等跨端引擎的 app,基于 Node.js 的工具或者服務等各種應用,這些都是 JS 的不同的 runtime,開發也都是基于前端那套技術。

面對這么多的細分領域,作為前端工程師的你是否曾迷茫過:這么多技術我該學什么?他們中有沒有什么本質的東西呢?

其實所有的這些技術,你寫過的所有代碼,都可以分為兩個方面:api 和 抽象。

api

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

瀏覽器提供了 dom api、支持了 css 的渲染,還提供了音視頻、webgl 等相關 api,這些 api 是我們開發前端應用的基礎。

Node.js 提供了操作系統能力的 api,比如進程、線程、網絡、文件等,這些 api 是我們開發工具鏈或后端應用的基礎。

React Native 等跨端引擎支持了 css 的渲染,還提供了設備能力的 api,比如照相機、閃光燈、傳感器、GPS 等 api,這是我們開發移動 app 的基礎。

Electron 集成了 Chromium 和 Node.js,同時還提供了桌面相關的 api。

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

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

不同的 JS runtime 提供了不同 api 給上層應用,這是應用開發的基礎,也是應用開發的能力邊界。

抽象

基于 runtime 提供的 api 我們就能完成應用的功能開發,但是復雜場景下往往會做一些抽象。

比如瀏覽器上的前端應用主要是把數據通過 dom api 和 css 渲染出來,并做一些交互,那么我們就抽象出了數據驅動的前端框架,抽象出了組件、狀態、數據流等概念。之后就可以把不同的需求抽象為不同的組件、狀態。

經過層層抽象之后,開發復雜前端應用的時候代碼更容易維護、成本更低。

比如基于 Node.js 的 fs、net、http 等 api 我們就能實現 web server,但是對于復雜的企業級應用,我們通過后端框架做 MVC 的抽象,抽象出控制器、服務、模型、視圖等概念。之后的后端代碼就可以把需求抽象為不同的控制器和服務。

經過 MVC 的抽象之后,后端應用的分層更清晰、更容易維護和擴展。

復雜的應用需要在 api 的基礎上做一些抽象。我們往往會用框架做一層抽象,然后自己再做一層抽象,經過層層抽象之后的代碼是更容易維護和擴展的。這也就是所謂的架構。

如何深入 api 和抽象

api

api 是對操作系統能力或不同領域能力的封裝。

比如 Node.js 的進程、線程、文件、網絡的 api 是對操作系統能力的封裝,想深入它們就要去學習操作系統的一些原理。

而 webgl、音視頻等 api 則分別是對圖形學、音視頻等領域的能力的封裝,想要深入它們就要去學習這些領域的一些原理。

個人決定我們知道 api 提供了什么能力就行,沒必要過度深入 api 的實現原理。

抽象

抽象是基于編程語言的編程范式,針對不同目標做的設計。

Javascript 提供了面向對象、函數式等編程范式,那么就可以基于對象來做抽象,使用面向對象的各種設計模式,或者基于函數式那一套。這是抽象的基礎。

抽象是根據不同的目標來做的。

前端領域主要是要分離 dom 操作和數據,把頁面按照功能做劃分,所以根據這些目標就做了 mvvm 和組件化的抽象。

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

可以看到,抽象是基于編程語言的范式,根據需求做的設計,好的框架一定是做了滿足某種管理代碼的需求的抽象。

想要提升抽象、架構設計能力的話,可以學習下面向對象的設計模式,或者函數式等編程范式。研究各種框架是如何做的抽象。

總結

不同平臺提供了不同的 api,這是應用開發的基礎和邊界。復雜應用往往要在 api 基礎上做層層抽象,一般會用框架做一層抽象,自己再做一層抽象,目標是為了代碼劃分更清晰,提升可維護性和可擴展性。

其實我們寫過的所有代碼,都可以分為 api 和抽象這兩方面。

深入 API 原理的話要深入操作系統和各領域的知識。提升抽象能力的話,可以學習面向對象的設計模式或者函數式等編程范式。

不管你現在做哪個平臺之上的應用開發,剛開始都是要先學習 api 的,之后就是要理解各種抽象了:框架是怎么抽象的,上層又做了什么抽象。 

API 保證下限,抽象可以提高上限。而且抽象能力或者說架構能力是可以遷移的,是程序員最重要的能力之一。

 

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2009-11-05 15:18:19

WCF擴展

2019-03-21 11:03:47

HDFSMapReduceHadoop

2009-11-06 09:57:32

2010-04-20 14:55:41

負載均衡

2010-04-26 15:37:18

DNS負載均衡

2009-10-27 13:45:32

VB.NET C#區別

2021-01-04 11:13:01

人臉識別

2009-10-10 13:46:44

服務器測試方法

2014-01-22 09:28:19

IDC

2009-10-09 17:30:11

服務器測試方法

2013-09-18 16:24:26

2011-11-21 10:37:51

虛擬化微軟虛擬化Hyper-V

2018-04-15 15:47:18

2022-02-22 09:49:57

B 端設計趨勢視覺風格

2020-03-26 14:51:16

工信部移動互聯網手機

2021-08-31 10:45:28

故障內存問題排查

2024-10-17 08:00:00

開發全棧調試前端

2010-06-13 17:16:12

IPv6協議

2011-12-22 15:33:05

Web

2010-03-17 15:45:13

無線設備兼容性
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费午夜视频 | 毛片视频网站 | 欧美簧片 | 日韩一区在线播放 | 99精品国自产在线观看 | 久久三区| 美女黄色在线观看 | 色综合av| 性一交一乱一透一a级 | 91就要激情 | 亚洲国产网站 | 日韩中文字幕网 | 欧美成人精品激情在线观看 | 成人免费视频一区二区 | 天天干天天干 | 欧美一级免费看 | 国产一区二区中文字幕 | 成人九色| 99精品久久 | 一区二区视频在线 | 国产精品一区二区三区在线播放 | 成人欧美一区二区三区白人 | 成人片免费看 | 国产清纯白嫩初高生视频在线观看 | 久久久久久久久久久久亚洲 | 日本超碰 | 久久国产综合 | 综合久久av | 综合九九| 7777精品伊人久久精品影视 | 色网站视频| 欧美一级在线免费 | 色综合久久久久 | 色综合视频 | 久久中文视频 | 国产精品一区二区免费看 | 欧美美女被c | 精品日韩 | 欧美日韩一 | 中文字幕第三页 | 久久人|