看板 PHP 關於我們 聯絡資訊
※ 引述《kingoface (桑原)》之銘言: : 哈囉,大家好! : 小弟剛剛想到了一個頗為無聊的問題. 的確是頗為無聊,根本不用考慮這個問題。 : 需要顯示資料的時候 : 1. : 我會在<body>上方寫個 : <?php : $exp_html='<table><tr><td>一堆資料庫的資料</td></tr><table>'; 這是不利維護的爛設計,網頁外觀無法由其他人修改。 在團體開發中會整死前端和美術人員, 就算只有一個人在開發,大專案的後期必定令你痛不欲生。 : 2. : <?php : //做了一堆資料庫 or foreach的運算 存在 $data : echo $data; 看不出來這跟1有什麼差別,就只是輸出的那包在同一個php內前面或後面算出來而已。 現在比較理想的作法是把view和其他部份切割開來, 不管你是用MVC,或SMARTY那種不明確的(M/C)+V,原則上都是這樣 (controller.php) 變數 = 資料; 變數 = 資料; ...... 參數陣列 = Array( 變數, 變數, 變數, ... ); (以參數陣列代入view.php) (view.php) (framework自動打開參數陣列) <?php echo 變數1; ?> ... <table> <?php foreach 變數2 as 列變數 : ?> <tr> <td><?php echo 列變數[欄位]; ?></td> </tr> <?php endforeach; ?> </table> ... 這裡面不但把資料準備和資料顯示分開在兩個檔案中 (當然最後view可能還是被include進來在同一個檔案裡,視framework實作而定) 而且資料都是在陣列和物件內包了又包,最後包成參數陣列送給view 這些變數傳遞的成本,並沒有讓MVC或SMARTY慢到人能夠察覺的地步 即使資料再多也一樣。 會慢到有差別,那表示 1)邏輯裡面有多重迴圈不能避免,或者沒察覺到的多重迴圈。 2)資料真的很多很多,多到沒有意義。 在2的狀況,瀏覽器通常會先掛。   -- 從前有個馬鈴薯王國 有個高貴偉大的國王 有的人尊敬他 有的人畏懼他 但有個人敢看不起他不只是一條龍 嘿呵 快出動 去征服 去擺平 嘿呵 快出征 去征服那條龍 嘿呵 快出動(宰了它!轟了它!)嘿呵 快出征 去征服那條龍 :■ Potatoes and Dragons (C)Alphanim France 2004-05 :. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.163.12.174
LaPass:嗯~ 總之就是這一篇說的這樣啦 XD 12/30 12:48
kingoface:恩,了解,感恩大大的分享. 12/30 13:02
ooopooo:pro! 12/30 23:08
k900i:請問HTML先出來再用Javascript去讀PHP後innerHTML進td的作法 12/31 09:58
k900i:是否就變成Ajax而比這兩例效能更差? 12/31 09:58
LaPass:樓上那是個有趣的問題... 12/31 10:18
LaPass:那會把一個request切成兩個以上request,但你html的部份可 12/31 10:22
LaPass:以丟給nginx之類的做快取,就不用通過PHP去執行,這對效能 12/31 10:23
LaPass:來說是比較好的作法。但缺點是會對SEO有影響,那些網路蜘蛛 12/31 10:23
LaPass:通常不會看ajax抓出來的資料。 12/31 10:24
LaPass:也就是說,比較適合一些私人的東西,例如Facebook、GMail就 12/31 10:25
LaPass:這樣搞 12/31 10:25
LaPass:而且以後做負載平衡時還可以把html等靜態資料主機跟php分開 12/31 10:26
LaPass:,這會是比較好的作法。 12/31 10:26
MOONRAKER:Ajax是另一個問題吧 他應用在有互動性或多層次查詢的時 12/31 12:26
MOONRAKER:候 把一個大批次查詢切割成若干個小的查詢 每次輸出的資 12/31 12:27
MOONRAKER:料量相對也少 而且受到使用者操作時間的影響 加總的效率 12/31 12:28
MOONRAKER:並不像單一表格輸出要求那麼高 而且是有利介面設計的 12/31 12:29
MOONRAKER:反過來講 如果是一個批次查詢的大表格 硬要用ajax可以算 12/31 12:33
MOONRAKER:是規劃的錯誤 12/31 12:33
danny8376:說到ajax 就想到可怕的GoogleBot 會解析JS OAO... 12/31 14:24
LaPass:GoogleBot 會解析JS!! 太強大了.... OAO!! 12/31 15:42
danny8376:我某個純AJAX (沒JS就只是個空樣板) 的網站 12/31 16:46
danny8376:就這樣被GoogleBot爬內容了 看log也有GoogleBot 12/31 16:47
danny8376:去爬AJAX資料的log... Google超可怕的啦!!! 12/31 16:48
chenlarry:Google有寫一隻專門爬AJAX的機器人 囧 12/31 21:49
xxxzzz:看不懂"..純AJAX (沒JS...",恐怖的是沒JS,GoogleBot解析JS 01/01 07:42
danny8376:(沒JS"的話"就只是個空樣板) 01/01 18:03
DongFeng:抽掉JS就只剩下空殼 網站一切資料都使用AJAX撈出的意思 01/01 20:22
DongFeng:如果一個頁面需要用到多個不同性質的資料 $arr1、$arr2、 01/01 20:25
DongFeng:$arr3等 並且這些資料在頁面上都有各自不同的使用區塊,那 01/01 20:26
DongFeng:就會讓整體程式碼有好幾個包含html碼的<?php...?>區塊,如 01/01 20:28
DongFeng:果加上其中又有判斷式又不想使用echo輸出html碼的時候,就 01/01 20:29
DongFeng:會變成<?php...<?php...?>...?>這種巢狀的區塊, 總覺得這 01/01 20:30
DongFeng:樣的呈現方式很雜亂, 不知道版上的前輩對於這樣的狀況有 01/01 20:31
DongFeng:沒有什麼解決之道呢? 01/01 20:31
LaPass:就smarty那些東西啊.... 01/01 22:02
LaPass:還有,妳可以考慮使用MVC,不過不管切的再怎麼乾淨,還是會 01/01 22:04
LaPass:有html跟後端程式碼混在一起的片段在,只是規模大不大、有 01/01 22:04
LaPass:沒有把討厭的東西收到看不見的地方去而已 01/01 22:05
MOONRAKER:這沒什麼啊 過度的潔癖是不衛生的 01/01 22:29
MOONRAKER:如果潔癖到一點php code都不想在看板裡看到 那就ajax囉 01/01 22:30
DongFeng:感謝樓上兩位. 推過度的潔癖是不衛生的XDD 01/01 22:41
MOONRAKER::) 至少就我接觸到的習慣,與其把全部code都費勁藏起來 01/01 23:43
MOONRAKER:不如把他收拾乾淨、整理好,讓前端也能看懂剩下的部份 01/01 23:44
LaPass:用ajax的話會變成js跟html混在一起,某種程度只是把髒的地 01/02 00:29
LaPass:方推到前端去而已.... 01/02 00:29
mmis1000:反正js也能全部封裝進lib再調用阿,只要看不到就沒差 01/02 01:24
MOONRAKER:如果用backbone.js那種新兵器,好像就可以在前端達成MVC 01/02 11:44
MOONRAKER:並且code和HTML完全分離!? 01/02 11:44