thinkphp separates the template file View
thinkphp’s default Views are under each module of /Application;
Resource files such as css and js are placed in the /Public directory;
It’s roughly like this;
thinkphp├─Application project logical directory<br>
│ ├─Common public module<br>
│ │ ├─...<br>
│ ├─Home Home module<br>
│ │ ├─Controller Home controller directory<br>
│ │ ├─...<br>
│ │ ├─View directory under the View Home module<br>
│ │ │ ├─Index<br>
│ │ │ │ ├─index.html<br>
│ │ │ │ ├─...<br>
│ │ │ ├─Tag<br>
│ │ │ │ ├─index.html<br>
│ │ │ │ ├─add.html<br>
│ │ │ │ ├─edit.html<br>
│ │ │ │ ├─...<br>
│ ├─Admin Admin module<br>
│ │ ├─Controller Admin controller directory<br>
│ │ ├─...<br>
│ │ ├─View The view directory under the Admin module<br>
│ │ │ ├─Index<br>
│ │ │ │ ├─index.html<br>
│ │ │ │ ├─...<br>
│ │ │ ├─Article<br>
│ │ │ │ ├─index.html<br>
│ │ │ │ ├─add.html<br>
│ │ │ │ ├─edit.html<br>
│ │ │ │ ├─...<br>
│ ├─...<br>
├─Public Resource File Directory<br>
│ ├─Home Front Home View Directory <br>
│ │ ├─Public The public directory of the front desk Home<br>
│ │ │ ├─js file directory called under js home<br>
│ │ │ ├─css file directory called under css home<br>
│ │ │ ├─Picture file directory called under images home <br>
│ ├─Admin Front Desk Home View Directory <br>
│ │ ├─Public The public directory of the front desk Home<br>
│ │ │ ├─js file directory called under js home<br>
│ │ │ ├─css file directory called under css home<br>
│ │ │ ├─Picture file directory called under images home <br>
│ ├─...<br>
├─ThinkPHP framework system directory
But in actual development;
Spreading the View directory into various modules has many disadvantages;
First of all, developing multiple themes is quite troublesome and confusing;
Furthermore, it is very inconvenient to use front-end tools such as gulp;
What we want is a directory full of original code;
Another directory is full of compressed html, js, css, etc.;
Burning Goose; Such a small wish when faced with such a directory structure;
My expression is black question mark.jpg;
Therefore; I separated all template files, js, css, etc. and placed them in /tpl in the root directory;
I'm being lazy here; I just brought the directory structure I wrote before; thinkphp-bjyadmin<br>
├─Application project logical directory<br>
│ ├─Common public module<br>
│ │ ├─Common Public function directory<br>
│ │ │ ├─functioin.php public function php file<br>
│ │ ├─Conf Public configuration file directory<br>
│ │ │ ├─config.php tp configuration is used to override the framework’s default configuration items<br>
│ │ │ ├─db.php Database configuration Username Password, etc. <br>
│ │ │ ├─webconfig.php Project configuration; website name; whether to open the website, etc. <br>
│ │ ├─Controller Public Controller Directory <br>
│ │ │ ├─BaseController.class.php applies the most basic controller<br>│ │ │ ├─HomeBaseController.class.php Home base controller inherits BaseController<br>
│ │ │ ├─AdminBaseController.class.php Admin base controller inherits BaseController<br>
│ │ │ ├─UserBaseController.class.php User base controller inherits BaseController<br>
│ │ │ ├─...<br>
│ │ ├─Model Public model directory<br>
│ │ │ ├─BaseModel.class.php Apply the most basic Model<br>
│ │ │ ├─ArticleModel.class.php Article model Inherits BaseModel<br>
│ │ │ ├─UserModel.class.php User model inherits BaseModel<br>
│ │ │ ├─...<br>
│ │ ├─Tag Public Tag Directory<br>
│ │ │ ├─My.class.php Custom tag library<br>
│ │ │ ├─...<br>
│ ├─Home Home module<br>
│ │ ├─Controller Home controller directory Inherits HomeBaseController<br>
│ │ │ ├─ArticleController.class.php Article Controller Directory <br>
│ │ │ ├─IndexController.class.php Home Controller<br>
│ │ │ ├─... <br>
│ ├─Admin Admin module<br>
│ │ ├─Controller Admin controller directory Inherits AdminBaseController<br>
│ │ │ ├─IndexController.class.php Backend management homepage controller<br>
│ │ │ ├─... <br>
│ ├─User User module<br>
│ │ ├─Controller User controller directory Inherits UserBaseController<br>
│ │ │ ├─IndexController.class.php User Personal Center Home Page Controller <br>
│ │ │ ├─... <br>
├─Public Resource File Directory<br>
│ ├─install Installation boot directory<br>
│ ├─statics Static resource directory<br>
│ │ ├─bootstrap bootstrap framework<br>
│ │ ├─ueditor ueditor editor<br>
│ │ ├─js The directory where third-party js such as jquery is stored<br>
│ │ ├─css animate.css and other third-party css directories<br>
│ │ ├─... <br>
├─tpl view file directory<br>
│ ├─Public Public Directory<br>
│ │ ├─js Public js directory<br>
│ │ │ ├─base.js js file referenced by the entire site<br>
│ │ │ ├─... <br>
│ │ ├─css Public css directory<br>
│ │ │ ├─base.css css file referenced by the entire site <br>
│ │ │ ├─... <br>
│ │ ├─images Public Picture Directory <br>
│ │ ├─public_head.html Public header common to the entire site<br>
│ │ ├─public_foot.html Public footer common to the entire site<br>
│ │ ├─... <br>
│ ├─Home Front Home View Directory <br>
│ │ ├─Public The public directory of the front desk Home<br>
│ │ │ ├─js file directory called under js home<br>
│ │ │ ├─css file directory called under css home<br>
│ │ │ ├─The picture file directory called under images home <br>
│ │ ├─Index Home File Directory<br>
│ │ │ ├─index.html Home Page <br>
│ │ │ ├─ ...<br>
│ ├─Admin Same as Home<br>
│ ├─User Same as Home<br>
├─Upload Public upload directory<br>│ ├─images Uploaded picture directory<br>
│ │ ├─avatar avatar directory<br>
│ │ ├─ueditor Picture directory uploaded by ueditor editor<br>
│ │ │ ...<br>
│ │ ...<br>
├─Runtime cache directory<br>
├─ThinkPHP framework system directory
The design principles of other directories can be reviewed by thinkphp’s directory structure design experience summary http://baijunyao.com/article/60
After we separate html, the most intuitive feeling is;
Structurally, the front and back ends are more independent; it used to be a hodgepodge;
And we don’t agree on anything; if you want to change the directory, you can change the directory; it’s quite free;
It is very simple to implement such a structure;
Just define TMPL_PATH in the entry file index.php file in the root directory;
The original code is like this;<?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@gmail.com><br>
// +-------------------------------------------------- -----------------------<br>
<br>
// Application entry file<br>
<br>
// Detect PHP environment<br>
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');<br>
<br>
// Turn on debugging mode. It is recommended to turn it on during the development stage and comment on the deployment stage or set it to false<br>
define('APP_DEBUG',True);<br>
<br>
// Define application directory<br>
define('APP_PATH','./Application/');<br>
<br>
//Introduce ThinkPHP entry file<br>
require './ThinkPHP/ThinkPHP.php';<br>
<br>
// Dear ^_^ You don’t need any code behind it. It’s so simple. The modified code is like this;
// +-------------------------------------------------- -----------------------
// | 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
// +-------------------------------------------------- -----------------------
// Application entry file
// Detect PHP environment
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// Turn on debugging mode. It is recommended to turn it on during the development stage and comment on the deployment stage or set it to false
define('APP_DEBUG',True);
// Define application directory
define('APP_PATH','./Application/');
// Define cache directory
define('RUNTIME_PATH','./Runtime/');
// Define the default directory for template files
define("TMPL_PATH","./tpl/");
//Introduce ThinkPHP entry file
require './ThinkPHP/ThinkPHP.php';
// Dear ^_^ You don’t need any code behind it. It’s that simple. Careful children may have discovered it; why is RUNTIME_PATH defined here?
Buy one get one free;
By the way, the cache file Runtime folder is also separated from /Application to the root directory;
When the project is online; debugging mode is turned off; it is convenient to delete cache files here;
Well; okay; I admit that I am a Virgo;
I just like that /Application is just PHP business code;
I just like the pure and clean feeling;
Reject all kinds of confusion;
Of course; it’s over here;
But we can do better;
You also need to define some directories in the /Application/Common/Conf/config.php file;
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中就使用这些路径了;
白俊遥博客 http://baijunyao.com/article/90