作者fishlinghu (令狐瑜)
看板Python
标题[问题] Client-Server网页开发的架构跟流程
时间Sun Nov 9 08:50:14 2014
就如同题目
我想问的是很基础的问题
事情是这样的
我是网页开发的初学者
这学期我上了一门课有教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
非常感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 152.78.252.37
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1415494217.A.093.html
1F:→ carylorrk: 不知道你的程度很难说明耶...你知道什麽叫 HTML/CSS 吗 11/09 10:23
2F:→ carylorrk: HTTP request/response 呢? 11/09 10:23
3F:→ carylorrk: 如果都不知道的话,建议你去看 web_design 置地文 11/09 10:24
4F:→ carylorrk: 或是跑一遍 w3schools tutorial(虽然很烂) 11/09 10:25
5F:推 jimmytzeng: 可以跟着Django的tutorial做一次 11/09 16:59
6F:→ fishlinghu: 我知道HTML 我也有写过PHP网页 我有资料库的概念 11/09 18:03
7F:→ fishlinghu: CSS我也用过 那篇置底文我大致都懂 也用过大部分 11/09 18:05
8F:→ fishlinghu: 现在是不知道Python跟做网页有何干 11/09 18:06
9F:→ fishlinghu: 还有那些工具(framework?)在整个架构负责哪部分 11/09 18:07
10F:→ mars90226: 有写过PHP就很好懂了,Python负责server端 11/09 18:38
11F:→ mars90226: 就像你在写PHP一样,会有server执行你写的PHP 11/09 18:38
12F:→ mars90226: server遇到request就产生对应的html回去给client 11/09 18:39
13F:→ mars90226: 所以Python要负责的就是根据request做对应的处理後 11/09 18:40
14F:→ mars90226: 产生对应的html回传,例如要对资料库处理,或进行运算 11/09 18:40
15F:→ mars90226: 的部分都是由Python完成的 11/09 18:41
16F:推 MacPerson: 跟着django走吧,你会觉得其实跟你写过的PHP差不多 11/10 00:00
17F:→ MacPerson: 重点是你写过的PHP是MVC架构的 11/10 00:00
18F:→ qoorocker: 如果只是小型应用 选cherrypy吧 django 太肥 XD 11/10 00:03
19F:→ carylorrk: PHP大多只是让 HTTP server (ex:Apache/Nginx)先处理过 11/10 02:27
20F:→ carylorrk: HTTP request 再呼叫 PHP code,然後 PHP 内部 lib 又 11/10 02:29
21F:→ carylorrk: 处理了一些事,你才可以直接写 PHP handler function 11/10 02:31
22F:→ carylorrk: 然後取得 request 的一些资料(像是用 $_GET取得 query 11/10 02:32
23F:→ carylorrk: parameter),并且回传 HTML,这些 HTML 又由 PHP Lib 11/10 02:36
24F:→ carylorrk: 和 HTTP server 包装成 response 传回 client 端。 11/10 02:36
25F:→ carylorrk: Python 看你是要自己处理 TCP connection 还是用内建的 11/10 02:37
26F:→ carylorrk: http.serve 都是很底层的方式。再来就是用 HTTP server 11/10 02:38
27F:→ carylorrk: 或是 cherrypy 这种来做比较强大的 HTTP 处理。 11/10 02:40
28F:→ carylorrk: 注意这里不是说两者等价 XD 11/10 02:42
29F:→ carylorrk: 前面都是在处理 HTTP protocol 的抽象化,Django 则更 11/10 02:44
30F:→ carylorrk: 多琢磨在网站程式架构的软工上面。最大的部分就是MVC, 11/10 02:46
31F:→ carylorrk: 像是 URL routing、HTML template、 database model 等 11/10 02:47
32F:→ carylorrk: 软体架构方便你撰写大型网站。不过当你写游戏的时候这 11/10 02:47
33F:→ carylorrk: 些东西可能并不是很适合。你可以看看 Django 的 tute 11/10 02:50
34F:→ carylorrk: 会更有感觉,再来自行判断需不需要 Django 的帮助。 11/10 02:51
35F:→ carylorrk: 再来就是你 Client 端到底熟悉吗?知道如何使用 JS 操 11/10 02:53
36F:→ carylorrk: 作 DOM 做一些效果或 check 吗?如果会的话我想 JQuery 11/10 02:54
37F:→ carylorrk: 概念上应该不会太难。 11/10 02:55
38F:→ carylorrk: 如果不熟悉就到 tute 的网站仔细看一遍,等学完基本的 11/10 02:59
39F:→ carylorrk: 程式语法及DOM操作後,一定会提到 AJAX。其实这个名字 11/10 03:00
40F:→ carylorrk: 已经跟原本不太符合了,不过现在简单来说就是由你的JS 11/10 03:00
41F:→ carylorrk: 程式向 server 发起 request(而非由browser)。这样的好 11/10 03:01
42F:→ carylorrk: 处是当你取得 response 後可以由 js 来处理并 update 11/10 03:02
43F:→ carylorrk: 部分的网页内容,可以避免整页重整的闪烁问题。 11/10 03:03
44F:→ carylorrk: 前面一直提到 response,通常 response 都是 HTML 页面 11/10 03:04
45F:→ carylorrk: 但是当用了 ajax,你的 response 可以只回传一些资料, 11/10 03:04
46F:→ carylorrk: 再由 js 处理并加入 html 当中。这里就要讲到资料的 11/10 03:05
47F:→ carylorrk: serialization。一般资料在不同程式语言的记忆体layout 11/10 03:06
48F:→ carylorrk: 一定会不同。像是 Python 的 Object 和 JS 的 object 11/10 03:07
49F:→ carylorrk: 显然差很多。serialization 就是把资料的表达方式规格 11/10 03:07
50F:→ carylorrk: 化。这种规格化可以是 binary (前32bit放 first field 11/10 03:09
51F:→ carylorrk: 等),或是人类理解的 text。XML 和 JSON 就是属於後者 11/10 03:09
52F:→ carylorrk: 他们规范了一些常见的资料形态(integer,string,array) 11/10 03:10
53F:→ carylorrk: 的文字表达方式,让不同程式、储存媒介都可以了解。这 11/10 03:11
54F:→ carylorrk: 样你就可以在 python 把资料 serialize 後放入 respons 11/10 03:12
55F:→ carylorrk: 再由 JS deserialize 得到资料来处理。 11/10 03:15
56F:→ carylorrk: 前端现在很流行的还有像是 backbone、angular等架构, 11/10 03:16
57F:→ carylorrk: 等你了解这些基本概念後再去看会觉得很舒服(?)XD 11/10 03:17
58F:→ carylorrk: 现在基本上你提到的几个 component 都串联起来了,最後 11/10 03:17
59F:→ carylorrk: 一个是 GAE。 GAE 基本上你可以想象他是一个帮你架好 11/10 03:18
60F:→ carylorrk: HTTP server,灌好环境(python、library、database)的 11/10 03:19
61F:→ carylorrk: 一台 server。所以你只要上传程式就可以直接变成网站。 11/10 03:20
62F:→ carylorrk: 不过比较特别的是你要注意他『灌』的那些环境可能跟一 11/10 03:20
63F:→ carylorrk: 般不太一样,所以你需要好好看一遍他有哪些东西可以用 11/10 03:21
64F:→ carylorrk: 我这辈子第一次写网站(国中用 frontpage 拉的除外)就 11/10 03:22
65F:→ carylorrk: 是 Django + GAE + Google map 和 FB 的 js api。了解 11/10 03:23
66F:→ carylorrk: 第一次写要串联一定很痛苦XD 遇到问题先写看看试看看就 11/10 03:25
67F:→ carylorrk: 对了。有的时候远比看一堆资料还来得有用! 11/10 03:25
68F:→ carylorrk: PS. 我对游戏部分不熟,所以可能要看其他版友的经验了 11/10 03:26
69F:推 carylorrk: 还有,等你实际写过後会发现我讲的很多是简化甚至错误 11/10 03:30
70F:→ carylorrk: 的,这里只是用比较易懂的方式讲解。也有可能是我本来 11/10 03:31
71F:→ carylorrk: 概念就不好啦,毕竟一辈子也没写过几次网页 XD 11/10 03:31
72F:→ fishlinghu: 非常谢谢你愿意花时间回了这麽详细QQ 11/10 06:53
73F:→ fishlinghu: 我今天看了很多资料 在看你说的东西有比较懂了! 11/10 06:54
74F:→ fishlinghu: 被你一说我才发现我好像写过client端的Javascript 11/10 06:54
75F:→ fishlinghu: 当时应该就是Server端的部分有人用Python写好了所以 11/10 06:55
76F:→ fishlinghu: 我才没有知觉XD 现在我要来认真检视一下哪个framework 11/10 06:56
77F:→ fishlinghu: 比较适合我想做的东西了 超感谢你的解惑!! 11/10 06:56
78F:→ carylorrk: 事实上 server 端用什麽语言,包括 PHP,都可以啦! 11/13 15:43
79F:→ carylorrk: 只是想说一开始写 PHP 普遍过於依赖嵌入功能。并没有说 11/13 15:45
80F:→ carylorrk: PHP 没办法达到什麽功能或多不好之类的XD 11/13 15:45