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. idea引用自己的插件

  2. p命名空间的使用(不推荐用)

    xmlns:p="http://www.springframework.org/schema/p" p:没有xsd文件,直接加上面那句就好了 <!-- singleton和p ...

  3. Hadoop伪分布式搭建(一)

     下面内容主要说明在Windows虚拟机上面,怎么搭建一个Hadoop伪分布式,并如何运行wordcount程序和网页查看HDFS文件系统. 1 相关软件下载和安装 APACH官网提供hadoop版本 ...

  4. UESTC 1852 Traveling Cellsperson

    找规律水题... Traveling Cellsperson Time Limit: 1000ms Memory Limit: 65535KB This problem will be judged ...

  5. jquery选择器(二)-层次选择器

    1. 后代选择器 2. 子元素选择器 3. 相邻兄弟元素选择器 4. 一般兄弟元素选择器(同辈元素选择器) 5. 补充(除自身以外的前后同辈选择器)

  6. Spring配置bean文件的底层实现方式

    首先 bean文件如下: <beans> <bean id="date" class="java.util.Date"></bea ...

  7. MYSQL基础语句

    参考书籍< MySQL数据库基础与实例教程> --孔祥盛 SQL(structured query language)结构化查询语言,应用最为广泛的关系型数据库语言. MYSQL属于关系型 ...

  8. CentOS-6.5安装zabbix 3.0.4

    关闭selinux [root@localhost /]# sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux ...

  9. webpack 教程 那些事儿06-gulp+webpack多页

    本篇主要讲述用gulp+webpack构建多页应用 折腾到现在,项目还必须要进行,.vue文件必须要加载,也就是webpack必须引入.时间不多了,抛弃上个方案之后,只能牺牲热加载性能,用gulp+w ...

  10. 实现百度IFE2015Spring的任务Task3的几个问题和解决办法

    1.如何实现页面的宽高自适应浏览器的变化,且有一个最小宽和高 <head> <meta charset = "utf-8"> <title>个人 ...