一、什么是前端
前端是一個(gè)在互聯(lián)網(wǎng)領(lǐng)域中非常重要的角色,它負(fù)責(zé)將后端提供的數(shù)據(jù)和邏輯以可視化的形式展現(xiàn)給用戶,從而實(shí)現(xiàn)用戶與網(wǎng)站或應(yīng)用的交互。前端開(kāi)發(fā)涉及到多種技術(shù)和工具,主要包括HTML、CSS、JavaScript等語(yǔ)言,以及各種框架、庫(kù)、編輯器、調(diào)試器等。
從字面上理解,前端就是指用戶能夠直接看到和操作的界面部分,也就是網(wǎng)站或應(yīng)用的“前臺(tái)”。與之相對(duì)應(yīng)的是后端,也就是指為前端提供數(shù)據(jù)和邏輯處理的服務(wù)器部分,也叫做“后臺(tái)”。一般來(lái)說(shuō),前端和后端通過(guò)網(wǎng)絡(luò)協(xié)議(如HTTP)進(jìn)行通信,通過(guò)接口(API)進(jìn)行數(shù)據(jù)交換。
舉個(gè)例子,當(dāng)我們?cè)跒g覽器中訪問(wèn)百度首頁(yè)時(shí),我們看到了一個(gè)搜索框和一些推薦內(nèi)容。這些都是由前端開(kāi)發(fā)者編寫代碼實(shí)現(xiàn)的。當(dāng)我們?cè)谒阉骺蛑休斎腙P(guān)鍵詞并點(diǎn)擊搜索按鈕時(shí),瀏覽器會(huì)向百度服務(wù)器發(fā)送一個(gè)請(qǐng)求,并攜帶我們輸入的關(guān)鍵詞。這個(gè)請(qǐng)求會(huì)被后端開(kāi)發(fā)者編寫代碼處理,并根據(jù)關(guān)鍵詞查詢數(shù)據(jù)庫(kù)或其他資源,并返回一個(gè)包含搜索結(jié)果的響應(yīng)。這個(gè)響應(yīng)會(huì)被瀏覽器接收并解析,并由前端開(kāi)發(fā)者編寫代碼顯示在頁(yè)面上。
可以看出,前端開(kāi)發(fā)者需要掌握如何編寫能夠在瀏覽器中運(yùn)行的代碼,并且能夠根據(jù)用戶需求設(shè)計(jì)合適美觀的界面,并且能夠與后端進(jìn)行有效地通信。同時(shí),由于不同的設(shè)備(如PC、手機(jī)、平板等)有不同的屏幕尺寸和分辨率,還需要考慮如何使界面能夠自適應(yīng)不同設(shè)備。
目前常見(jiàn)的用于編寫網(wǎng)頁(yè)界面代碼的語(yǔ)言有HTML、CSS和JavaScript。HTML(HyperText Markup Language)是一種標(biāo)記語(yǔ)言,用于定義網(wǎng)頁(yè)結(jié)構(gòu)和內(nèi)容;CSS(Cascading Style Sheets)是一種樣式表語(yǔ)言,用于定義網(wǎng)頁(yè)外觀和布局;JavaScript是一種腳本語(yǔ)言,用于實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)效果和交互功能。
除了這三種基礎(chǔ)語(yǔ)言外,在實(shí)際開(kāi)發(fā)中還會(huì)使用各種框架(framework)、庫(kù)(library)、預(yù)處理器(preprocessor)等工具來(lái)提高開(kāi)發(fā)效率和質(zhì)量。例如:
框架:Bootstrap、jQuery、React、Vue、Angular等庫(kù):lodash、moment.js、axios等預(yù)處理器:Sass、Less、TypeScript等另外,在移動(dòng)設(shè)備上訪問(wèn)網(wǎng)頁(yè)時(shí)可能會(huì)遇到性能問(wèn)題或兼容性問(wèn)題。為了解決這些問(wèn)題,在近幾年出現(xiàn)了一些新型的技術(shù)方案:
PWA(Progressive Web App):一種利用現(xiàn)代瀏覽器特性提供類似原生應(yīng)用體驗(yàn)的網(wǎng)頁(yè)應(yīng)用。小程序:一種運(yùn)行在特定平臺(tái)(如微信、支付寶等)內(nèi)部提供類似原生應(yīng)用功能和體驗(yàn)的輕量級(jí)應(yīng)用。延伸閱讀1:什么是異步
異步(Asynchronous, async)是與同步(Synchronous, sync)相對(duì)的概念。在我們學(xué)習(xí)的傳統(tǒng)單線程編程中,程序的運(yùn)行是同步的(同步不意味著所有步驟同時(shí)運(yùn)行,而是指步驟在一個(gè)控制流序列中按順序執(zhí)行)。而異步的概念則是不保證同步的概念,也就是說(shuō),一個(gè)異步過(guò)程的執(zhí)行將不再與原有的序列有順序關(guān)系。
代碼是自上而下同步執(zhí)行的,既后面的代碼必須等待前面的代碼執(zhí)行完才會(huì)執(zhí)行,而異步執(zhí)行則是將主線程中的某段代碼交由子線程去執(zhí)行,當(dāng)交給子線程后,主線程就會(huì)繼續(xù)執(zhí)行后面代碼,而不用等待子線程執(zhí)行完成,異步是程序語(yǔ)言并行執(zhí)行的一種手段,通常將耗時(shí)的任務(wù)交由子線程同時(shí)處理,從而提升整體任務(wù)耗時(shí)。