zoukankan      html  css  js  c++  java
  • 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就有作弊嫌疑,

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

  • 相关阅读:
    简例 一次执行多条mysql insert语句
    javax/javaee-api/ Maven依赖
    关闭页面前提示或保存数据
    SpringMVC的controller方法上若需要参数 如User
    方正飞越 A600硬改BIOS激活win7的工具与方法。
    Win7下IE11点击无反应的解决方法
    WinXP局域网共享设置
    使用VHD,让Win XP和 Win2003 运行在内存中
    dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解
    win8.1点击“更改电脑设置”无反应(闪退)
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/4676349.html
Copyright © 2011-2022 走看看