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

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

  • 相关阅读:
    PAT (Advanced Level) Practice 1055 The World's Richest (25 分) (结构体排序)
    PAT (Advanced Level) Practice 1036 Boys vs Girls (25 分)
    PAT (Advanced Level) Practice 1028 List Sorting (25 分) (自定义排序)
    PAT (Advanced Level) Practice 1035 Password (20 分)
    PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) (进制转换,回文数)
    PAT (Advanced Level) Practice 1120 Friend Numbers (20 分) (set)
    从零开始吧
    Python GUI编程(TKinter)(简易计算器)
    PAT 基础编程题目集 6-7 统计某类完全平方数 (20 分)
    PAT (Advanced Level) Practice 1152 Google Recruitment (20 分)
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/4676349.html
Copyright © 2011-2022 走看看