question2answer论坛框架分析及web开发思考
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就有作弊嫌疑,
搜索引擎每天抓取/收录大量的页面, 他也累呀, 而且页面内容都大差不差, 一旦发现作弊他就永远不会来了