示例项目:https://git.oschina.net/zunyun/zunyuncms
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-zunyuncms ├─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环境 if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',True); // 定义应用目录 define('APP_PATH','./Application/'); // 引入ThinkPHP入口文件 require './ThinkPHP/ThinkPHP.php'; // 亲^_^ 后面不需要任何代码了 就是如此简单
修改后的代码是这样的;
// +---------------------------------------------------------------------- // 应用入口文件 // 检测PHP环境 if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 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文件中定义一些目录;
'配置值' 'TMPL_PARSE_STRING' => array( // 定义常用路径 '__PUBLIC__' => .'/Public', '__HOME_CSS__' => .trim(TMPL_PATH,'.').'Home/Public/css', '__HOME_JS__' => .trim(TMPL_PATH,'.').'Home/Public/js', '__HOME_IMAGES__' => .trim(TMPL_PATH,'.').'Home/Public/images', '__ADMIN_CSS__' => .trim(TMPL_PATH,'.').'Admin/Public/css', '__ADMIN_JS__' => .trim(TMPL_PATH,'.').'Admin/Public/js', '__ADMIN_IMAGES__' => .trim(TMPL_PATH,'.').'Admin/Public/images', '__ADMIN_ACEADMIN__' => .trim(TMPL_PATH,'.').'Admin/Public/aceadmin', '__PUBLIC_CSS__' => .trim(TMPL_PATH,'.').'Public/css', '__PUBLIC_JS__' => .trim(TMPL_PATH,'.').'Public/js', '__PUBLIC_IMAGES__' => .trim(TMPL_PATH,'.').'Public/images', '__USER_CSS__' => .trim(TMPL_PATH,'.').'User/Public/css', '__USER_JS__' => .trim(TMPL_PATH,'.').'User/Public/js', '__USER_IMAGES__' => .trim(TMPL_PATH,'.').'User/Public/images', '__APP_CSS__' => .trim(TMPL_PATH,'.').'App/Public/css', '__APP_JS__' => .trim(TMPL_PATH,'.').'App/Public/js', '__APP_IMAGES__' => .trim(TMPL_PATH,'.').'App/Public/images' ), );
然后以后在html中就使用这些路径了;
尊氪博客
本系统安装引导可用于任何thnkphp项目
微信扫码关注 layui 公众号