目前課程體系大致情況:
階段1:前端基礎(chǔ)(html+css+js)
階段2:PHP&MySQL基礎(chǔ) + 框架 (PHP基本語法吁津,面向?qū)ο笈镄睿琺vc,sql基礎(chǔ)碍脏,TP項目)
階段3:前端高級(JS語法梭依,JS語言特性,ajax典尾,JQ役拴,Node,Vue )
階段4:微信
階段5:服務(wù)器部分 (linux基礎(chǔ)钾埂,Git扎狱,Nginx侧到,NoSQL,優(yōu)化及高可用集群淤击,Laravel項目)
階段6:擴展 (React匠抗,Docker,Swoole,爬蟲)
這樣的課程體系污抬,最大的弊端就是課程關(guān)聯(lián)性太弱汞贸,同時課程的切入點不合適,讓人有一種盲人摸象的感覺印机;
首先明確矢腻,我們的課程是專業(yè)的 web 應(yīng)用編程課,以 PHP 這門編程語言為核心射赛。
PHP 開發(fā)的最大特點就是 入門容易開發(fā)快多柑,這也是PHP流行和得到廣泛應(yīng)用最重要的原因之一;
但是楣责,入門容易和開發(fā)快是有前提的:
網(wǎng)絡(luò)通信是做web應(yīng)用開發(fā)的基石竣灌,所以,TCP/IP 必須知道秆麸,HTTP必須精通初嘹,一切都是基于請求和響應(yīng)的;
PHP在整個web應(yīng)用中最重要的就是邏輯處理沮趣,因此前臺頁面展示交由HTML屯烦,后臺的數(shù)據(jù)持久化交由mysql;網(wǎng)路服務(wù)器交由Nginx或者Apache;
所以房铭,想要使用PHP完成一個完整且健壯的 web 應(yīng)用驻龟,關(guān)鍵在于客戶端發(fā)來了什么請求迅脐,服務(wù)器端如何處理并響應(yīng)豪嗽,這一點不明白,PHP語法學(xué)的在精通也是無濟于事隐锭;
而上面的課程就存在這樣的問題钦睡,前端基礎(chǔ)學(xué)完就會直接進入到語言學(xué)習(xí)部分躁倒,根本沒有說明我學(xué)的PHP到底用在web應(yīng)用的那個環(huán)節(jié)洒琢,起到怎樣的作用衰抑,為什么要學(xué)PHP 等問題呛踊;
而漸進式迭代教學(xué)法就是為了解決這個問題的啦撮,他是一個課程體系的設(shè)計邏輯;
下面使用 漸進式迭代教學(xué)法 對上面的課程做修改愉择,并進行說明:
階段1:前端基礎(chǔ) (html+css+js)
說明:進入編程世界织中,使用HTML和CSS制作簡單的靜態(tài)頁面抠璃,配合JS做出一定的動態(tài)效果搏嗡,提升成就感拉一;
階段2:編程語言入門及網(wǎng)絡(luò)通信原理 (JS語言特性 + ajax + jq + Node + SQL基礎(chǔ) )
說明:使學(xué)生入門編程的第一語言由原來的 PHP 改為 JS ,因為在Node中磅氨,我們可以進行相對原始的網(wǎng)絡(luò)編程
自己實現(xiàn) HTTP 服務(wù)器的編寫烦租,實現(xiàn)HTTP客戶端的編寫除盏,在這個過程中 深刻感受請求及響應(yīng)的整個HTTP過程;
利用這個節(jié)點窃祝,就能將網(wǎng)絡(luò)通信的原理講解清楚踱侣;
同時,在編程中出現(xiàn)的名詞也會更多的涉及探膊,如:事件綁定及事件輪詢的原理,異步與同步的原理殴蹄,阻塞與非阻塞猾担,回調(diào)等;
還會涉及到基本的語言語法稽荧,解析引擎及編譯原理等姨丈;
這個階段結(jié)束擅腰,學(xué)生就會有能力完成一個具備基本增刪改查的web應(yīng)用,且對整個web應(yīng)用的環(huán)節(jié)無疑問歼争;
而更重要的就是在這個過程中會形成web應(yīng)用編程的基本邏輯和編程思維的建立沐绒;
后面課程中的幾乎所有內(nèi)容旺坠,都已客戶端請求與響應(yīng)為基本邏輯,也同時都有了講解理由和依據(jù)蹋肮;
如:客戶端提交到服務(wù)器的數(shù)據(jù)需要永久保存 --> MySQL基礎(chǔ)講解璧疗;
掌握網(wǎng)絡(luò)通信基本原理,建立基本的web編程世界觀1舴S兴汀!
至此雀摘,第2輪迭代結(jié)束;
階段3:WAMP 環(huán)境下的Web應(yīng)用編程 (apache + PHP基本語法 + 面向?qū)ο?+ mvc + TP5項目)
說明:在上一階段涉及到的網(wǎng)絡(luò)通信中涯塔,需要自己寫HTTP服務(wù)器端代碼清蚀,需要自己接受并判斷請求,需要自己寫網(wǎng)絡(luò)響應(yīng)數(shù)據(jù)榛搔,而這些都可以交給現(xiàn)成的服務(wù)器來做践惑,而且做得更好嘶卧;
因此我就不在需要考慮服務(wù)器的問題,重心就可以轉(zhuǎn)移到具體的業(yè)務(wù)邏輯中侦铜,而PHP就是擅長業(yè)務(wù)邏輯處理的編程語言运沦,學(xué)起來容易配深,開發(fā)起來也快篓叶,這就是它最大的優(yōu)勢;
而如果面對普通中大型項目缸托,我們則需要使用MVC進行分工協(xié)作俐镐,而成熟的MVC框架,就國內(nèi)來說非TP莫屬叼风;
最后使用TP加之前的html,CSS 茵汰,ajax與jq 完成一個完整的項目孽鸡;
這一段的重要性就是對第二階段的迭代替換彬碱,使用 Apache 替換Node-http-server,使用PHP替換 JS 進行網(wǎng)絡(luò)請求后的邏輯處理堡妒,使整個wamp環(huán)境的出現(xiàn)變得順理成章皮迟;
這個階段開始,才真正進入到以PHP為核心的 web 應(yīng)用編程忿檩,也在這一階段凸顯出PHP的優(yōu)勢和學(xué)習(xí)PHP的理由燥透;
至此辨图,進入PHP世界,明白PHP在整個Web應(yīng)用中的重要性和優(yōu)勢所在吱韭,帶著目標(biāo)和期許進入學(xué)習(xí)周期理盆;
同時,也能感受到編程語言僅僅是解決問題的工具猿规,而PHP是哪個用起來最得心應(yīng)手的……
本階段結(jié)束姨俩,能夠通過對 js和PHP 兩種編程語言的學(xué)習(xí),更深的體會編譯原理和解析引擎的工作原理环葵,對編程工程化有初步了解,對面向?qū)ο蠡!⒖蚣艿氖褂玫坭怠?shù)據(jù)類型等都有立體感受;
最后通過 TP 框架的項目串聯(lián)整個第2和第3階段的重要知識點的烁;
階段4:LAMP 環(huán)境下的WEB應(yīng)用編程 (linux基礎(chǔ)渴庆,lamp環(huán)境的搭建襟雷,緩存及NoSQL工具,sql優(yōu)化及高可用集群咧虎,Docker虛擬化计呈,WEB安全攻防基礎(chǔ))
說明:第三階段中捌显,僅學(xué)會PHP語法結(jié)構(gòu)和框架,是不足以構(gòu)建一個完整的web應(yīng)用程序的理肺,想要使PHP能夠承受成千上萬的大并發(fā)請求壓力哲嘲,并且能夠抵御一般的黑客攻擊媳禁,使用WAMP環(huán)境是很難以支撐和實現(xiàn)的画切;
在此階段則引入Linux及各種工具,以配合PHP完成整個web應(yīng)用的架構(gòu)娃弓;由 階段2和階段3 的單服務(wù)器架構(gòu)引入linux下的多服務(wù)器集群架構(gòu)台丛;
依然以整個HTTP請求與響應(yīng)為基本邏輯砾肺,提出在請求及響應(yīng)過程中的各種問題引出集群緩存等技術(shù)的必要性;
此階段結(jié)束侠坎,可以具備搭建大型WEB應(yīng)用的能力实胸,掌握web開發(fā)的各個環(huán)節(jié)番官,具備web開發(fā)的宏觀意識徘熔;
階段5:項目工程化(Git , Vue ,Laravel, 前后端分離項目)
說明:之前的階段全部為單人開發(fā),對于大型項目是不現(xiàn)實的近顷,由此引入Git+Vue+Laravel技術(shù)窒升,使用代碼管理工具饱须,前后端分離,前端及后端使用各自的工程化體系設(shè)計譬挚,由單人開發(fā)進入多人分工合作開發(fā)酪呻;
將班級分為每3-5人組成的小組玩荠,合作開發(fā)項目并上線運行;
配合前四個階段的內(nèi)容塑径,做一個上線并運行的項目并不難;
階段6:應(yīng)用技術(shù)? (微信 爬蟲 swoole等)
說明:以PHP為中心统舀,進行相關(guān)技術(shù)擴展绑咱;不再過多解釋描融;
總結(jié):
我創(chuàng)造的這套 漸進式迭代教學(xué)法,其根本就是 由淺入深窿克、由原理入實戰(zhàn)的教學(xué)方法年叮,使整個課程前后連貫且有因果,不再產(chǎn)生類似盲人摸象的無助感玻募,每一個階段的目的和目標(biāo)都是明確的只损,上一階段輔助下一階段,下一階段承接上一階段七咧;每個階段都會用到上一階段的關(guān)鍵知識點跃惫,而每個階段都會將上一階段的知識迭代升級,在這個迭代的過程中艾栋,不斷復(fù)習(xí)同時又會不斷深入爆存;
這也是起名為 漸進式迭代教學(xué)法 的原因;
同時蝗砾,這樣的課程設(shè)計也在一定程度上緩解了大部分人 學(xué)完就忘 的現(xiàn)象先较,這是一個不斷迭代的過程,會及時復(fù)習(xí)悼粮;
而在這樣的課程體系中闲勺,即使某些細(xì)節(jié)的知識點忘記了菜循,也沒關(guān)系,比如在第4階段很可能就會忘記第2階段中具體NodeJS中的語法序芦,而此時具體語法已經(jīng)不重要了,只要能在你腦海中留下關(guān)于使用NodeJS搭建HTTP服務(wù)器的原理知識就可以了;第二階段出現(xiàn)的目的就是打通整個網(wǎng)絡(luò)通信原理某筐,不管以后是否還能使用NodeJS寫一個HTTP服務(wù)器,這都已經(jīng)不重要了,因為已經(jīng)有了Nginx等技術(shù)做支撐;
當(dāng)然重挑,這個教學(xué)法有個最大的 Bug , 就是對老師要求比較高,每個階段的老師都必須明確自己所授課階段的目的性,同時還必須要具備承前啟后的技術(shù)能力劲室,這一點尤為重要隧枫,所以備課壓力會相當(dāng)大协怒,每個老師的備課底線就是兩個階段;
歡迎關(guān)注? 西嶺老濕? 微信公眾號
歡迎關(guān)注西嶺老濕知乎專欄: https://zhuanlan.zhihu.com/xilinglaoshi
西嶺老濕 博客地址:http://blog.xiling.me