“全!狈g自英文Full Stack,表示為了完成一個(gè)項(xiàng)目所需要的一系列技術(shù)的集合。IT行業(yè)發(fā)展到現(xiàn)階段,開發(fā)一個(gè)Web應(yīng)用,工程師需要具備的技能涵蓋:前端標(biāo)記語(yǔ)言(如HTML 5、CSS 3)、前端編程語(yǔ)言(如JavaScript)、服務(wù)器端編程語(yǔ)言(如Node.js)、數(shù)據(jù)庫(kù)(如MongoDB)等,這些技術(shù)互相聯(lián)系、互相依賴,缺一不可。
《全棧開發(fā)實(shí)戰(zhàn)寶典》分享了全棧工程師的技能要求、核心競(jìng)爭(zhēng)力、未來(lái)發(fā)展方向,以及對(duì)移動(dòng)端的思考,內(nèi)容涵蓋了Web全棧開發(fā)的方方面面!度珬i_發(fā)實(shí)戰(zhàn)寶典》既可以為互聯(lián)網(wǎng)行業(yè)新人提供一幅精準(zhǔn)的技術(shù)路線圖,又可以作為相關(guān)從業(yè)程序員即學(xué)即用的工具書。
1. 優(yōu)逸客有限公司為全國(guó)知名的培訓(xùn)機(jī)構(gòu),有豐富的編寫和教學(xué)經(jīng)驗(yàn),同時(shí)也有一大批經(jīng)驗(yàn)豐富的培訓(xùn)師。
2. 全書包含了程序設(shè)計(jì)中前端、后臺(tái)、數(shù)據(jù)庫(kù)、框架等全流程知識(shí)講解,讓讀者學(xué)習(xí)事半功倍。
讀者現(xiàn)在拿在手里的這本書是優(yōu)逸客科技有限公司出品的“實(shí)戰(zhàn)寶典”系列叢書的第二部,第一部《HTML 5實(shí)戰(zhàn)寶典》可以在各大書店及相關(guān)網(wǎng)店購(gòu)買。
優(yōu)逸客科技有限公司是一家全國(guó)知名的實(shí)訓(xùn)機(jī)構(gòu),擁有一流的師資團(tuán)隊(duì),成員大多來(lái)自北京、上海的一線公司,他們擁有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。多年來(lái),從這里走出了3000多名優(yōu)秀的前端工程師,成就了無(wú)數(shù)學(xué)員的夢(mèng)想。2014年初,我們決定把自己掌握的知識(shí)和經(jīng)驗(yàn)分享給更多的人,幾經(jīng)籌劃,最終本系列叢書誕生。當(dāng)時(shí)大量Hybird App和Web App興起,企業(yè)為了追求高效,會(huì)使用HTML 5替代原生開發(fā),導(dǎo)致市場(chǎng)對(duì)HTML 5技術(shù)人才的需求量大大增加,為了滿足這個(gè)需求,我們出版了叢書的第一部《HTML 5實(shí)戰(zhàn)寶典》。很多前端工程師學(xué)習(xí)閱讀之后紛紛表示受益匪淺,積極反饋要求分享更多的知識(shí)以適應(yīng)新的Web開發(fā)趨勢(shì),正好在此期間我們的課程體系經(jīng)過多次打磨修正,全面升級(jí)到了全端+全棧的體系,我們覺得非常有必要把全端+全棧的知識(shí)分享給大家,所以就有了叢書的第二部《全棧開發(fā)實(shí)戰(zhàn)寶典》,希望大家喜歡!
《全棧開發(fā)實(shí)戰(zhàn)寶典》內(nèi)容主要圍繞全棧開發(fā)展開,那么什么是“全棧”?
“全棧”翻譯自英文Full-Stack,表示為了完成一個(gè)項(xiàng)目所需要的一系列技術(shù)的集合。IT行業(yè)發(fā)展到現(xiàn)階段,開發(fā)一個(gè)Web應(yīng)用,工程師需要具備的技能涵蓋前端標(biāo)記語(yǔ)言、前端編程語(yǔ)言、服務(wù)器端編程語(yǔ)言、數(shù)據(jù)庫(kù)等,這些技術(shù)互相聯(lián)系、互相依賴,缺一不可。以至于所有的IT公司都亟須有全棧人才的加入,縮短開發(fā)周期、減少開發(fā)成本、增強(qiáng)產(chǎn)品的伸縮性和可維護(hù)性。
近幾年前端技術(shù)飛速發(fā)展,使得前端程序語(yǔ)言JavaScript“煥發(fā)”出了它本該具有的光芒。在這種力量的支持下,后臺(tái)JavaScaript也迅猛發(fā)展,我們稱之為Node.js。Node.js的誕生使得前端程序員無(wú)障礙地進(jìn)入到后臺(tái)世界,與此同時(shí),非關(guān)系型數(shù)據(jù)庫(kù)如火如荼。 JavaScript再次發(fā)力完成對(duì)MongoDB的操作和控制。至此,JavaScript以全新的姿態(tài)進(jìn)入人們的視野。一種語(yǔ)言能夠完美地銜接前端、后臺(tái)、數(shù)據(jù)庫(kù),這是其他語(yǔ)言難以做到的,使得前端人員迅速占領(lǐng)了全棧工程師的高地。
圍繞這兩個(gè)核心概念,本書分為4部分來(lái)介紹全端和全棧開發(fā)中涉及的技術(shù)。
1. 全棧之Java Script
本部分主要介紹Java Script,包含它的“前世今生”、語(yǔ)法結(jié)構(gòu)、操作邏輯等。這一部分會(huì)結(jié)合讀者在工作中遇到的大量實(shí)例來(lái)全面剖析Java Script的每一個(gè)知識(shí)點(diǎn)。通過對(duì)比的方式對(duì)ES5和ES6做解析,讓讀者能夠明白新的語(yǔ)法結(jié)構(gòu)和語(yǔ)言升級(jí)的來(lái)龍去脈。
2. 全棧之PHP+MySQL
本部分主要介紹PHP和MySQL。作為一名前端工程師來(lái)說,向后臺(tái)進(jìn)軍顯然是不太容易的。我們需要掌握新的語(yǔ)言,需要掌握不同于前臺(tái)的編程思想,需要和數(shù)據(jù)打交道。但幸運(yùn)的是,Node.js的誕生幫助前端人員大大降低了進(jìn)入后臺(tái)的門檻。但是Node.js作為一個(gè)“新秀”,它天然繼承了大部分語(yǔ)言的精髓,所以入門相對(duì)來(lái)說比較難,于是我們先從PHP這個(gè)簡(jiǎn)單、優(yōu)秀的語(yǔ)言說起,讓讀者先明白一個(gè)應(yīng)用前后臺(tái)的架構(gòu)模式和編程思想,然后再進(jìn)入Node.js的學(xué)習(xí)。
這一部分內(nèi)容并不是本書的重點(diǎn),但是它起著承前啟后的作用,既能整合前面前端的內(nèi)容,又能理清后面Node.js的編程思想,同時(shí)讀者還能再掌握一門語(yǔ)言。這一部分中,我們將會(huì)以實(shí)際項(xiàng)目開發(fā)的思路帶領(lǐng)讀者寫一個(gè)自己的MVC框架,這樣既能熟悉PHP語(yǔ)法,又能了解PHP的主流編程思想,同時(shí)還能掌握現(xiàn)在流行的一些架構(gòu)模式。
3. 全棧之框架
本部分對(duì)Angular JS和React JS等流行的框架進(jìn)行了詳細(xì)的闡述。
4. 全棧之Node.js
Node.js 是一個(gè)讓 JavaScript 運(yùn)行在瀏覽器之外的平臺(tái)。它實(shí)現(xiàn)了諸如文件系統(tǒng)、模塊、包、操作系統(tǒng) API、網(wǎng)絡(luò)通信等JavaScript Core沒有或不完善的功能。
本部分的講解覆蓋了Web開發(fā)中的大多數(shù)知識(shí)點(diǎn),從原生JavaScript到AngularJS、ReactJS框架,從PHP到Node.js,深入講解ES6核心內(nèi)容,全面剖析Node.js開發(fā)模式,全面解讀MVVM模式和組件化開發(fā)模式,全面分析流行框架以及前端自動(dòng)化開發(fā)工具的原理。選題案例應(yīng)用價(jià)值高,且全部來(lái)源于大型項(xiàng)目的真實(shí)案例,完全可以應(yīng)用于真實(shí)的項(xiàng)目。
同時(shí),《全棧開發(fā)實(shí)戰(zhàn)寶典》作者團(tuán)隊(duì)曾指導(dǎo)上千名前端、全棧開發(fā)工程師高薪就業(yè),學(xué)習(xí)成果久經(jīng)考驗(yàn),列舉的實(shí)例數(shù)量多,質(zhì)量高,覆蓋最前沿的技術(shù)方案。他們不僅精通程序開發(fā),同時(shí)又是經(jīng)驗(yàn)豐富的講師,對(duì)學(xué)習(xí)過程中的重點(diǎn)、難點(diǎn),以及學(xué)生容易感到困惑的點(diǎn)都有非常精準(zhǔn)的把控,知識(shí)點(diǎn)之間的關(guān)聯(lián)、順序都是根據(jù)多年的實(shí)訓(xùn)經(jīng)驗(yàn)積淀而成,這一點(diǎn)在本書的各個(gè)章節(jié)中都有體現(xiàn)。
看著這樣一本書的誕生,我們百感交集,在這里要感謝所有為本書付出了大量精力的同事,沒有他們的辛勤工作,就沒有本書的問世,他們分別是優(yōu)逸客公司總經(jīng)理張宏帥,副總經(jīng)理嚴(yán)武軍,實(shí)訓(xùn)副總監(jiān)岳英俊,全棧團(tuán)隊(duì)馬彥龍、候?qū)幹、王琦、馬松、李星、石曉蕾、楊曉春、楊登輝。在本書編寫過程中,他們加班加點(diǎn),幾易其稿,精益求精,力求做到讓所有知識(shí)點(diǎn)都清晰明了,力爭(zhēng)每一段示例代碼都是經(jīng)過深思熟慮的精品,盡最大努力嘗試讓讀者在閱
第1部分 全棧之JavaScript
第1章 JavaScript基礎(chǔ)概念
1.1 JavaScript的用途
1.1.1 數(shù)據(jù)的驗(yàn)證
1.1.2 制作頁(yè)面動(dòng)態(tài)效果
1.1.3 對(duì)事件做出響應(yīng)
1.1.4 單頁(yè)面應(yīng)用
1.1.5 網(wǎng)頁(yè)游戲
1.1.6 服務(wù)器端的應(yīng)用
1.2 JavaScript的發(fā)展歷史
1.2.1 悄然誕生
1.2.2 穩(wěn)步發(fā)展
1.2.3 黃金時(shí)代
1.2.4 JavaScript和ECMAScript
1.2.5 JavaScript和Java
1.3 JavaScript的語(yǔ)法特點(diǎn)
1.3.1 基于對(duì)象
1.3.2 事件驅(qū)動(dòng)
1.3.3 松散型
1.3.4 解釋型
1.4 JavaScript的引入方式
1.4.1 在域名或者重定向的位置引入
1.4.2 在事件中引入
1.4.3 在頁(yè)面中嵌入
1.4.4 引入外部JavaScript文件
1.4.5 注意事項(xiàng)
1.5 JavaScript中的輸出工具
1.5.1 console
1.5.2 alert()
1.5.3 document.write();
1.5.4 prompt(str,[value]);
1.5.5 confirm()
1.5.6 JavaScript注釋
第2章 基本構(gòu)成
2.1 JavaScript變量
2.1.1 變量的概念
2.1.2 變量的聲明和賦值
2.1.3 聲明變量的其他注意事項(xiàng)
2.2 數(shù)據(jù)類型
2.2.1 typeof操作符
2.2.2 初始類型
2.2.3 引用類型
2.3 JavaScript運(yùn)算符
2.3.1 算術(shù)運(yùn)算符
2.3.2 關(guān)系運(yùn)算符(或比較運(yùn)算符
2.3.3 賦值運(yùn)算符
2.3.4 邏輯運(yùn)算符
2.3.5 一元運(yùn)算符
2.3.6 三元運(yùn)算符
2.3.7 特殊運(yùn)算符
2.4 JavaScript流程控制
2.4.1 名詞解釋
2.4.2 選擇結(jié)構(gòu)
2.4.3 循環(huán)結(jié)構(gòu)
第3章 函數(shù)和數(shù)組
3.1 函數(shù)的基本概念
3.1.1 函數(shù)的聲明
3.1.2 函數(shù)的調(diào)用
3.1.3 參數(shù)
3.1.4 函數(shù)的返回值
3.1.5 作用域
3.1.6 回調(diào)函數(shù)
3.1.7 遞歸函數(shù)
3.1.8 閉包函數(shù)
3.2 內(nèi)置頂層函數(shù)和數(shù)據(jù)類型轉(zhuǎn)換
3.2.1 內(nèi)置頂層函數(shù)
3.2.2 數(shù)據(jù)類型轉(zhuǎn)換
3.3 ES6中新增的函數(shù)語(yǔ)法
3.3.1 函數(shù)參數(shù)的默認(rèn)值
3.3.2 函數(shù)的name屬性
3.3.3 箭頭函數(shù)
3.4 數(shù)組
3.4.1 數(shù)組的概念
3.4.2 數(shù)組的創(chuàng)建
3.4.3 數(shù)組的訪問
3.4.4 數(shù)組的遍歷
第4章 對(duì)象
4.1 JavaScript對(duì)象
4.1.1 名詞解釋
4.1.2 創(chuàng)建對(duì)象的方法
4.1.3 屬性與方法
4.1.4 銷毀對(duì)象
4.1.5 對(duì)象的遍歷
4.1.6 對(duì)象的存儲(chǔ)方式
4.1.7 instanceof
4.2 對(duì)象的特性
4.2.1 對(duì)象的特性——封裝
4.2.2 對(duì)象的特性——繼承
4.2.3 this指針
4.2.4 對(duì)象的分類
4.3 ES6中對(duì)象的新特性
4.3.1 類的支持
4.3.2 變量的解構(gòu)賦值
4.3.3 擴(kuò)展運(yùn)算符(spread)和rest參數(shù)
4.3.4 屬性的簡(jiǎn)潔表示
4.3.5 屬性名表達(dá)式
4.3.6 方法的name屬性
第5章 原生對(duì)象
5.1 Object對(duì)象
5.1.1 Object的常用方法
5.1.2 屬性的遍歷(Object對(duì)象方法的使用)
5.2 Math對(duì)象
5.2.1 Math對(duì)象的屬性
5.2.2 Math對(duì)象的方法
5.3 字符串對(duì)象
5.3.1 創(chuàng)建String對(duì)象
5.3.2 字符串對(duì)象的屬性
5.3.3 字符串對(duì)象的方法
5.4 數(shù)組對(duì)象
5.4.1 數(shù)組對(duì)象的屬性
5.4.2 數(shù)組對(duì)象的方法
5.4.3 數(shù)組對(duì)象的構(gòu)造函數(shù)的方法
5.5 日期對(duì)象
5.5.1 定義日期對(duì)象
5.5.2 獲取日期信息的方法
5.5.3 設(shè)置日期的方法
5.6 正則
5.6.1 正則表達(dá)式的概念
5.6.2 應(yīng)用場(chǎng)合
5.6.3 創(chuàng)建正則表達(dá)式
5.6.4 正則表達(dá)式的模式
5.6.5 正則方法
5.6.6 字符串中用到正則的函數(shù)
5.7 Set數(shù)據(jù)結(jié)構(gòu)
5.7.1 Set基本用法
5.7.2 Set屬性和方法
5.7.3 Set遍歷方法
5.7.4 WeakSet
5.8 Map數(shù)據(jù)結(jié)構(gòu)
5.8.1 Map 基本用法
5.8.2 Map 屬性和方法
5.8.3 Map 遍歷方法
5.8.4 Map與數(shù)組對(duì)象的轉(zhuǎn)換
5.8.5 WeakMap
第6章 常見網(wǎng)頁(yè)效果制作
6.1 BOM介紹
6.1.1 window對(duì)象
6.1.2 document對(duì)象
6.1.3 history對(duì)象
6.1.4 location對(duì)象
6.1.5 screen對(duì)象
6.1.6 navigator對(duì)象
6.2 DOM介紹
6.2.1 對(duì)內(nèi)容進(jìn)行操作
6.2.2 對(duì)樣式進(jìn)行操作
6.2.3 對(duì)屬性的操作
6.2.4 對(duì)類名的操作
6.2.5 事件
6.2.6 綜合運(yùn)用——制作網(wǎng)頁(yè)輪播圖效果
6.2.7 獲取位置和尺寸
6.2.8 獲取具有滾動(dòng)條元素的滾動(dòng)位置
6.2.9 案例展示——樓層跳轉(zhuǎn)效果制作
6.2.10 結(jié)點(diǎn)的屬性和方法
6.2.11 事件對(duì)象
6.2.12 事件流
6.2.13 案例展示——移動(dòng)端可拖曳輪播圖展示
6.3 綜合練習(xí)——面向?qū)ο蟮拇蜃钟螒?br>
第7章 AJAX詳解
7.1 AJAX原理介紹
7.1.1 AJAX的特點(diǎn)
7.1.2 與傳統(tǒng)的Web應(yīng)用比較
7.1.3 AJAX的工作原理
7.1.4 XMLHttpRequest對(duì)象
7.1.5 GET和POST的區(qū)別
7.1.6 同步和異步的區(qū)別
7.2 AJAX函數(shù)封裝
7.3 AJAX運(yùn)用
第8章 客戶端存儲(chǔ)及應(yīng)用
8.1 Cookie簡(jiǎn)介
8.1.1 Coo