“全!狈g自英文Full Stack,表示為了完成一個(gè)項(xiàng)目所需要的一系列技術(shù)的集合。IT行業(yè)發(fā)展到現(xiàn)階段,開發(fā)一個(gè)Web應(yīng)用,工程師需要具備的技能涵蓋:前端標(biāo)記語言(如HTML 5、CSS 3)、前端編程語言(如JavaScript)、服務(wù)器端編程語言(如Node.js)、數(shù)據(jù)庫(如MongoDB)等,這些技術(shù)互相聯(lián)系、互相依賴,缺一不可。
《全棧開發(fā)實(shí)戰(zhàn)寶典》分享了全棧工程師的技能要求、核心競爭力、未來發(fā)展方向,以及對移動(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)逸客有限公司為全國知名的培訓(xùn)機(jī)構(gòu),有豐富的編寫和教學(xué)經(jīng)驗(yàn),同時(shí)也有一大批經(jīng)驗(yàn)豐富的培訓(xùn)師。
2. 全書包含了程序設(shè)計(jì)中前端、后臺(tái)、數(shù)據(jù)庫、框架等全流程知識(shí)講解,讓讀者學(xué)習(xí)事半功倍。
讀者現(xiàn)在拿在手里的這本書是優(yōu)逸客科技有限公司出品的“實(shí)戰(zhàn)寶典”系列叢書的第二部,第一部《HTML 5實(shí)戰(zhàn)寶典》可以在各大書店及相關(guān)網(wǎng)店購買。
優(yōu)逸客科技有限公司是一家全國知名的實(shí)訓(xùn)機(jī)構(gòu),擁有一流的師資團(tuán)隊(duì),成員大多來自北京、上海的一線公司,他們擁有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。多年來,從這里走出了3000多名優(yōu)秀的前端工程師,成就了無數(shù)學(xué)員的夢想。2014年初,我們決定把自己掌握的知識(shí)和經(jīng)驗(yàn)分享給更多的人,幾經(jīng)籌劃,最終本系列叢書誕生。當(dāng)時(shí)大量Hybird App和Web App興起,企業(yè)為了追求高效,會(huì)使用HTML 5替代原生開發(fā),導(dǎo)致市場對HTML 5技術(shù)人才的需求量大大增加,為了滿足這個(gè)需求,我們出版了叢書的第一部《HTML 5實(shí)戰(zhàn)寶典》。很多前端工程師學(xué)習(xí)閱讀之后紛紛表示受益匪淺,積極反饋要求分享更多的知識(shí)以適應(yīng)新的Web開發(fā)趨勢,正好在此期間我們的課程體系經(jīng)過多次打磨修正,全面升級到了全端+全棧的體系,我們覺得非常有必要把全端+全棧的知識(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)記語言、前端編程語言、服務(wù)器端編程語言、數(shù)據(jù)庫等,這些技術(shù)互相聯(lián)系、互相依賴,缺一不可。以至于所有的IT公司都亟須有全棧人才的加入,縮短開發(fā)周期、減少開發(fā)成本、增強(qiáng)產(chǎn)品的伸縮性和可維護(hù)性。
近幾年前端技術(shù)飛速發(fā)展,使得前端程序語言JavaScript“煥發(fā)”出了它本該具有的光芒。在這種力量的支持下,后臺(tái)JavaScaript也迅猛發(fā)展,我們稱之為Node.js。Node.js的誕生使得前端程序員無障礙地進(jìn)入到后臺(tái)世界,與此同時(shí),非關(guān)系型數(shù)據(jù)庫如火如荼。 JavaScript再次發(fā)力完成對MongoDB的操作和控制。至此,JavaScript以全新的姿態(tài)進(jìn)入人們的視野。一種語言能夠完美地銜接前端、后臺(tái)、數(shù)據(jù)庫,這是其他語言難以做到的,使得前端人員迅速占領(lǐng)了全棧工程師的高地。
圍繞這兩個(gè)核心概念,本書分為4部分來介紹全端和全棧開發(fā)中涉及的技術(shù)。
1. 全棧之Java Script
本部分主要介紹Java Script,包含它的“前世今生”、語法結(jié)構(gòu)、操作邏輯等。這一部分會(huì)結(jié)合讀者在工作中遇到的大量實(shí)例來全面剖析Java Script的每一個(gè)知識(shí)點(diǎn)。通過對比的方式對ES5和ES6做解析,讓讀者能夠明白新的語法結(jié)構(gòu)和語言升級的來龍去脈。
2. 全棧之PHP+MySQL
本部分主要介紹PHP和MySQL。作為一名前端工程師來說,向后臺(tái)進(jìn)軍顯然是不太容易的。我們需要掌握新的語言,需要掌握不同于前臺(tái)的編程思想,需要和數(shù)據(jù)打交道。但幸運(yùn)的是,Node.js的誕生幫助前端人員大大降低了進(jìn)入后臺(tái)的門檻。但是Node.js作為一個(gè)“新秀”,它天然繼承了大部分語言的精髓,所以入門相對來說比較難,于是我們先從PHP這個(gè)簡單、優(yōu)秀的語言說起,讓讀者先明白一個(gè)應(yīng)用前后臺(tái)的架構(gòu)模式和編程思想,然后再進(jìn)入Node.js的學(xué)習(xí)。
這一部分內(nèi)容并不是本書的重點(diǎn),但是它起著承前啟后的作用,既能整合前面前端的內(nèi)容,又能理清后面Node.js的編程思想,同時(shí)讀者還能再掌握一門語言。這一部分中,我們將會(huì)以實(shí)際項(xiàng)目開發(fā)的思路帶領(lǐng)讀者寫一個(gè)自己的MVC框架,這樣既能熟悉PHP語法,又能了解PHP的主流編程思想,同時(shí)還能掌握現(xiàn)在流行的一些架構(gòu)模式。
3. 全棧之框架
本部分對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à)值高,且全部來源于大型項(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)豐富的講師,對學(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)都清晰明了,力爭每一段示例代碼都是經(jīng)過深思熟慮的精品,盡最大努力嘗試讓讀者在閱
第1部分 全棧之JavaScript
第1章 JavaScript基礎(chǔ)概念
1.1 JavaScript的用途
1.1.1 數(shù)據(jù)的驗(yàn)證
1.1.2 制作頁面動(dòng)態(tài)效果
1.1.3 對事件做出響應(yīng)
1.1.4 單頁面應(yīng)用
1.1.5 網(wǎng)頁游戲
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的語法特點(diǎn)
1.3.1 基于對象
1.3.2 事件驅(qū)動(dòng)
1.3.3 松散型
1.3.4 解釋型
1.4 JavaScript的引入方式
1.4.1 在域名或者重定向的位置引入
1.4.2 在事件中引入
1.4.3 在頁面中嵌入
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ù)語法
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章 對象
4.1 JavaScript對象
4.1.1 名詞解釋
4.1.2 創(chuàng)建對象的方法
4.1.3 屬性與方法
4.1.4 銷毀對象
4.1.5 對象的遍歷
4.1.6 對象的存儲(chǔ)方式
4.1.7 instanceof
4.2 對象的特性
4.2.1 對象的特性——封裝
4.2.2 對象的特性——繼承
4.2.3 this指針
4.2.4 對象的分類
4.3 ES6中對象的新特性
4.3.1 類的支持
4.3.2 變量的解構(gòu)賦值
4.3.3 擴(kuò)展運(yùn)算符(spread)和rest參數(shù)
4.3.4 屬性的簡潔表示
4.3.5 屬性名表達(dá)式
4.3.6 方法的name屬性
第5章 原生對象
5.1 Object對象
5.1.1 Object的常用方法
5.1.2 屬性的遍歷(Object對象方法的使用)
5.2 Math對象
5.2.1 Math對象的屬性
5.2.2 Math對象的方法
5.3 字符串對象
5.3.1 創(chuàng)建String對象
5.3.2 字符串對象的屬性
5.3.3 字符串對象的方法
5.4 數(shù)組對象
5.4.1 數(shù)組對象的屬性
5.4.2 數(shù)組對象的方法
5.4.3 數(shù)組對象的構(gòu)造函數(shù)的方法
5.5 日期對象
5.5.1 定義日期對象
5.5.2 獲取日期信息的方法
5.5.3 設(shè)置日期的方法
5.6 正則
5.6.1 正則表達(dá)式的概念
5.6.2 應(yī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ù)組對象的轉(zhuǎn)換
5.8.5 WeakMap
第6章 常見網(wǎng)頁效果制作
6.1 BOM介紹
6.1.1 window對象
6.1.2 document對象
6.1.3 history對象
6.1.4 location對象
6.1.5 screen對象
6.1.6 navigator對象
6.2 DOM介紹
6.2.1 對內(nèi)容進(jìn)行操作
6.2.2 對樣式進(jìn)行操作
6.2.3 對屬性的操作
6.2.4 對類名的操作
6.2.5 事件
6.2.6 綜合運(yùn)用——制作網(wǎng)頁輪播圖效果
6.2.7 獲取位置和尺寸
6.2.8 獲取具有滾動(dòng)條元素的滾動(dòng)位置
6.2.9 案例展示——樓層跳轉(zhuǎn)效果制作
6.2.10 結(jié)點(diǎn)的屬性和方法
6.2.11 事件對象
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對象
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簡介
8.1.1 Coo