question2answer論壇框架分析及web開發思考

myDCool發表於2015-07-25

2015年7月25日 17:31:42 星期六

一個專門做論壇的開源PHP框架, 有後臺, 支援多語種

入口檔案是框架根目錄的index.php

他包含了/qa-include/qa-index.php:  把URL裡的引數重新組裝放到$requestparts陣列裡

qa-index.php 檔案的最後, 包含了 /qa-include/qa-page.php檔案:

  1. 檔案最後, 呼叫 qa_get_request_content()函式, 根據上一步獲得的請求陣列, 包含進來相應的php檔案

  2. 包含的時候用到了路由, 也是在這個檔案裡定義的; 如果路由沒有匹配到會轉到default.php去找處理程式檔案,

會根據uri的第一個路徑引數迴圈在qa-plugin/下邊找處理檔案xxx/xxx-***.php(abc.com/xxx/yyy/….)

  3. 這個函式處理後生成的是一個陣列, 該檔案的最後, 呼叫qa_output_content()函式, 將該陣列轉換成html文件輸出

  4. 如果傳遞了 qa=”ajax” 和 qa_operation=”xxx” 兩個引數, 會走qa_ajax.php(他也包含了qa_base.php), 裡邊也有路由陣列, 包含相應的PHP檔案

結論:

跟syfony一樣是個坑比的框架, 沒有專門寫的完整的html頁面的地方: meta, js, css引用是在框架裡引用的, form表單什麼的也是由PHP函式生成的,

TMD, 這不坑死PHP和前端開發了麼

總結: MLGB CAO

======================

吐槽

從技術上說, 不管什麼語言的什麼框架, MVC也好, 非MVC也好, 歸根結底都是檔案的相互包含, 要麼include, require, 要麼import

從大環境來說, MVC的流行, 是因為程式開發越來越專業化, 前端的專心搞前端開發和使用流行的技術, 後端專心搞後端開發和使用流行的技術

而MVC正好適應了形勢, 把後端和前端的戰場分開, 誰也不依賴誰, 可以使雙方完全掌控自己的地盤

—————–

現在程式開發大環境上正處於過渡階段,

例子1. PHP中的smarty, 就是過度階段的產物, 他自己創了一套語法, 可以以類似html標籤的形式去寫後端程式碼, 目標是給前端開發用的, (美其名曰前後端分離)

但實際上都是PHPer在使用. 前端開發者, 不給他們下任務, 誰他麼用啊, PHPer既得熟悉PHP語法, 又得熟悉smarty語法, 

何苦呢, PHP本身就是模版語言, 本身就可以巢狀在html裡, 為什麼要用你smarty, 四不像

例子2. angular.js, 他的出現, (可能)會完全釋放了後端開發, 前端開發也有更多的權力了, 伺服器的壓力也變小了

因為, angular.js 接受的是json結果, DOM渲染完全是由js來把控

以前:

伺服器端, PHP/java從mysql裡把資料獲取好, 把html頁面包含進來, 將資料塞進HTML檔案裡該放的地方, 然後返回給Apache/Nginx

然後再返回給瀏覽器渲染

現在angular.js:

伺服器端, PHP/JAVA把資料從資料庫中讀出來, 組裝成json串, 連同html頁面一塊下發給瀏覽器,

而且html只用下發一次, 後續使用者互動時頁面(資料)有改變時, 只用下發json資料就行了

後端開發者不需要(或很少)去操作HTML檔案(判空, for迴圈等等), 把這些操作完全分散到瀏覽器端讓js去執行了,

伺服器的壓力自然就小了, 就像app開發, 後續的操作完全是呼叫服務端介面

SEO:

用了angular.js, 自然會考慮到SEO的問題, 現在百度谷歌都在支援這個技術, 沒必要擔心SEO

因為搜尋引擎也在互相競爭, 也想收錄到比對手更多的更有用的頁面, 所以不要擔心搜尋引擎是收錄問題

說白了, 主要是做好你的網站, 戳到使用者的痛點, 不然你的SEO就有作弊嫌疑,

搜尋引擎每天抓取/收錄大量的頁面, 他也累呀, 而且頁面內容都大差不差, 一旦發現作弊他就永遠不會來了


相關文章