thinkphp把模板文件View独立出来
thinkphp默认的View都是在/Application各个模块下的;
css、js之类的资源文件是放在/Public目录下;
大致是这个样子的;
thinkphp├─Application 项目逻辑目录<br>
│ ├─Common 公共模块<br>
│ │ ├─...<br>
│ ├─Home Home模块<br>
│ │ ├─Controller Home控制器目录<br>
│ │ ├─...<br>
│ │ ├─View Home模块下的视图目录<br>
│ │ │ ├─Index<br>
│ │ │ │ ├─index.html<br>
│ │ │ │ ├─...<br>
│ │ │ ├─Tag<br>
│ │ │ │ ├─index.html<br>
│ │ │ │ ├─add.html<br>
│ │ │ │ ├─edit.html<br>
│ │ │ │ ├─...<br>
│ ├─Admin Admin模块<br>
│ │ ├─Controller Admin控制器目录<br>
│ │ ├─...<br>
│ │ ├─View Admin模块下的视图目录<br>
│ │ │ ├─Index<br>
│ │ │ │ ├─index.html<br>
│ │ │ │ ├─...<br>
│ │ │ ├─Article<br>
│ │ │ │ ├─index.html<br>
│ │ │ │ ├─add.html<br>
│ │ │ │ ├─edit.html<br>
│ │ │ │ ├─...<br>
│ ├─...<br>
├─Public 资源文件目录<br>
│ ├─Home 前台Home视图目录 <br>
│ │ ├─Public 前台Home的公共目录<br>
│ │ │ ├─js home下调用的js文件目录<br>
│ │ │ ├─css home下调用的css文件目录<br>
│ │ │ ├─images home下调用的图片文件目录 <br>
│ ├─Admin 前台Home视图目录 <br>
│ │ ├─Public 前台Home的公共目录<br>
│ │ │ ├─js home下调用的js文件目录<br>
│ │ │ ├─css home下调用的css文件目录<br>
│ │ │ ├─images home下调用的图片文件目录 <br>
│ ├─...<br>
├─ThinkPHP 框架系统目录
但是在实际开发中;
这样把View目录分散到各个模块下是有很多弊端的;
首先开发多套主题相当之麻烦相当之混乱;
再个使用gulp这类前端工具很不便利;
我们想要的是某个目录下全是原始代码;
另一个目录下全是压缩后的html、js、css等;
燃鹅;这样一个小愿望在面对这样的目录结构时;
我的表情是 黑人问号.jpg;
所以;我是把所有的模板文件和js、css等独立出来放在根目录下的/tpl中的;
这里偷个懒;直接把以前写的目录结构拿来了;thinkphp-bjyadmin<br>
├─Application 项目逻辑目录<br>
│ ├─Common 公共模块<br>
│ │ ├─Common 公共函数目录<br>
│ │ │ ├─functioin.php 公共函数php文件<br>
│ │ ├─Conf 公共配置文件目录<br>
│ │ │ ├─config.php tp的配置 用于覆盖框架默认配置项<br>
│ │ │ ├─db.php 数据库配置 用户名 密码等<br>
│ │ │ ├─webconfig.php 项目的配置;网站名;是否开启网站等<br>
│ │ ├─Controller 公共控制器目录 <br>
│ │ │ ├─BaseController.class.php 应用最基础的控制器<br>
│ │ │ ├─HomeBaseController.class.php Home基础控制器继承BaseController<br>
│ │ │ ├─AdminBaseController.class.php Admin基础控制器继承BaseController<br>
│ │ │ ├─UserBaseController.class.php User基础控制器继承BaseController<br>
│ │ │ ├─...<br>
│ │ ├─Model 公共模型目录<br>
│ │ │ ├─BaseModel.class.php 应用最基础的Model<br>
│ │ │ ├─ArticleModel.class.php 文章model 继承BaseModel<br>
│ │ │ ├─UserModel.class.php 用户model 继承BaseModel<br>
│ │ │ ├─...<br>
│ │ ├─Tag 公共标签目录<br>
│ │ │ ├─My.class.php 自定义的标签库<br>
│ │ │ ├─...<br>
│ ├─Home Home模块<br>
│ │ ├─Controller Home控制器目录 继承HomeBaseController<br>
│ │ │ ├─ArticleController.class.php 文章控制器目录 <br>
│ │ │ ├─IndexController.class.php 首页控制器<br>
│ │ │ ├─ ... <br>
│ ├─Admin Admin模块<br>
│ │ ├─Controller Admin控制器目录 继承AdminBaseController<br>
│ │ │ ├─IndexController.class.php 后台管理首页控制器<br>
│ │ │ ├─ ... <br>
│ ├─User User模块<br>
│ │ ├─Controller User控制器目录 继承UserBaseController<br>
│ │ │ ├─IndexController.class.php 用户个人中心首页控制器<br>
│ │ │ ├─ ... <br>
├─Public 资源文件目录<br>
│ ├─install 安装引导目录<br>
│ ├─statics 静态资源目录<br>
│ │ ├─bootstrap bootstrap框架<br>
│ │ ├─ueditor ueditor编辑器<br>
│ │ ├─js jquery等第三方js存放的目录<br>
│ │ ├─css animate.css等第三方css目录<br>
│ │ ├─ ... <br>
├─tpl 视图文件目录<br>
│ ├─Public 公共目录<br>
│ │ ├─js 公共js目录<br>
│ │ │ ├─base.js 全站都引用的js文件<br>
│ │ │ ├─ ... <br>
│ │ ├─css 公共css目录<br>
│ │ │ ├─base.css 全站都引用的css文件 <br>
│ │ │ ├─ ... <br>
│ │ ├─images 公共图片目录 <br>
│ │ ├─public_head.html 全站通用的公共头部<br>
│ │ ├─public_foot.html 全站通用的公共底部<br>
│ │ ├─... <br>
│ ├─Home 前台Home视图目录 <br>
│ │ ├─Public 前台Home的公共目录<br>
│ │ │ ├─js home下调用的js文件目录<br>
│ │ │ ├─css home下调用的css文件目录<br>
│ │ │ ├─images home下调用的图片文件目录<br>
│ │ ├─Index 首页文件目录<br>
│ │ │ ├─index.html 首页 <br>
│ │ │ ├─ ...<br>
│ ├─Admin 同Home<br>
│ ├─User 同Home<br>
├─Upload 公共上传目录<br>
│ ├─images 上传的图片目录<br>
│ │ ├─avatar 头像目录<br>
│ │ ├─ueditor ueditor编辑器上传的图片目录<br>
│ │ │ ...<br>
│ │ ...<br>
├─Runtime 缓存目录<br>
├─ThinkPHP 框架系统目录
其他目录的设计原则可以回顾 thinkphp的目录结构设计经验总结 http://baijunyao.com/article/60
我们把html独立出来后;最直观的感受是;
结构上前后端更加独立了;以前是大杂烩;
而且我们一言不合;想改目录就改目录;相当自由;
那要实现这样的结构非常简单;
只需要在根目录的入口文件index.php文件中定义TMPL_PATH就可以了;
原本的代码是这样的;<?php <br />
// +----------------------------------------------------------------------<br>
// | ThinkPHP [ WE CAN DO IT JUST THINK ]<br>
// +----------------------------------------------------------------------<br>
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.<br>
// +----------------------------------------------------------------------<br>
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )<br>
// +----------------------------------------------------------------------<br>
// | Author: liu21st <liu21st><br>
// +----------------------------------------------------------------------<br>
<br>
// 应用入口文件<br>
<br>
// 检测PHP环境<br>
if(version_compare(PHP_VERSION,'5.3.0',' 5.3.0 !');<br>
<br>
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false<br>
define('APP_DEBUG',True);<br>
<br>
// 定义应用目录<br>
define('APP_PATH','./Application/');<br>
<br>
// 引入ThinkPHP入口文件<br>
require './ThinkPHP/ThinkPHP.php';<br>
<br>
// 亲^_^ 后面不需要任何代码了 就是如此简单</liu21st>
修改后的代码是这样的;<?php <br />
// +----------------------------------------------------------------------<br>
// | ThinkPHP [ WE CAN DO IT JUST THINK ]<br>
// +----------------------------------------------------------------------<br>
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.<br>
// +----------------------------------------------------------------------<br>
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )<br>
// +----------------------------------------------------------------------<br>
// | Author: liu21st <liu21st><br>
// +----------------------------------------------------------------------<br>
<br>
// 应用入口文件<br>
<br>
// 检测PHP环境<br>
if(version_compare(PHP_VERSION,'5.3.0',' 5.3.0 !');<br>
<br>
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false<br>
define('APP_DEBUG',True);<br>
<br>
// 定义应用目录<br>
define('APP_PATH','./Application/');<br>
<br>
// 定义缓存目录<br>
define('RUNTIME_PATH','./Runtime/');<br>
<br>
// 定义模板文件默认目录<br>
define("TMPL_PATH","./tpl/");<br>
<br>
// 引入ThinkPHP入口文件<br>
require './ThinkPHP/ThinkPHP.php';<br>
<br>
// 亲^_^ 后面不需要任何代码了 就是如此简单</liu21st>
细心的童鞋可能发现了;这里还定义了个RUNTIME_PATH是为嘛呢?
买一送一;
这里是顺便把缓存文件Runtime文件夹也从/Application中独立到根目录下了;
当项目上线后;关闭了调试模式;来这里删缓存文件方便;
恩;好吧;我承认我是处女座;
就是喜欢/Application下只是php业务代码;
就是喜欢纯粹干净的感觉;
排斥各种混杂;
当然;到这里已经可以结束了;
但是我们还可以做的更好;
还需要在/Application/Common/Conf/config.php文件中定义一些目录;<?php <br />
return array(<br>
//'配置项'=>'配置值'<br>
'TMPL_PARSE_STRING' => array( // 定义常用路径<br>
'__PUBLIC__' => __ROOT__.'/Public',<br>
'__HOME_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'Home/Public/css',<br>
'__HOME_JS__' => __ROOT__.trim(TMPL_PATH,'.').'Home/Public/js',<br>
'__HOME_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'Home/Public/images',<br>
'__ADMIN_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/css',<br>
'__ADMIN_JS__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/js',<br>
'__ADMIN_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/images',<br>
'__ADMIN_ACEADMIN__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/aceadmin',<br>
'__PUBLIC_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'Public/css',<br>
'__PUBLIC_JS__' => __ROOT__.trim(TMPL_PATH,'.').'Public/js',<br>
'__PUBLIC_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'Public/images',<br>
'__USER_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'User/Public/css',<br>
'__USER_JS__' => __ROOT__.trim(TMPL_PATH,'.').'User/Public/js',<br>
'__USER_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'User/Public/images',<br>
'__APP_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'App/Public/css',<br>
'__APP_JS__' => __ROOT__.trim(TMPL_PATH,'.').'App/Public/js',<br>
'__APP_IMAGES__' => __ROOT__.trim(TMPL_PATH,'.').'App/Public/images'<br>
),<br>
);<br>
然后以后在html中就使用这些路径了;<br>
nbsp;html><br>
<br>
<br>
<meta>
<br>
<title>白俊遥博客</title>
<br>
<css></css><br>
<br>
<br>
<br>
<js></js><br>
<br>
白俊遥博客 http://baijunyao.com/article/90