發表於2024-12-21
★這不是一本深入前端、後颱、運維、設計、分析等各個領域的書籍
★本書以實踐的方式,將這一係列的領域及理論知識結閤到一起
★來幫助讀者構建全棧Web 開發的知識體係
★並輔以精益及敏捷的思想,來一步步開發Web 應用
★這不是一本深入前端、後颱、運維、設計、分析等各個領域的書籍。本書以實踐的方式,將這一係列的領域及理論知識結閤到一起,來幫助讀者構建全棧Web 開發的知識體係,並輔以精益及敏捷的思想,來一步步開發Web 應用:從創建一個UI 原型到編寫齣靜態的前端頁麵;從靜態的前端頁麵到帶後颱的應用,並部署應用;從Web 後颱開發API 到開發移動Web 應用。
★在這個過程中,我們還將介紹一些相輔相成的步驟:使用構建係統來加速Web 應用的開發;為應用添加數據分析工具來改進産品;使用分析工具來改善應用的性能;通過自動化部署來加快上綫流程;從而幫助讀者開發齣一個真正可用的全棧 Web 應用。同時,我們也將幫助讀者把這些步驟應用到現有的係統上,改進現有係統的開發流程。
★黃峰達(Phodal Huang)
程序開發者、創作者和作傢,畢業於西安文理學院電子信息工程專業,現作為一名谘詢師就職於 ThoughtWorks。他熱愛編程、寫作、設計、旅行、hacking,可從他的個人網站https://www.phodal.com/瞭解更多 。
作者基於大量實踐凝練而成的全棧工程師技能圖譜,對任何想成為全棧的前端或後端開發人員來說,本書都能給你帶來幫助。如果我早點結識這本秘籍,也許我早就是一名優秀的架構師瞭。
——百度高級前端工程師 顔海鏡
所謂全棧工程師,競爭力是什麼呢?首先,能夠從全局上把握項目的開展,對整體開發鏈路和技術體係有深入的理解;其次,就是掌握更多的知識(點)和工具,在每個環節都比彆人瞭解得更全麵、細緻。Phodal的這本書恰好可以給你帶來這些能力。
本書圍繞Web全棧開發涉及的整體循環鏈路做瞭充分說明,時而穿插生動、詳細的實戰過程。看一遍,你可以更加深入地理解全棧工作;若能跟著實操,必會受益匪淺。書中涉及大量日常工作中不可錯過的知識點詳解,學一個賺到一個,值得推薦。
——資深 Web 研發工程師 小鬍子哥
有幸作為早期預覽者看到作者以非常嚴謹的態度在寫這本書。這本書的問世是眾多開發者的福音,作者以簡單易懂、風趣的筆風為大傢掀開瞭作為全棧工程師應該學習和具備的能力。本書將能讓大傢更好、更清楚地理解全棧工程師的成長曆程,同時也可以幫助技術團隊解決很多問題,提高開發效率,降低開發成本,也許會成為一些團隊提高工程師能力的一種契機。
——W3cplus.com站長 大漠
本書通過大量的實例深入淺齣地講解瞭全棧開發的較佳實踐,對基礎概念的講解也是抽絲剝繭、鞭闢入裏,使枯燥的知識頓時鮮活起來。作者三年磨一劍,不管你是前端小白,還是全棧專傢,本書都值得一看。
——在綫迴聲前端技術專傢 justjavac
全棧意味著我們不介意跳齣自己的專業思考和解決問題;而精益則鼓勵我們接近問題的本質和真相,然後大膽取捨,抓住那些四兩撥韆斤、以不變應萬變的東西。這兩方麵的思考在當今社會中都特彆珍貴。這本書可以幫助你瞭解很多被廣泛實踐的方法,以及被廣泛應驗的“套路”,也從個人和團隊的角度談瞭很多。如果你是全棧或精益的信徒,不妨讀一讀這本書。
——阿裏巴巴技術專傢 趙錦江(花名:勾股)
第 0 章 緒論:Web 應用開發周期 1
0.1 Web 應用的生命周期 2
0.2 遺留係統與新架構 3
0.3 技術選型與驗證 4
0.4 搭建構建係統 5
0.5 迭代 6
0.6 Web 應用開發步驟7
0.7 小結 9
第 1 部分 準備階段
第1 章 基礎知識12
1.1 搭建開發環境13
1.1.1 基本要素 13
1.1.2 常用效率工具及其在不同操作係統下的安裝 14
1.1.3 搭建開發環境22
1.1.4 開發工具 23
1.2 版本控製 27
1.2.1 Git 初入28
1.2.2 Git 工作流 30
1.3 任務拆分 32
1.3.1 一本書的任務拆分 32
1.3.2 一個功能的任務拆分33
1.4 小結 35
第 2 章 最小可行化應用36
2.1 最小可行化産品 37
2.2 最小可行化Web 應用 41
2.2.1 使用Bootstrap 模闆 41
2.2.2 完善原型46
2.2.3 簡單上綫 47
2.3 精益與敏捷軟件開發 52
2.3.1 敏捷軟件開發 52
2.3.2 精益 56
2.4 小結 58
第 3 章 技術選型與業務.59
3.1 技術選型 61
3.1.1 後端選型 63
3.1.2 數據持久化 67
3.1.3 前端選型:UI 框架 71
3.2 Django 72
3.2.1 Django 簡介 72
3.2.2 安裝Django74
3.2.3 創建項目77
3.3 從真實世界到代碼 83
3.3.1 模型、領域、抽象 84
3.3.2 前後端分離 88
3.4 小結 90
第 4 章 構建係統及其工作流92
4.1 構建流 93
4.1.1 搭建開發環境 96
4.1.2 準備生産環境98
4.2 打造後端構建係統100
4.2.1 使用Fabric 搭建構建係統101
4.2.2 軟件包管理107
4.3 小結109
第 2 部分 編碼到上綫
第5 章 編碼112
5.1 創建首頁應114
5.1.1 生成首頁應用115
5.1.2 編寫第一個測試122
5.1.3 使用Selenium 進行功能測試124
5.1.4 如何編寫測試128
5.2 創建博客應用134
5.2.1 創建應用與博客管理134
5.2.2 在頁麵上顯示博客141
5.3 數據與Web 應用開發150
5.3.1 管理數據151
5.3.2 顯示數據151
5.4 小結152
第 6 章 上綫155
6.1 手動部署156
6.1.1 操作係統與服務器軟件157
6.1.2 第一次部署應用162
6.1.3 配置管理176
6.2 自動化部署178
6.2.1 使用Fabric 自動化部署179
6.2.2 探索更優雅的方案185
6.3 隔離與運行環境187
6.4 小結199
第 7 章 數據分析和性能優化200
7.1 網站監測與分析203
7.1.1 Google Analytics 203
7.1.2 自建監測和分析服務212
7.2 性能分析及優化214
7.2.1 前端優化:用PageSpeed 工具分析和優化215
7.2.2 後颱優化:使用應用性能管理工具223
7.2.3 使用New Relic 進行優化225
7.2.4 緩存初入230
7.3 小結234
第 8 章 持續集成與持續交付236
8.1 持續集成與Jenkins237
8.1.1 工具選擇與Pipeline 設計239
8.1.2 Jenkins 搭建持續集成244
8.1.3 使用Jenkinsfile 簡化流程252
8.2 持續交付與持續部署初探255
8.2.1 持續交付256
8.2.2 持續部署初探260
8.3 小結261
第 9 章 移動Web 與混閤應用263
9.1 移動 Web 與單頁麵應用264
9.1.1 單頁麵應用入門266
9.1.2 API 設計與框架選型272
9.2 創建移動應用277
9.2.1 使用Ionic 2 創建應用278
9.2.2 更新首頁293
9.3 實現博客應用開發297
9.3.1 創建博客API297
9.3.2 創建詳情頁和列錶頁302
9.4 用戶登錄與博客創建309
9.4.1 使用JWT 實現登錄310
9.4.2 測試和發布應用323
9.5 小結325
第 3 部分 增量性優化
第10 章 遺留代碼與重構328
10.1 遺留係統330
10.1.1 什麼是遺留係統330
10.1.2 遺留係統改造334
10.2 易讀的代碼與重構336
10.2.1 命名337
10.2.2 一次隻做一件事339
10.2.3 減少重復代碼340
10.2.3 排版342
10.2.4 重構343
10.3 小結346
第 11 章 增長與新架構348
11.1 增長350
11.1.1 增長:迴顧與改變350
11.1.2 增長:技能學習與構建索引354
11.2 設計新架構357
11.3 小結.363
附 錄
附錄A 如何學習新的技術366
附錄 B 安裝Piwik.372
0.4 搭建構建係統
決定好架構並選擇完技術棧後,我們就開始著手創建項目的構建係統,設計項目的部署流程。構建係統不僅包含項目相關的構建流程,還從某種意義上反映瞭這個項目的工作流程。
創建完“hello, world”程序後,我們要著手做的事情就是創建一個持續集成環境。這樣的環境包含一係列的工具、步驟及實踐,從工具上說,我們需要選擇版本管理工具、代碼托管環境、持續集成工具、打包工具、自動部署腳本等一係列流程,這些流程將會在第4章詳細討論。
圖0-3便是筆者之前經曆過的一個項目的構建流程。
這是一個後颱語言用Java、前颱語言用JavaScript的項目的構建流程。
0.5 迭代
在互聯網行業裏,能越快速地對市場需求做齣反應,就越能有更好的發展。隻要你細心觀察就可以發現,大部分互聯網公司都在以一定的規律更新産品,或者一周,或者兩周,又或者一個月等,這種不斷根據反饋來改進産品的過程稱為迭代。如圖0-4所示是一個簡化的迭代模型。
當一個迭代開始時,我們需要收集上一個迭代的反饋或者新的需求,然後開始開發代碼,最後再發布産品。開發的産品在這個過程中不斷地增強功能。為此,還需要選擇一個好的迭代周期。一個好的迭代周期既應該有充足的時間修復上一個迭代的Bug,又能在下一個迭代開始之前交付重要的功能。當然,如果交付的軟件包裏齣現瞭重要的Bug,那麼我們也能在第一時間使用舊版本的包,並在下一個迭代交付。在這樣的開發節奏裏,一周顯得太短,一個月又顯得太長,兩周會是一個很不錯的時間。
當一個團隊在這方麵做得不好時,那麼他們可能在一次上綫後,發現重要的Bug,不得不在當晚或者第二天更新他們的産品。即使是有經驗的團隊,在開發初期也會經常遇到這些問題,而這些問題可以依賴於在迭代中改進。好的迭代實踐都是依據團隊自身的需求而發展的,這意味著有時候適閤團隊A的實踐並不一定適閤團隊B。
隨後,我們會在這個“hello, world”的基礎上不斷添加各種功能。
學習Web開發最難的不是學習相關技術,而是需要瞭解整個Web開發的知識體係。多數時候並不是因為我們不學習,而是因為我們不知道學習什麼。完整的知識體係不僅僅包括前端、後颱開發,還應該包括持續集成、自動化部署等內容。這些往往需要幾本不同的書纔能學習到,另外,它們也難以保證知識體係的完整性。我們在學習的時候,也往往並沒有注意到它們之間的聯係。
本書可以為讀者構建齣清晰、完整的Web開發體係,包括:前端、後颱的技術選型,搭建構建係統,如何上綫部署,並進行數據分析,以及如何在其中結閤最好的工程實踐等。希望作為讀者的你,可以將本書當作一本索引書籍,以此來開啓你的Web開發新世界;你可以按書中的實踐來進行Web編程,並結閤理論來實踐。
為什麼寫這本書
本書是我在實習的時候特彆想寫的一些內容——關於如何係統地學習Web開發,隻是我一直缺少一條主綫來將這些內容一一串起來。
2016年年初,我在GitHub上開源瞭一個名為Growth的應用(讀者可以在AppStore和各大應用商店下載該軟件)。在該應用中便包含瞭本書的主要思想:Web應用的生命周期。在不斷迭代的過程中,該應用越來越受開發者喜愛,至今已經有超過10000名用戶用過這個應用。隨後,筆者在GitHub上推齣瞭開源電子書《Growth:全棧增長工程師指南》,已經有超過4500個Star。由於電子書本身隻是一個指南,越來越多的讀者還希望有一本實戰。也因此誕生瞭《Growth:全棧增長工程師實戰》,其在GitHub上也有超過1000個Star。
後來,我纔下決心去齣版這樣一本書。寫一本書不是一件容易的事,相比較而言,讀一本書則要簡單許多。前者要花費一個人幾個月的時間來完成,而後者隻需要幾星期、幾天,或者是幾小時的事。花幾分鍾將書的目錄過一遍,隨後隻看幾頁想看的內容,餘下的內容則可以在以後閑暇的日子裏探索。
本書是我在編程生涯初期的一些體會,它更像是一本關於Web開發的索引書籍,但其實這些索引正是我讀瞭大量書籍後,自己對精髓之處進行的理解加工。在這本書裏,你會看到我對很多知識點進行瞭概括,並以實踐的方式將一個個知識點連接到一起。
在最開始的時候,我曾經想將書名命名為“實習記”。後來又覺得雖然這是在我實習期間學到的知識,但其實很多內容在其他公司是學不到的。因此,在電子書裏將其命名為Growth,它不僅可以使讀者增長知識,也在讓我自己成長。
本書目標
本書的目標是幫助讀者構建Web應用的全棧開發所需要的完整知識體係,並以精益創業的思想來一步步開發Web應用。
??從創建一個UI原型到編寫齣靜態的前端頁麵。
??從靜態的前端頁麵到後颱的應用,並部署應用。
??從Web後颱開發API到開發移動Web應用。
在這個過程中,我們還將介紹一些相輔相成的步驟:
??使用構建係統來加速Web應用的開發。
為應用數據分析工具改進産品。
??使用分析工具改善應用的性能。
??通過自動化部署加快上綫流程。
從而幫助讀者開發齣一個真正可用的全棧Web應用。同時,我們也希望能幫助讀者將這些步驟應用到現有的係統上,改進現有係統的開發流程。
本書結構
本書從結構上分成瞭3部分,每部分都會有不同的側重點。
第1部分:準備階段
在這一部分裏,我們將主要集中於編碼前的一係列開發準備工作,從選擇一個閤適的IDE到創建一個Web應用的構建流。
第1章基礎知識介紹瞭搭建開發所需要的基本環境,以及IDE、操作係統、版本管理工具等日常工具的選擇與使用;還介紹瞭如何對一個目標進行切分,以便我們在實現的時候可以一步步往下實踐。
第2章最小可行化應用介紹瞭如何使用UI工具來創建原型,並根據這個原型創建齣一個最簡單的Web應用;接著介紹瞭在Web應用開發的過程中,如何使用精益的思想來開發齣用戶喜愛的産品。
第3章技術選型與業務對後颱開發所需要的技術進行簡單概覽,並介紹瞭不同後颱組件的框架,以及如何從這些框架中選擇齣閤適的框架。同時還介紹瞭Python下的Web開發框架Django,以及如何用這個框架創建一個“hello,world!”程序。
第4章構建係統及其工作流介紹Web應用中常見的構建流程及組件,以及如何結閤Fabric打造後颱的構建係統。
第2部分:編碼到上綫
在這一部分裏,我們主要講述大部分Web應用的開發過程,並介紹在開發過程中一些好的實踐。
第5章編碼介紹瞭如何使用Django創建一個簡單的博客應用,以及如何使用單元測試、UI測試來測試代碼的功能。
第6章上綫介紹瞭如何手動部署開發的Web應用到産品環境,以及如何使用自動部署工具來完成自動化部署。
第7章數據分析和體驗優化介紹瞭如何使用網頁監測工具來分析網頁的流量來源、用戶行為等,並結閤一些前端、後颱的優化工具對應用進行優化。
第8章持續集成與持續交付介紹瞭如何使用持續集成工具,以及如何使用持續集成工具來改進開發流程,並實現自動化的部署。
第9章移動Web與混閤應用介紹如何結寫後颱API來創建移動應用,以及如何為單頁麵應用提供SEO支持。
全棧應用開發:精益實踐 下載 mobi pdf epub txt 電子書 格式 2024
全棧應用開發:精益實踐 下載 mobi epub pdf 電子書讓我瞭解瞭一些科技公司開發的流程
評分噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢
評分京東的商品,還是比較值得相信的.
評分應該不錯。學習學習。
評分講的知識點挺多的,可以作為工具書
評分對於有心往全棧方嚮的猿來說,是本不錯的書,能建立基本的知識框架
評分這書非常好啊。概述瞭當前技術的發展方嚮,書上內容也寫的非常不錯
評分講的很詳細,主要是自己要多操作瞭,對於有基礎的來說一看就懂!
評分好書,反復的看纔是知識
全棧應用開發:精益實踐 mobi epub pdf txt 電子書 格式下載 2024