zoukankan      html  css  js  c++  java
  • 模仿写一个小型网站框架

    之前的博文中讲述MVC的时候,介绍了美女同学的简单框架one。本来就打算要在美女框架的基础上有所改进,至少能够独立搭出一个成型的小网站出来(有界面交互,有db读写等)。刚好最近工作内容不同,故借此机会搭建了一个小型的网站。

    网站非常简单,框架大部分思想还是借鉴sunny美女。希望后续自己能够使用比较流行的github搭建自己的博客网站,或是采用nodejs+一些主题。总之需要改进的空间有很多,关键在于耐心和求知欲。
     
    1. 代码架构-----各个部分的作用以及相关的依赖
    sunny美女的框架的结构(如下图所示)确实简洁明了。
    美女同学没有使用模版引擎,而是自己写了一个view类,也没有使用其他的mysql访问类,而是自己写一个mysql类来访问db。这样写的好处是框架比较轻,也方便学习代码阅读者了解框架细节。
    但是如果要用这个框架搭建一个网站,就会比较难用。
    所以我在美女同学的基础上引进了smarty的模版引擎,PDO的访问类,并且为了更加成型,参照以前做过的一个管理碗盏,做了一个主界面,写一些简单的js,通过js将每次用户请求访问的数据在一个man div中显示出来。
    改进后的代码结构如下:
     
    • index.php是网站的统一入口文件。获取用户的请求参数。
    • library是框架所依赖的一些库。
    • core.php是入口文件调用的主函数Core::run($requestParms)是在本文件中实现的。本文件主要实现了加载依赖文件loadFile;,初始化控制器以初始化view对象(initController); 解析请求参数,获取路由控制信息(Router),通过c参数知道调用哪个控制类,同个a参数知道调用哪个控制类的哪个函数。
    • smarty文件夹就是所依赖的smarty模版引擎。
    • logs 可以存放运行的相关日志。
    • model主要实现相关数据的读写和逻辑处理类
    • static整个亚太存储静态文件。
    • view存储的是一些视图模版文件,可以通过smarty对模版文件某些变量赋值,并且将界面display出来。
     
    2. 数据流---主要参照MVC框架的介绍
    解析url获取用户请求,将用户请求的参数,转化为相应的controller类的相应action函数,调用该函数请求访问data层,获取处理后的数据,填充到view层,然后渲染在前端显示。
    其实这种有很多细节:
    • 如何解析url将域名转化为服务器ip,并且找到服务器服务程序所在的目录
    • 用户如何通过url将请求参数传回给服务端
    • html,css,js之间如何相互协作,将DOM渲染出来
    • 服务端将处理的结果如何返回给客户端浏览器显示
     
    3. 源代码----提交到我的github
    代码放在github上,大家可以参考。
    运行效果图如下:
     
    4. 小改进:
    (1)通过PDO访问数据库
    $dsn = "mysql:host={$g_databases[$dbname]['host']};port={$g_databases[$dbname]['port']};dbname={$g_databases[$dbname]['dbname']}";
    $db = new PDO($dsn, $g_databases[$dbname]['usr'], $g_databases[$dbname]['pwd'], array(PDO::ATTR_PERSISTENT => true));
    $db->exec("SET NAMES 'utf8';"); // must need to set names utf8, if not, Chinese will be wrong
    (2)使用smarty的模版引擎
    添加了smarty_view访问的baseController类,去掉了library中的controller类和model类
    <?php
    class baseController
    {
        protected $mDefLang = 'CN';
        protected $mView = null;
        protected $mParams = null;
        function __construct($params)
        {
            // 这个需要考虑view,model-----依照最简单的去写
            $this->mView = new View_Smarty();
            $this->mView->caching = false;
            $this->mParams = $params;
        }
    }
     
    5. 感谢
    主要参照了美女sunny的github---一个简单的php框架-----https://github.com/linsunny/one
    参照了之前刚入职做的一个管理网站的架构对上述框架进行精简
    参照了刚入职做的管理网站的主页模版。
  • 相关阅读:
    Android NDK 环境搭建(Native Development Kit )
    No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing in
    ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的?
    解决FileUpload控件上传文件大小限制
    学习图表控件MsChart
    Delphi PChar与String互转
    Ext.data.Store的基本用法
    My97 DatePicker 日期格式
    ASP.net流的方式输出图片或文件
    C# 二进制、十进制、十六进制互转
  • 原文地址:https://www.cnblogs.com/TsingLo/p/5125047.html
Copyright © 2011-2022 走看看