示例项目:https://github.com/baijunyao/thinkphp-bjyadmin

thinkphp默认的View都是在/Application各个模块下的;

css、js之类的资源文件是放在/Public目录下;

大致是这个样子的;thinkphp

├─Application 项目逻辑目录

│ ├─Common 公共模块

│ │ ├─...

│ ├─Home Home模块

│ │ ├─Controller Home控制器目录

│ │ ├─...

│ │ ├─View Home模块下的视图目录

│ │ │ ├─Index

│ │ │ │ ├─index.html

│ │ │ │ ├─...

│ │ │ ├─Tag

│ │ │ │ ├─index.html

│ │ │ │ ├─add.html

│ │ │ │ ├─edit.html

│ │ │ │ ├─...

│ ├─Admin Admin模块

│ │ ├─Controller Admin控制器目录

│ │ ├─...

│ │ ├─View Admin模块下的视图目录

│ │ │ ├─Index

│ │ │ │ ├─index.html

│ │ │ │ ├─...

│ │ │ ├─Article

│ │ │ │ ├─index.html

│ │ │ │ ├─add.html

│ │ │ │ ├─edit.html

│ │ │ │ ├─...

│ ├─...

├─Public 资源文件目录

│ ├─Home 前台Home视图目录

│ │ ├─Public 前台Home的公共目录

│ │ │ ├─js home下调用的js文件目录

│ │ │ ├─css home下调用的css文件目录

│ │ │ ├─images home下调用的图片文件目录

│ ├─Admin 前台Home视图目录

│ │ ├─Public 前台Home的公共目录

│ │ │ ├─js home下调用的js文件目录

│ │ │ ├─css home下调用的css文件目录

│ │ │ ├─images home下调用的图片文件目录

│ ├─...

├─ThinkPHP 框架系统目录

但是在实际开发中;

这样把View目录分散到各个模块下是有很多弊端的;

首先开发多套主题相当之麻烦相当之混乱;

再个使用gulp这类前端工具很不便利;

我们想要的是某个目录下全是原始代码;

另一个目录下全是压缩后的html、js、css等;

燃鹅;这样一个小愿望在面对这样的目录结构时;

我的表情是 黑人问号.jpg;

所以;我是把所有的模板文件和js、css等独立出来放在根目录下的/tpl中的;

这里偷个懒;直接把以前写的目录结构拿来了;thinkphp-bjyadmin

├─Application 项目逻辑目录

│ ├─Common 公共模块

│ │ ├─Common 公共函数目录

│ │ │ ├─functioin.php 公共函数php文件

│ │ ├─Conf 公共配置文件目录

│ │ │ ├─config.php tp的配置 用于覆盖框架默认配置项

│ │ │ ├─db.php 数据库配置 用户名 密码等

│ │ │ ├─webconfig.php 项目的配置;网站名;是否开启网站等

│ │ ├─Controller 公共控制器目录

│ │ │ ├─BaseController.class.php 应用最基础的控制器

│ │ │ ├─HomeBaseController.class.php Home基础控制器继承BaseController

│ │ │ ├─AdminBaseController.class.php Admin基础控制器继承BaseController

│ │ │ ├─UserBaseController.class.php User基础控制器继承BaseController

│ │ │ ├─...

│ │ ├─Model 公共模型目录

│ │ │ ├─BaseModel.class.php 应用最基础的Model

│ │ │ ├─ArticleModel.class.php 文章model 继承BaseModel

│ │ │ ├─UserModel.class.php 用户model 继承BaseModel

│ │ │ ├─...

│ │ ├─Tag 公共标签目录

│ │ │ ├─My.class.php 自定义的标签库

│ │ │ ├─...

│ ├─Home Home模块

│ │ ├─Controller Home控制器目录 继承HomeBaseController

│ │ │ ├─ArticleController.class.php 文章控制器目录

│ │ │ ├─IndexController.class.php 首页控制器

│ │ │ ├─ ...

│ ├─Admin Admin模块

│ │ ├─Controller Admin控制器目录 继承AdminBaseController

│ │ │ ├─IndexController.class.php 后台管理首页控制器

│ │ │ ├─ ...

│ ├─User User模块

│ │ ├─Controller User控制器目录 继承UserBaseController

│ │ │ ├─IndexController.class.php 用户个人中心首页控制器

│ │ │ ├─ ...

├─Public 资源文件目录

│ ├─install 安装引导目录

│ ├─statics 静态资源目录

│ │ ├─bootstrap bootstrap框架

│ │ ├─ueditor ueditor编辑器

│ │ ├─js jquery等第三方js存放的目录

│ │ ├─css animate.css等第三方css目录

│ │ ├─ ...

├─tpl 视图文件目录

│ ├─Public 公共目录

│ │ ├─js 公共js目录

│ │ │ ├─base.js 全站都引用的js文件

│ │ │ ├─ ...

│ │ ├─css 公共css目录

│ │ │ ├─base.css 全站都引用的css文件

│ │ │ ├─ ...

│ │ ├─images 公共图片目录

│ │ ├─public_head.html 全站通用的公共头部

│ │ ├─public_foot.html 全站通用的公共底部

│ │ ├─...

│ ├─Home 前台Home视图目录

│ │ ├─Public 前台Home的公共目录

│ │ │ ├─js home下调用的js文件目录

│ │ │ ├─css home下调用的css文件目录

│ │ │ ├─images home下调用的图片文件目录

│ │ ├─Index 首页文件目录

│ │ │ ├─index.html 首页

│ │ │ ├─ ...

│ ├─Admin 同Home

│ ├─User 同Home

├─Upload 公共上传目录

│ ├─images 上传的图片目录

│ │ ├─avatar 头像目录

│ │ ├─ueditor ueditor编辑器上传的图片目录

│ │ │ ...

│ │ ...

├─Runtime 缓存目录

├─ThinkPHP 框架系统目录

其他目录的设计原则可以回顾 thinkphp的目录结构设计经验总结

我们把html独立出来后;最直观的感受是;

结构上前后端更加独立了;以前是大杂烩;

而且我们一言不合;想改目录就改目录;相当自由;

那要实现这样的结构非常简单;

只需要在根目录的入口文件index.php文件中定义TMPL_PATH就可以了;

原本的代码是这样的;<?php

// +----------------------------------------------------------------------

// | ThinkPHP [ WE CAN DO IT JUST THINK ]

// +----------------------------------------------------------------------

// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.

// +----------------------------------------------------------------------

// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )

// +----------------------------------------------------------------------

// | Author: liu21st

// +----------------------------------------------------------------------

// 应用入口文件

// 检测PHP环境

if(version_compare(PHP_VERSION,'5.3.0',' 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false

define('APP_DEBUG',True);

// 定义应用目录

define('APP_PATH','./Application/');

// 引入ThinkPHP入口文件

require './ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了 就是如此简单

修改后的代码是这样的;<?php

// +----------------------------------------------------------------------

// | ThinkPHP [ WE CAN DO IT JUST THINK ]

// +----------------------------------------------------------------------

// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.

// +----------------------------------------------------------------------

// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )

// +----------------------------------------------------------------------

// | Author: liu21st

// +----------------------------------------------------------------------

// 应用入口文件

// 检测PHP环境

if(version_compare(PHP_VERSION,'5.3.0',' 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false

define('APP_DEBUG',True);

// 定义应用目录

define('APP_PATH','./Application/');

// 定义缓存目录

define('RUNTIME_PATH','./Runtime/');

// 定义模板文件默认目录

define("TMPL_PATH","./tpl/");

// 引入ThinkPHP入口文件

require './ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了 就是如此简单

细心的童鞋可能发现了;这里还定义了个RUNTIME_PATH是为嘛呢?

买一送一;

这里是顺便把缓存文件Runtime文件夹也从/Application中独立到根目录下了;

当项目上线后;关闭了调试模式;来这里删缓存文件方便;

恩;好吧;我承认我是处女座;

就是喜欢/Application下只是php业务代码;

就是喜欢纯粹干净的感觉;

排斥各种混杂;

当然;到这里已经可以结束了;

但是我们还可以做的更好;

还需要在/Application/Common/Conf/config.php文件中定义一些目录;<?php

return array(

//'配置项'=>'配置值'

'TMPL_PARSE_STRING' => array( // 定义常用路径

'__PUBLIC__' => __ROOT__.'/Public',

'__HOME_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'Home/Public/css',

'__HOME_JS__' => __ROOT__.trim(TMPL_PATH,'.').'Home/Public/js',

'__HOME_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'Home/Public/images',

'__ADMIN_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/css',

'__ADMIN_JS__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/js',

'__ADMIN_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/images',

'__ADMIN_ACEADMIN__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/aceadmin',

'__PUBLIC_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'Public/css',

'__PUBLIC_JS__' => __ROOT__.trim(TMPL_PATH,'.').'Public/js',

'__PUBLIC_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'Public/images',

'__USER_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'User/Public/css',

'__USER_JS__' => __ROOT__.trim(TMPL_PATH,'.').'User/Public/js',

'__USER_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'User/Public/images',

'__APP_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'App/Public/css',

'__APP_JS__' => __ROOT__.trim(TMPL_PATH,'.').'App/Public/js',

'__APP_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'App/Public/images'

),

);

然后以后在html中就使用这些路径了;

白俊遥博客

8f13869fd2fe5c47e66e25f4733c32b9.png

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐