就如同題目
我想問的是很基礎的問題
事情是這樣的
我是網頁開發的初學者
這學期我上了一門課有教Javascript跟Python
最近公布了期末專題的題目
就是用Python寫server side
用Javascript寫client side
製作一個Web Application
我看去年作品有像關鍵字查節目表、線上乒乓球等等
沒有其他任何提示跟要求
可是我們老師課堂上也只有講講語法而已
所以作為一個初學者
我對Python的理解只停留在
"在command line輸入Python語法 產生對應結果"
完全沒辦法想像專題該如何完成以及Python網頁開發的流程和架構
所以希望開發經驗豐富的各位
可以為我介紹整個網頁開發的流程和架構
舉些我有在網路上看到的東西
jQuery, AJAX, JSON, CherryPy, Django,
Google App Engine(好像有人說code 要deploy到這裡之類的)
可以告訴我這些東西在網頁開發中扮演那些腳色嗎?
詳細怎麼使用我相信我可以自己學好
畢竟我也是有累積了各種語言的coding經驗
不過現在就是缺了一個"大局觀"
到底每一層的東西要怎麼分工、怎麼連結在一起、怎麼做出一個互動性網頁
希望好心人可以給我一個完整的概念
指引我一條路QQ
非常感謝
作者:
carylorrk (carylorrk)
2014-11-09 10:23:00不知道你的程度很難說明耶...你知道什麼叫 HTML/CSS 嗎HTTP request/response 呢?如果都不知道的話,建議你去看 web_design 置地文或是跑一遍 w3schools tutorial(雖然很爛)
我知道HTML 我也有寫過PHP網頁 我有資料庫的概念CSS我也用過 那篇置底文我大致都懂 也用過大部分現在是不知道Python跟做網頁有何干還有那些工具(framework?)在整個架構負責哪部分
有寫過PHP就很好懂了,Python負責server端就像你在寫PHP一樣,會有server執行你寫的PHPserver遇到request就產生對應的html回去給client所以Python要負責的就是根據request做對應的處理後產生對應的html回傳,例如要對資料庫處理,或進行運算的部分都是由Python完成的
跟著django走吧,你會覺得其實跟你寫過的PHP差不多重點是你寫過的PHP是MVC架構的
如果只是小型應用 選cherrypy吧 django 太肥 XD
作者:
carylorrk (carylorrk)
2014-11-10 02:27:00PHP大多只是讓 HTTP server (ex:Apache/Nginx)先處理過HTTP request 再呼叫 PHP code,然後 PHP 內部 lib 又處理了一些事,你纔可以直接寫 PHP handler function然後取得 request 的一些資料(像是用 $_GET取得 queryparameter),並且回傳 HTML,這些 HTML 又由 PHP Lib和 HTTP server 包裝成 response 傳回 client 端。Python 看你是要自己處理 TCP connection 還是用內建的http.serve 都是很底層的方式。再來就是用 HTTP server或是 cherrypy 這種來做比較強大的 HTTP 處理。注意這裡不是說兩者等價 XD前面都是在處理 HTTP protocol 的抽象化,Django 則更多琢磨在網站程式架構的軟工上面。最大的部分就是MVC,像是 URL routing、HTML template、 database model 等軟體架構方便你撰寫大型網站。不過當你寫遊戲的時候這些東西可能並不是很適合。你可以看看 Django 的 tute會更有感覺,再來自行判斷需不需要 Django 的幫助。再來就是你 Client 端到底熟悉嗎?知道如何使用 JS 操作 DOM 做一些效果或 check 嗎?如果會的話我想 JQuery概念上應該不會太難。如果不熟悉就到 tute 的網站仔細看一遍,等學完基本的程式語法及DOM操作後,一定會提到 AJAX。其實這個名字已經跟原本不太符合了,不過現在簡單來說就是由你的JS程式向 server 發起 request(而非由browser)。這樣的好處是當你取得 response 後可以由 js 來處理並 update部分的網頁內容,可以避免整頁重整的閃爍問題。前面一直提到 response,通常 response 都是 HTML 頁面但是當用了 ajax,你的 response 可以只回傳一些資料,再由 js 處理並加入 html 當中。這裡就要講到資料的serialization。一般資料在不同程式語言的記憶體layout一定會不同。像是 Python 的 Object 和 JS 的 object顯然差很多。serialization 就是把資料的表達方式規格化。這種規格化可以是 binary (前32bit放 first field等),或是人類理解的 text。XML 和 JSON 就是屬於後者他們規範了一些常見的資料形態(integer,string,array)的文字表達方式,讓不同程式、儲存媒介都可以瞭解。這樣你就可以在 python 把資料 serialize 後放入 respons再由 JS deserialize 得到資料來處理。前端現在很流行的還有像是 backbone、angular等架構,等你瞭解這些基本概念後再去看會覺得很舒服(?)XD現在基本上你提到的幾個 component 都串聯起來了,最後一個是 GAE。 GAE 基本上你可以想象他是一個幫你架好HTTP server,灌好環境(python、library、database)的一臺 server。所以你只要上傳程式就可以直接變成網站。不過比較特別的是你要注意他『灌』的那些環境可能跟一般不太一樣,所以你需要好好看一遍他有哪些東西可以用我這輩子第一次寫網站(國中用 frontpage 拉的除外)就是 Django + GAE + Google map 和 FB 的 js api。瞭解第一次寫要串聯一定很痛苦XD 遇到問題先寫看看試看看就對了。有的時候遠比看一堆資料還來得有用!PS. 我對遊戲部分不熟,所以可能要看其他版友的經驗了還有,等你實際寫過後會發現我講的很多是簡化甚至錯誤的,這裡只是用比較易懂的方式講解。也有可能是我本來概念就不好啦,畢竟一輩子也沒寫過幾次網頁 XD
非常謝謝你願意花時間回了這麼詳細QQ我今天看了很多資料 在看你說的東西有比較懂了!被你一說我才發現我好像寫過client端的Javascript當時應該就是Server端的部分有人用Python寫好了所以我才沒有知覺XD 現在我要來認真檢視一下哪個framework比較適合我想做的東西了 超感謝你的解惑!!
作者:
carylorrk (carylorrk)
2014-11-13 15:43:00事實上 server 端用什麼語言,包括 PHP,都可以啦!只是想說一開始寫 PHP 普遍過於依賴嵌入功能。並沒有說PHP 沒辦法達到什麼功能或多不好之類的XD