前端知識體系梳理

從native開發(fā)轉到web開發(fā)到現(xiàn)在也將近一年了籍滴,零零散散的學習了很多東西伙菜,但是始終沒有系統(tǒng)化的感知,最近這段時間刻意將知識進行了一遍梳理垦搬,以更好的理解前端世界。本篇文章不會去談論某個技術點艳汽,而是從一個宏觀的視角來看前端開發(fā)猴贰。盡量從我個人開發(fā)中遇到的一些問題和困惑進行闡述(如有錯誤歡迎指正)。?

一河狐、web世界的基礎?

眾所周知米绕,web世界有三大基石html、css馋艺、javascript,這三塊構成了web世界栅干,而每一部分的都要很多的知識積累才能運用的游刃有余。剛開始丈钙,單純的來看這三個的每一部分都不會太復雜非驮,感覺看一兩天就可以入手寫代碼了交汤,事實上對于初級入門的人來說雏赦,通過簡單的html、css芙扎、js就能構造出一個美麗的界面星岗,確實是這樣,但是隨著學習的加深戒洼,以及實踐工程中遇到的問題俏橘,你會發(fā)現(xiàn),僅僅掌握這些遠遠還不夠圈浇。本篇文章將會就我學習開發(fā)中遇到的疑問進行闡述寥掐。

二、主流問題的理解

1磷蜀、html5到底是干啥的召耘?

為什么感覺和移動設備緊密關聯(lián)? html的前世今生網(wǎng)上都可以搜得到褐隆,簡單概括html5到底改變了什么污它? 大概總結下:html5具有更好的語義特性、本地存儲特性、設備兼容特性衫贬、網(wǎng)頁多媒體特性德澈、css3特性等。 在我的初始概念里面html5貌似是和移動端緊密相關的固惯,實時上不是這樣的梆造,他同樣適用于PC端,他是web的新一代開發(fā)標準缝呕。只不過h5大大提升了對移動端的支持能力“囊ぃ現(xiàn)在有些桌面瀏覽器對html5的支持還不健全,有些新特性不見得能生效(現(xiàn)代瀏覽器支持度較高)供常,而移動設備上(android摊聋、ios)的瀏覽器(或webview)大都是webkit內(nèi)核,對html5的支持度較高栈暇,所以一般在移動設備上使用不會出太大的兼容性問題麻裁。

2、javascript的標準是什么源祈?和ECMAScript有什么關系煎源??

javascript剛開始是有Netscape公司開發(fā)出來的,命名是為了跟上java這股熱風(但和java毫無關系)香缺。隨后微軟進入了瀏覽器市場手销,由此催生了javascript的標準化,而這個標準名稱就叫ECMAScript,從此javacript正式成為一門語言图张。實際上锋拖,javascript是ECMAScript的超集,可以認為是和typescript一樣的存在祸轮。他們都實現(xiàn)了ECMAScript的標準兽埃。我們現(xiàn)在所說的標準規(guī)范都指ECMAScript規(guī)范,當前流行的最著名的就是ES5适袜、ES6等標準柄错。

三、為什么現(xiàn)在一個web工程如此“繁雜”?

前面說到苦酱,單純的一個web頁面售貌,只需要html、css樣式疫萤、js代碼就可以完成颂跨,看起來簡單明了,但是為什么現(xiàn)在很多前端應用代碼看起來已經(jīng)不單單是html给僵、css毫捣、js(甚至連html详拙、js的影子都看不到)?為什么看不到后端工程代碼了蔓同?為什么代碼中出現(xiàn)了一些看不懂的寫法(我明明已經(jīng)學會了html饶辙、css和js)?為什么現(xiàn)在前端工程還出現(xiàn)了一些類似于配置的文件(如常見的webpack.js斑粱、package.json弃揽、.bablerc等等)?為什么現(xiàn)在前端工程看起來變得越來越“繁雜”则北?這些都是為什么矿微?

一句話,這些都是為了提升效率尚揣、便于工程維護管理涌矢、優(yōu)化應用性能而產(chǎn)生的。 我不用這些東西可以嗎快骗?可以娜庇,但是你的項目會變得很難維護和管理,而且開發(fā)效率低下方篮。

三名秀、這些需求都是怎么產(chǎn)生的?

1藕溅、前后端分離?

早期web開發(fā)一般是存在于后端工程匕得,前后端在一個工程里面,而且開發(fā)相互依賴制約巾表,無法做到協(xié)同開發(fā)汁掠,為此前后端分離就此產(chǎn)生,前端擁有自己的項目工程攒发,更多的關注視圖展示调塌、頁面渲染這一層晋南,有后端提供渲染所需數(shù)據(jù)接口等惠猿,二者通過網(wǎng)絡(http...)進行交互,這樣前端后端實現(xiàn)了解耦负间,可以只關注自己的業(yè)務邏輯偶妖,而不相互制約。所以很多工程已經(jīng)是純前端代碼政溃,后端只提供api數(shù)據(jù)接口即可趾访。

2、模塊化開發(fā)?

模塊化故名思議是化整體為局部的意思董虱,這樣不僅方便編碼扼鞋,而且有利于系統(tǒng)職責劃分申鱼,使得系統(tǒng)結構更加清晰,更便于維護云头。模塊化的出現(xiàn)能更好的管理項目的依賴和版本捐友,且可以控制依賴的加載順序。模塊化并不是任意的劃分溃槐,而是要遵循一定的標準匣砖。前端由于各種各樣的原因,模塊化(js)標準出了很多個昏滴,其中最有名氣的就是AMD猴鲫、CMD、CommonJs谣殊、ES6+等模塊化標準拂共。所以現(xiàn)在看前端很多庫代碼都有不同的模塊實現(xiàn)方式,這些都給開發(fā)人員帶來了一定的繁瑣性姻几,比如不同規(guī)范模塊需要采用不同的寫法匣缘。這些規(guī)范的特性這里不累述,從目前來看鲜棠,各個標準共存的現(xiàn)狀還很多肌厨,但我認為ES6模塊化標準將會逐漸替代其他標準。

3豁陆、優(yōu)秀的框架?

原始的web應用開發(fā)柑爸,一般會采用直接操作dom等形式,這種開發(fā)不僅會使代碼變的復雜和難以維護盒音,同樣性能消耗也得不到保證表鳍。為了解決這些問題,一系列優(yōu)秀框架應運而生祥诽。如react譬圣、vue、angular2等雄坪。本人在開發(fā)中使用過react厘熟、vue等框架,確實不僅能大大提升開發(fā)效率维哈,還能更好的優(yōu)化性能绳姨。

4、新語言的出現(xiàn)?

1阔挠、ECScript6 es6是新一代javascript標識飘庄,引入了很多新的思想,如果模塊規(guī)范化购撼、class預發(fā)跪削、箭頭函數(shù)等等谴仙,這些東西出現(xiàn)大大提升了開發(fā)效率。?

2碾盐、TypeScript Microsoft開發(fā)的偏向靜態(tài)的語言狞甚,他是javascript的一個超集,能讓開發(fā)者擁有開發(fā)靜態(tài)類型檢查語言的體驗廓旬,減少未知性哼审。?

3、LESS等 這一類語言是一種CSS的預處理器孕豹,主要是解決了CSS的一些痛點涩盾,比如增加些變量支持、作用域支持等励背,除此之外春霍,這些語言基本和CSS寫法一致。

四叶眉、還缺點什么址儒??

前面提到了前端發(fā)展過程中出現(xiàn)的各類技術,這些技術的出現(xiàn)大大提升了開發(fā)效率衅疙,方便了開發(fā)人員莲趣。但是福兮禍之所倚,事物都有兩面性饱溢,這些技術的出現(xiàn)固然解決了很多痛點喧伞,但也引入了一些需要額外處理的糟點。

1绩郎、痛點?

首先潘鲫,采用這些技術寫的源代碼都無法直接在瀏覽器中運行,瀏覽器只識別符合自己標準的代碼肋杖。比如采用es6語法寫的代碼無法再直接瀏覽器中運行(不支持)溉仑,所以這就需要額外的手段來對源代碼進行轉換,這就引出了打包構建工具:webpack状植、gulp浊竟、grunt等。

由上面的探討可知浅萧,構建要做的工作就是為了解決這一類痛點逐沙。因此哲思,一般的構建工具會完成以下工作:?

(1)代碼轉換:比如將TypeScript編譯成JavaScript洼畅,將less編譯成css等。?

(2)模塊合并:前面提到現(xiàn)在都是模塊化開發(fā)棚赔,所以構建工具需要將多個模塊合并成一個文件帝簇,這樣才構建出一個可以面向用戶交互的完整頁面徘郭。?

(3)壓縮:主要是壓縮js、css丧肴、html残揉、圖片等。?

(4)其他功能支持(如預發(fā)檢查等等...) 上面提到的一些構建工具或多或少都能解決這些痛點芋浮。

2抱环、webpack是什么,為什么使用的如此廣泛纸巷??

因為當前前端開發(fā)基本都是采用模塊化(+新技術+新框架)的開發(fā)模式镇草,而webpack是專注于構建模塊化的工具,可以提供一站式解決方案瘤旨,使用的非常多梯啤。webpack的默認配置文件是項目根目錄下的webpack.config.js,這里會配置如何構建的描述說明,最后會按照commonjs規(guī)范(因為webpack構建是運行在node.js環(huán)境下)導出該描述對象存哲。真對上文新技術語法因宇,在webpack.config.js配置相關的loader即可,這些loader會對其進行轉換祟偷,以運行于瀏覽器中察滑。webpack的內(nèi)容很多,這里不是想討論如何使用修肠,而是想表明它出現(xiàn)并繁榮的原因杭棵。

3、npm是什么

web開發(fā)中氛赐,通常所有的模塊都是以包的形式存在的魂爪,而這些包是通過npm進行管理的。這里就引出了javascript世界中最有名的包管理工具-npm艰管,npm具體能做什么有很多資料可查滓侍,簡單總結就是管理各種依賴,前面說現(xiàn)在前端開發(fā)基本是模塊化開發(fā)牲芋,而這些模塊一般會以npm包的形式存在撩笆,類似于maven、gradle的概念缸浦。前端工程一般都包含一個名字為package.json的配置文件夕冲,這里會展示出項目所以來的包。 比如想使用webpack進行項目構建裂逐,就可以通過npm進行包安裝歹鱼,然后即可使用。

五卜高、總結

任何一個領域要走的路都很長弥姻,從了解到熟練運用還只算入門南片,前端還有很一些高級特性如js原型鏈、新生代的一些編程思想庭敦、虛擬dom等疼进,還有編譯、執(zhí)行以及渲染引擎原理過程也需要了解秧廉,繼續(xù)向前~

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伞广,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子疼电,更是在濱河造成了極大的恐慌赔癌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澜沟,死亡現(xiàn)場離奇詭異灾票,居然都是意外死亡,警方通過查閱死者的電腦和手機茫虽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門刊苍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人濒析,你說我怎么就攤上這事正什。” “怎么了号杏?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵婴氮,是天一觀的道長。 經(jīng)常有香客問我盾致,道長主经,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任庭惜,我火速辦了婚禮罩驻,結果婚禮上,老公的妹妹穿的比我還像新娘护赊。我一直安慰自己惠遏,他們只是感情好,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布骏啰。 她就那樣靜靜地躺著节吮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪判耕。 梳的紋絲不亂的頭發(fā)上透绩,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天,我揣著相機與錄音,去河邊找鬼渺贤。 笑死雏胃,一個胖子當著我的面吹牛请毛,可吹牛的內(nèi)容都是我干的志鞍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼方仿,長吁一口氣:“原來是場噩夢啊……” “哼固棚!你這毒婦竟也來了?” 一聲冷哼從身側響起仙蚜,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤此洲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后委粉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呜师,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年贾节,在試婚紗的時候發(fā)現(xiàn)自己被綠了汁汗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡栗涂,死狀恐怖知牌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情斤程,我是刑警寧澤角寸,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站忿墅,受9級特大地震影響扁藕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疚脐,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一纹磺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亮曹,春花似錦橄杨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至役耕,卻和暖如春采转,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工故慈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留板熊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓察绷,卻偏偏與公主長得像干签,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拆撼,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

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

  • 1 Webpack 1.1 概念簡介 1.1.1 WebPack是什么 1容劳、一個打包工具 2、一個模塊加載工具 3...
    Kevin_Junbaozi閱讀 6,674評論 0 16
  • 人闸度, 都是囚徒竭贩, 被執(zhí)行了畫地為牢, 思想莺禁, 總在禁錮留量, 跟隨了抱殘守缺, 成名前哟冬, 經(jīng)歷多少蜚語流言楼熄, 忍受多少...
    幺資哥閱讀 155評論 0 1
  • 連哭都覺得無力 害怕這種手足無措
    鹿阿潞閱讀 346評論 0 0
  • 我們經(jīng)常聽到某某演員某某藝人被“雪藏”那你是否聽說過某某單位的人?被“雪藏“了柒傻,實際上這個現(xiàn)象在我們現(xiàn)實的生活和工...
    長新常紅閱讀 545評論 1 3
  • 我在空氣里聽到了我的名字 我在云朵里看到了我的心 我在太陽光里看到了我的影子 我在烏云密布的時候變成了我的心情 我...
    普通的女子閱讀 175評論 2 2