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就有作弊嫌疑,

搜索引擎每天抓取/收录大量的页面, 他也累呀, 而且页面内容都大差不差, 一旦发现作弊他就永远不会来了

question2answer论坛框架分析及web开发思考的更多相关文章

  1. 【原创】三分钟教你学会MVC框架——基于java web开发(2)

    没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...

  2. Python Web框架本质——Python Web开发系列一

    前言:了解一件事情本质的那一瞬间总能让我获得巨大的愉悦感,希望这篇文章也能帮助到您. 目的:本文主要简单介绍Web开发中三大基本功能:Socket实现.路由系统.模板引擎渲染. 进入正题. 一. 基础 ...

  3. 【原创】三分钟教你学会MVC框架——基于java web开发(1)

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法. ...

  4. 学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码

    在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> ...

  5. VS2010/MFC编程入门之四(MFC应用程序框架分析)

    VS2010/MFC编程入门之四(MFC应用程序框架分析)-软件开发-鸡啄米 http://www.jizhuomi.com/software/145.html   上一讲鸡啄米讲的是VS2010应用 ...

  6. web开发发展历程

    cs架构:(软件主要运行在桌面上,数据库软件运行在服务器端) 缺点:如果web应用修改或升级,需要每个客户端逐个升级桌面App,因此Browser/server模式开始流行. bs架构:应用程序的逻辑 ...

  7. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  8. 【今日推荐】移动 Web 开发的10个最佳 JavaScript 框架

    选择正确的 JavaScript 框架,对于开发移动 Web 应用程序是至关重要的,也是移动应用程序开发的一项重要任务.开发人员可以使用框架实现的功能高效地达到他们的开发目标.这些预实现的组件采用优秀 ...

  9. PHP做Web开发的MVC框架(Smarty使用说明 )

    PHP做Web开发的MVC框架(Smarty使用说明 ) 一.Smarty简明教程 1.安装演示 下载最新版本的Smarty-3.1.12,然后解压下载的文件.接下来演示Smarty自带的demo例子 ...

随机推荐

  1. jq实现鼠标移动到 图片上放大,移开图片缩小效果(打算封装成插件)

    先看代码 <script> $(function() { $('div').mouseover(function() { $('img').animate({ opacity: '0.9' ...

  2. thinkphp-3

    有两种创建项目的方式: 一是用多个单入口文件, 一个入口文件对应着一个项目, 如前台/后台/会员中心等 二是用一个单入口, 创建项目分组 对于有多个入口文件的 情况, 配置文件的共享问题? 不管是前台 ...

  3. linux系统命令:yum和apt-get

    转:http://my.oschina.net/liuyuanyuangogo/blog/546850 1.linux系统分类 一般来说著名的linux系统基本上分两大类: RedHat系列:Redh ...

  4. 绕过HR破门而入的求职智慧

    以往我们在网上看到的很多求职文章或指导性纲领,譬如啥自信.做功课.良好形象.华丽的简历.工作经验.口才啥的,其实到了21世纪尤其是互联网高速发展的今天,前面这些技巧就显得无比空洞: 1.因为自信谁都可 ...

  5. 湖南附中模拟day1 瞭望塔

    /* 这个题要用到树的性质,一般比较难的图论题会往这方面靠拢,这样用很容易出错,应该先写暴力,然后再去一点点想正解 */ //暴力70分 #include<iostream> #inclu ...

  6. jquery选择器(一)-基础选择器

    1. ID元素选择器 $("#btn1") 2. class元素选择器 $(".btn") 3. 标签元素选择器 $("div") 4. 全 ...

  7. 从程序员到CTO的Java技术路线图

    转自:http://zz563143188.iteye.com/blog/1877266 企业级项目实战地址:http://zz563143188.iteye.com/blog/1825168 开发资 ...

  8. [开源类库/项目] android保存崩溃时的错误信息log至本地【源码+jar包+使用说...

    不知大家是否经常遇到这种情况:自己的项目有时会在没有连接到电脑时发生崩溃,好不容易发现的bug结果连接到电脑时又复现不出来了:又或者自己写的一个功能在开机启动时产生小bug导致崩溃,而刚启动的机器想让 ...

  9. 淘宝(阿里百川)手机客户端开发日记第十五篇 JSON解析(四)

    解析一个从淘宝传递的JSON (大家如有兴趣可以测试下):{ "tae_item_detail_get_response": { "data": { " ...

  10. session会话复制

    前几天请教了Yoda大神关于会话复制方面的问题,        如果客户访问是两个服务器的东西,这样会有两个分别的session, 这两个session之间怎么交互,集群环境下,同构的服务器,专业术语 ...