web framework層出不窮,特別是ruby/python,各有10+個,php/java也是一大堆 根據我自己的經驗寫了一個to do list,按照這個清單,一條一條的學習,事半功倍,很快就能掌握 一共25條,即便很磨蹭,2小時也能搞定一條,25*2=50。只需要50小時就能掌握任意一種web框架各類web框架大同小異:現代web開發框架的6大元素,把握主線,就不會迷路
建議把本文打印到一張A4紙,搞定一條打個勾
web框架學習列表 如何定義 url router如何組織 request handler 函數寫一個最簡單的request handler 函數如何從get/post請求中取出參數如何定義全局url 攔截函數如何獲取/修改/存儲 cookie,session數據如何修改/輸出 http header 數據如何部部署app 程序服務器部署可以參考讀python web 程序的9種部署方式如何配置開發環境如何配置靜態文件訪問如何訪問數據庫是否支持ORM支持orm如何維護表結構的變更如何定義/組織/初始化 數據表如何對接orm系統和現有的表結構掌握最基本的add/delete/按字段查詢/count/slice/order by如何直接使用sql 訪問數據庫不支持orm (這樣的web框架,不用也罷)如何使用模板系統如何組織/訪問 模板文件的目錄結構如何在模板中嵌入代碼模板是否支持繼承結構模板之間如何include如何自定義模板函數如何通過http get/post 獲取遠程數據如何parse json如何parse xml如何輸出為 json如何處理狀態碼:404和50x如何處理文件上傳可選的學習項目 發送emaillog圖片處理誤區 表單驗證輔助函數,很多框架的表單驗證部分實現的特別復雜,初學者完全不需要,手寫代碼處理就夠用ORM中的hasone,manytomany,onetomany關系,概念很復雜,其實只是多寫/少寫一個查詢字段的關系,學習成本太高,初學者完全不需要理會,直接跳過。
如何快速學習一個WEB開發框架http://www.pcpob.com/article/view/1939-how-to-study-a-web-framework
如果已經學會了一個PHP框架,再去學習其他php框架,那么會很容易上手。但是如果還沒有php框架基礎,想去學習php框架,往往是一頭霧水,不知道從哪里下手,從我學習php框架的經驗,給大家分享一下,如何快速的去學習并掌握一個框架。一,選擇一個合適的php框架 在國內,使用zf,ci和tp框架的人比較多,新手可以從中選一個去學習,新手不建議一開始就去學習zf,功力還不夠深,學習zf會讓你更迷茫。如果php基礎實在太差,學習ci和tp都覺得有點難度,那么建議去學習一下我做的框架--canphp框架(簡稱cp,qq群:74781204),cp=ci+tp的結晶,更為簡單,更容易理解。二,選定一個php框架之后,如何去學習第一步,把下載回來的框架壓縮包解壓,然后把每個目錄和文件名,大致的瀏覽一遍。這樣可以大概看出,這個php框架中大致布局和具有哪些功能。第二步,學習輸出hello world,hello world很簡單,但是對于學習一門新的語言或框架,很重要。第三步,學習理解單一入口和網址解析(即網址路由),單一入口,對于新手來說,可能有點不太好理解。第四步,學習php框架的內置的模板操作,主要學習程序是怎么賦值給模板,怎么加載模板和常用的模板標簽第五步,學習數據庫的添加,修改,刪除,查詢,學會簡單的數據庫操作。第六步,學習php框架常用的函數和類庫,php框架中一般會帶一些常用的函數和類,可以稍微看一下,此時還沒有必要深入研究,等用到的時候再詳細的去看手冊和樣例。第七步,下載基于此框架開源的項目系統下來學習,了解了php框架的執行流程,模板操作,和數據庫操作,下載一個開源的系統,下來去學習,學習別人的代碼,學得更快。第八步,做項目學習,要熟練掌握一個的框架,需要大量的實踐,通過做項目,去深入學習。第九步,閱讀框架代碼,了解其實現原理
第十步,到這一步,你已經學會了這個php框架。
在StackExchange上有人問了這樣一個問題:What should every programmer know about web development?(關于Web開發,什么是所有程序員需要知道的?)里面給出的答案非常不錯,所以,我翻譯轉載過來。 順便說一下,StackExchange真是非常好,大家可以對同一個答案做貢獻和修訂,看看這個問題的修訂過程你就知道了——專業的問答網站應該怎么去做。這就是我在這篇文章中也說過真正的用戶體驗是什么樣的。
好了,下面是正文(我對原文做了一些批注,也許不對或有誤導,請大家指正)
下面的這些東西可能對于大多數人并不陌生,但是可能會有些東西你以前并沒有看過,或是沒有完全搞懂,甚至都沒有聽說過。(陳皓注:我相信當你看完這個列表后,你會覺得對于我國的Web開發有點弱了,還是那句話,表面上的東西永遠是膚淺的)
接口和用戶體驗
小心瀏覽器的實現標準上的不一致,確信讓你的網站能夠適當地跨瀏覽器。至少,你的網站需要測試一下下面的瀏覽器:最新的 Gecko 引擎 (Firefox),一個 Webkit 引擎 (Safari,Chrome, 或是其它的移動設備上的瀏覽器)IE 瀏覽器 (測試IE的兼容性你可以使用微軟IE的Application Compatibility VPC Images)Opera 瀏覽器。最后,你可以使用一下這個工具 來看看你的網頁在不同的瀏覽器下是怎么被顯示出來的(陳皓注:這個工具就是以前本站介紹過的在不同瀏覽器和平臺上檢查你的網站的兼容性)
多考慮一下人們是怎么來訪問你的網站而不是那些主流的瀏覽器:手機,讀屏軟件和搜索引擎,例如:一些Accessibility的東西: WAI 和 Section508, 移動設備開發:MobiForge.部署Staging:怎么部署網站的更新而不會影響用戶的訪問。 Ed Lucas的答案 可以讓你了解一些(陳皓注:Ed說了一些如版本控制,自動化build,備份,回滾等機制)。千萬不要直接給用戶顯示不友好的錯誤信息。千萬不要把用戶的郵件地址以明文顯示出來,這樣會被爬蟲爬走并被讓用戶的郵箱被垃圾郵件搞死。為用戶的鏈接加上 rel="nofollow" 的屬性以 避免垃圾網站的干擾。(陳皓注:nofollow是HTML的一個屬性,用于通知搜索引擎“這個鏈接所指向的網頁非我所能控制,對其內容不予置評”,或者簡單地說,該鏈接不是對目標網站或網頁的“投票”,這樣搜索引擎不會再訪問這個鏈接。這個是用來減少一些特定垃圾頁面對原網站的影響,從而可以改善搜索結果的質量,并且防止垃圾鏈接的蔓延。)為網站建立一些的限制 - 這個屬于安全性的范疇。(陳皓注:比如你在Google注冊郵箱時,你一口氣注冊超過兩個以上的郵箱,gmail要求給你發短信或是給你打電話認證,比如Discuz論壇的會限制你發貼或是搜索的間隔時間等等,更多的網站會用CAPTCHA來確認是人為的操作。 這些限制都是為了防止垃圾和惡意攻擊)學習如何做 Progressive Enhancement. (陳皓注:Progressive Enhancement是一個Web Design的理念,如:1)基礎的內容和功能應該可以被所有的瀏覽器存取,2)頁面布局的應該使用外部的CSS鏈接,3)Javascript也應該是外部鏈接還應該是unobtrusive 的,4)應該讓用戶可以設置他們的偏好)如果POST成功,要在POST方法后重定向網址,這樣可以阻止用戶通過刷新頁面重復提交。嚴重關注Accessibility。因為這是法律上的需求(陳皓注:Section 508是美國的508法案,其是美國勞工復健法的改進,它是一部聯邦法律,這個法律要求所有技術要考慮到殘障人士的應用,如果某個大眾信息傳播網站,如果某些用戶群體(如殘疾人)瀏覽該網站獲取信息時,如果他們無法正常獲得所期望的信息(如無法正常瀏覽),那可以依據相關法規,可以對該網站依法起訴)。WAI-ARIA 為這方面的事提供很不錯的資源.安全
在網上有很多關于安全的文章,但是 OWASP 開發指導 涵蓋了幾乎所有關于Web站點安全的東西。(陳皓注:OWASP(開放Web應用安全項目- Open Web Application Security Project)是一個開放的非營利性組織,目前全球有130個分會近萬名會員,其主要目標是研議協助解決Web軟體安全之標準、工具與技術文件,長期 致力于協助政府或企業了解并改善網頁應用程式與網頁服務的安全性。OWASP被視為Web應用安全領域的權威參考。2009年下列發布的美國國家和國際立法、標準、準則、委員會和行業實務守則參考引用了OWASP。美國聯邦貿易委員會(FTC)強烈建議所有企業需遵循OWASP十大WEB弱點防護守則)