前端知識(shí)體系

前端三要素

HTML(結(jié)構(gòu)):超文本標(biāo)記語言(Hyper Text Markup Language),決定網(wǎng)頁的結(jié)構(gòu)和內(nèi)容
CSS(表現(xiàn)):層疊樣式表(Cascading Style Sheets)驾锰,設(shè)定網(wǎng)頁的表現(xiàn)樣式
JavaScript(行為):是一種弱類型腳本語言,其源代碼不需經(jīng)過編譯稻据,而是由瀏覽器解釋運(yùn)行,用于控制網(wǎng)頁的行為

結(jié)構(gòu)層(HTML5)

html全稱為HyperText Markup Language捻悯,中文直意為“超級(jí)文本標(biāo)記語言”而那個(gè)5對(duì)應(yīng)的是它的重大修改次數(shù)淤毛,自然你就明白了今缚,5就是第五修改低淡,第五代更新!

那么與H4對(duì)比H5有哪些好處?
  1. 通訊能力增強(qiáng)
    例如: WebSocket長連接蔗蹋,支持后端推送
  2. 性能得到了提示
    WebWorker -- 實(shí)現(xiàn)了網(wǎng)頁多線程加載,不會(huì)阻塞UI主線程
  3. 前端存儲(chǔ)能力得到提升
    cookie vs WebStorage:2K數(shù)據(jù) - 5M數(shù)據(jù)
  4. 增加了一系列新功能
    拖放API: 例如:dragstart:拖動(dòng)開始\drag:拖動(dòng)中\(zhòng)dragend:拖動(dòng)結(jié)束
    地理定位: 通過瀏覽器獲取當(dāng)前用戶的所在地理坐標(biāo)猪杭,以實(shí)現(xiàn)“LBS服務(wù)”(Location Based Service)餐塘,如實(shí)時(shí)導(dǎo)航、周邊推薦戒傻。
    圖片處理加強(qiáng):例如:SVG繪圖(矢量圖),Canvas繪圖(位圖)
    視頻和音頻: 增加了視頻及音頻的標(biāo)簽
    增強(qiáng)型表單:新的表單元素、表單元素的新屬性
  5. 新的語義標(biāo)簽:
    <article>
    <aside>
    <details>
    <figcaption>
    <figure>
    <footer>
    <header>
    <main>
    <mark>
    <nav>
    <section>
    <summary>
    <time>

表現(xiàn)層(CSS3)

CSS 層疊樣式表是一門標(biāo)記語言需纳,并不是編程語言,因此不可以自定義變量不翩,不可以引用等,換句話說就是不具備任何語法支持慌盯,它主要缺陷如下:

  • 語法不夠強(qiáng)大掂器,比如無法嵌套書寫亚皂,導(dǎo)致模塊化開發(fā)中需要書寫很多重復(fù)的選擇器;
  • 沒有變量和合理的樣式復(fù)用機(jī)制国瓮,使得邏輯上相關(guān)的屬性值必須以字面量的形式重復(fù)輸出灭必,導(dǎo)致難以維護(hù)乃摹;

這就導(dǎo)致了我們?cè)诠ぷ髦袩o端增加了許多工作量。為了解決這個(gè)問題孵睬,前端開發(fā)人員會(huì)使用一種稱之為 【CSS 預(yù)處理器】 的工具,提供 CSS 缺失的樣式層復(fù)用機(jī)制掰读、減少冗余代碼,提高樣式代碼的可維護(hù)性烁试。大大提高了前端在樣式上的開發(fā)效率。

什么是 CSS 預(yù)處理器

CSS 預(yù)處理器定義了一種新的語言拢肆,其基本思想是减响,用一種專門的編程語言,為 CSS 增加了一些編程的特性支示,將 CSS 作為目標(biāo)生成文件鄙才,然后開發(fā)者就只要使用這種語言進(jìn)行 CSS 的編碼工作颂鸿。轉(zhuǎn)化成通俗易懂的話來說就是“用一種專門的編程語言咒循,進(jìn)行 Web 頁面樣式設(shè)計(jì)绞愚,再通過編譯器轉(zhuǎn)化為正常的 CSS 文件颖医,以供項(xiàng)目使用”。

常用的 CSS 預(yù)處理器有哪些
  • SASS:基于 Ruby熔萧,通過服務(wù)端處理,功能強(qiáng)大贮缕。解析效率高俺榆。需要學(xué)習(xí) Ruby 語言,上手難度高于 LESS罐脊。
  • LESS:基于 NodeJS,通過客戶端處理萍桌,使用簡單。功能比 SASS 簡單恃逻,解析效率也低于 SASS藕施,但在實(shí)際開發(fā)中足夠了,所以我們后臺(tái)人員如果需要的話铅碍,建議使用 LESS。

Less示例

/* Mixin */
@base: #663333;
@complement1: spin(@base, 180); //旋轉(zhuǎn)180度
@complement2: darken(spin(@base, 180), 5%);  //變暗5%
@lighten1: lighten(@base, 15%);  //變亮15%
@lighten2: lighten(@base, 30%);  //變亮30%
 
/* Implementation */
.one   {color: @base;}
.two   {color: @complement1;}
.three {color: @complement2;}
.four  {color: @lighten1;}
.five  {color: @lighten2;}

前端代碼構(gòu)建工具

CSS3新特性

1.媒體查詢(@media)尘盼,多欄布局(flex)
2.css動(dòng)畫:取代動(dòng)畫圖片、Flash 動(dòng)畫以及 JavaScript卿捎,主要是transform及animation
太陽9大行星示例
3.CSS3選擇器径密,例如:p:nth-child(3){} //父元素的第3個(gè)子元素
4.文字特效,例如反射效果

<style>
.classReflect{ 
-webkit-box-reflect: below 5px 
-webkit-gradient(linear, left top, left bottom, from(transparent), 
     to(rgba(255, 255, 255, 0.51))); 
}   
</style>
<p class="classReflect">WEB2.0</p>

行為層(JavaScript)

JavaScript 一門弱類型腳本語言,其源代碼在發(fā)往客戶端運(yùn)行之前不需經(jīng)過編譯植袍,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運(yùn)行籽懦。

ES6

原生 JS ,也就是讓我們按照 【ECMAScript】 標(biāo)準(zhǔn)的開發(fā)方式暮顺,簡稱是 ES,特點(diǎn)是所有瀏覽器都支持捶码。

  • ES5(全瀏覽器支持)
  • ES6(常用,當(dāng)前主流版本)

區(qū)別就是逐步增加新特性档押。

ES6新特性

詳情請(qǐng)點(diǎn)擊: ES6新特性

主流JavaScript 框架
  • jQuery:大家熟知的 JavaScript 框架尤筐,優(yōu)點(diǎn)是簡化了 DOM 操作洞就,缺點(diǎn)是 DOM 操作太頻繁盆繁,影響前端性能旬蟋;在前端眼里使用它僅僅是為了兼容 IE6、7冕碟、8匆浙;
  • Angular:Google 收購的前端框架,由一群 Java 程序員開發(fā)首尼,其特點(diǎn)是將后臺(tái)的 MVC 模式搬到了前端并增加了模塊化開發(fā)的理念,與微軟合作软能,采用 TypeScript 語法開發(fā);對(duì)后臺(tái)程序員友好凳枝,對(duì)前端程序員不太友好跋核;最大的缺點(diǎn)是版本迭代不合理(如:1代 -> 2代岖瑰,除了名字,基本就是兩個(gè)東西聪全;截止發(fā)表博客時(shí)已推出了 Angular6)
  • React:Facebook 出品辅辩,一款高性能的 JS 前端框架;特點(diǎn)是提出了新概念 【虛擬 DOM】 用于減少真實(shí) DOM 操作玫锋,在內(nèi)存中模擬 DOM 操作,有效的提升了前端渲染效率谦炬;缺點(diǎn)是使用復(fù)雜键思,因?yàn)樾枰~外學(xué)習(xí)一門 【JSX】 語言;
  • Vue:一款漸進(jìn)式 JavaScript 框架吼鳞,所謂漸進(jìn)式就是逐步實(shí)現(xiàn)新特性的意思叫搁,如實(shí)現(xiàn)模塊化開發(fā)、路由渴逻、狀態(tài)管理等新特性。其特點(diǎn)是綜合了 Angular(模塊化) 和 React(虛擬 DOM) 的優(yōu)點(diǎn)雪位;
  • Axios:前端通信框架梨撞;因?yàn)?Vue 的邊界很明確雹洗,就是為了處理 DOM聋袋,所以并不具備通信能力,此時(shí)就需要額外使用一個(gè)通信框架與服務(wù)器交互嗜侮;當(dāng)然也可以直接選擇使用 jQuery 提供的 AJAX 通信功能;
UI 框架
  • Ant-Design:阿里巴巴出品锈颗,基于 React 的 UI 框架
  • ElementUI:餓了么出品,基于 Vue 的 UI 框架
  • Bootstrap:Twitter 推出的一個(gè)用于前端開發(fā)的開源工具包
  • AmazeUI:又叫“妹子 UI”击吱,一款 HTML5 跨屏前端框架
JavaScript 構(gòu)建工具
  • Babel:JS 編譯工具,主要用于瀏覽器不支持的 ES 新特性朵纷,比如用于編譯 TypeScript
  • WebPack:模塊打包器永脓,主要作用是打包、壓縮常摧、合并及按序加載

Nodejs后端技術(shù)

前端人員為了方便開發(fā)也需要掌握一定的后端技術(shù),但我們 Java 后臺(tái)人員知道后臺(tái)知識(shí)體系極其龐大復(fù)雜落午,所以為了方便前端人員開發(fā)后臺(tái)應(yīng)用,就出現(xiàn)了 NodeJS 這樣的技術(shù)界拦。

NodeJS 的作者已經(jīng)聲稱放棄 NodeJS(說是架構(gòu)做的不好再加上笨重的 node_modules盐类,可能讓作者不爽了吧),開始開發(fā)全新架構(gòu)的 Deno

既然是后臺(tái)技術(shù)在跳,那肯定也需要框架和項(xiàng)目管理工具隐岛,NodeJS 框架及項(xiàng)目管理工具如下:

  • Express:NodeJS 框架
  • Koa:Express 簡化版
  • NPM:項(xiàng)目綜合管理工具,類似于 Maven
  • YARN:NPM 的替代方案割坠,類似于 Maven 和 Gradle 的關(guān)系

附A:當(dāng)前主流前端框架

Vue.js

iView

iview 是一個(gè)強(qiáng)大的基于 Vue 的 UI 庫妒牙,有很多實(shí)用的基礎(chǔ)組件比 elementui 的組件更豐富彼哼,主要服務(wù)于 PC 界面的中后臺(tái)產(chǎn)品湘今。使用單文件的 Vue 組件化開發(fā)模式 基于 npm + webpack + babel 開發(fā),支持 ES2015 高質(zhì)量拴签、功能豐富 友好的 API ,自由靈活地使用空間蚓哩。

備注:屬于前端主流框架,選型時(shí)可考慮使用喜颁,主要特點(diǎn)是移動(dòng)端支持較多

ElementUI

Element 是餓了么前端開源維護(hù)的 Vue UI 組件庫曹阔,組件齊全稿茉,基本涵蓋后臺(tái)所需的所有組件漓库,文檔講解詳細(xì),例子也很豐富茂装。主要用于開發(fā) PC 端的頁面少态,是一個(gè)質(zhì)量比較高的 Vue UI 組件庫。

備注:屬于前端主流框架侨歉,選型時(shí)可考慮使用,主要特點(diǎn)是桌面端支持較多

ICE

飛冰是阿里巴巴團(tuán)隊(duì)基于 React/Angular/Vue 的中后臺(tái)應(yīng)用解決方案火脉,在阿里巴巴內(nèi)部棋枕,已經(jīng)有 270 多個(gè)來自幾乎所有 BU 的項(xiàng)目在使用兵睛。飛冰包含了一條從設(shè)計(jì)端到開發(fā)端的完整鏈路祖很,幫助用戶快速搭建屬于自己的中后臺(tái)應(yīng)用。

備注:主要組件還是以 React 為主骨稿,截止 2019 年 02 月 17 日更新博客前對(duì) Vue 的支持還不太完善形耗,目前尚處于觀望階段

VantUI

Vant UI 是有贊前端團(tuán)隊(duì)基于有贊統(tǒng)一的規(guī)范實(shí)現(xiàn)的 Vue 組件庫激涤,提供了一整套 UI 基礎(chǔ)組件和業(yè)務(wù)組件倦踢。通過 Vant,可以快速搭建出風(fēng)格統(tǒng)一的頁面般贼,提升開發(fā)效率。

AtUI

at-ui 是一款基于 Vue 2.x 的前端 UI 組件庫,主要用于快速開發(fā) PC 網(wǎng)站產(chǎn)品端衰。 它提供了一套 npm + webpack + babel 前端開發(fā)工作流程灭抑,CSS 樣式獨(dú)立腾节,即使采用不同的框架實(shí)現(xiàn)都能保持統(tǒng)一的 UI 風(fēng)格案腺。

CubeUI

cube-ui 是滴滴團(tuán)隊(duì)開發(fā)的基于 Vue.js 實(shí)現(xiàn)的精致移動(dòng)端組件庫。支持按需引入和后編譯同辣,輕量靈活;擴(kuò)展性強(qiáng)陡舅,可以方便地基于現(xiàn)有組件實(shí)現(xiàn)二次開發(fā)靶衍。

混合開發(fā)

Flutter

Flutter 是谷歌的移動(dòng)端 UI 框架,可在極短的時(shí)間內(nèi)構(gòu)建 Android 和 iOS 上高質(zhì)量的原生級(jí)應(yīng)用田弥。Flutter 可與現(xiàn)有代碼一起工作, 它被世界各地的開發(fā)者和組織使用, 并且 Flutter 是免費(fèi)和開源的偷厦。

備注:Google 出品剖笙,主要特點(diǎn)是快速構(gòu)建原生 APP 應(yīng)用程序弥咪,如做混合應(yīng)用該框架為必選框架

Ionic

Ionic 既是一個(gè) CSS 框架也是一個(gè) Javascript UI 庫聚至,Ionic 是目前最有潛力的一款 HTML5 手機(jī)應(yīng)用開發(fā)框架扳躬。通過 SASS 構(gòu)建應(yīng)用程序库说,它提供了很多 UI 組件來幫助開發(fā)者開發(fā)強(qiáng)大的應(yīng)用潜的。它使用 JavaScript MVVM 框架和 AngularJS/Vue 來增強(qiáng)應(yīng)用。提供數(shù)據(jù)的雙向綁定亡呵,使用它成為 Web 和移動(dòng)開發(fā)者的共同選擇。

附B:其他

了解前后分離的演變史
了解前端 MVVM 模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嫩码,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖驹针,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暗甥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寄月,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門克懊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事损搬∏汕冢” “怎么了踢关?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵柒瓣,是天一觀的道長搂鲫。 經(jīng)常有香客問我魂仍,道長俱诸,這世上最難降的妖魔是什么睁搭? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮锌唾,結(jié)果婚禮上鸠珠,老公的妹妹穿的比我還像新娘。我一直安慰自己驯耻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般轩勘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上澄步,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天王凑,我揣著相機(jī)與錄音,去河邊找鬼索烹。 笑死弱睦,一個(gè)胖子當(dāng)著我的面吹牛百姓,可吹牛的內(nèi)容都是我干的况木。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼求类,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼痹屹!你這毒婦竟也來了硼被?” 一聲冷哼從身側(cè)響起寿弱,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤按灶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鸯旁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摩疑,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛋勺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年烘贴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汽纠。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呢袱,死狀恐怖治专,靈堂內(nèi)的尸體忽然破棺而出棒旗,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布嗡官,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望埋哟。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春因苹,著一層夾襖步出監(jiān)牢的瞬間款筑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國打工浮驳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昆著,地道東北人宣吱。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像疤坝,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容