一篇文章講解“模型-內置標簽之條件標簽”,本篇文章講解“模板-內置標簽之資源文件加載”。
資源文件加載即是在模板中引入CSS、JS等資源文件。
傳統方式的導入外部JS和CSS文件的方法是直接在模板文件使用:
系統提供了專門的標簽來簡化上面的導入:
①新建Index控制器,并新建index方法
②新建index.html模板,并引入資源文件
③新建script.js與style.css資源文件
script.js文件:
style.css文件:
注意:
1. ThinkPHP中資源文件的位置為“public/static/”下。
預覽:
④配合“模板輸出替換”使用
由于文件路徑不對,導致資源文件加載失敗,可以配合模板輸出替換使用。
在config/template.php文件中,定義模板輸出替換:
⑤在index.html模板中使用模板輸出替換
預覽:
在index.html模板中,使用load標簽同時加載多個資源文件。
預覽:
注意:
1. load標簽支持同時加載多個資源文件,文件之間用逗號隔開。
系統還提供了兩個標簽別名js和css,用法和load一致。
在index.html模板文件中,使用js與css標簽加載資源文件。
預覽:
關注卓象程序員,定期發布技術文章
下一篇講解“模板-內置標簽之標簽嵌套+原生PHP”
?
加載公共入口文件
項目初始化Init
項目預編譯
URL分析Dispather
獲取模塊和操作名
項目執行exec
執行控制器的操作
調用模塊獲取數據
輸出視圖
<?php
define('THINK_PATH', '../ThinkPHP');
//定義項目名稱,如果不定義,默認為入口文件名稱
define('APP_NAME', 'web');
define('APP_PATH', './web');
//加載ThinkPHP框架公共入口文件
require(THINK_PATH.'/ThinkPHP.php');
//實例化一個網站應用實例
$App=new App();
//執行應用程序
$App->run();
?>
記錄開始執行時間 $GLOBALS[‘_beginTime’](19行)
檢測 THINK_PATH、 APP_NAME、 APP_PATH、 RUNTIME_PATH 定義,如果沒有則創建(20-26行)
//不知道你發現沒有,以index.php這基準,通過APP_PATH,可以組裝出任意路徑
檢查開啟ALLINONE模式 (22行)
把核心編譯緩存和項目編譯緩存合并到一個文件里面去,并且過濾掉一些運行模式不需要執行的代碼,并且對于用戶的自定義常量全部統一定義,不再進行額外的檢測。
檢查是否有核心緩存~runtime.php(33行)
if(file_exists(RUNTIME_PATH.'~runtime.php')) {
// 加載框架核心緩存文件
require RUNTIME_PATH.'~runtime.php';
}else{
//1.加載define.php和functions.php
//2.如果項目編譯緩存目錄不存在,則自動創建項目目錄結構
//3.加載系統核心類庫(包括ThinkPHP\LIB\THINK下級各子目錄下的 Base、App、Action、Model、View、ThinkException、Log)
//4.如果 PHP 版本低于 5.2.0 則加載兼容函數庫
//生成核心編譯~runtime緩存
}
記錄加載文件時間 $GLOBALS['_loadTime'];
入口文件中調用的$App->run()
public function run() {
$this->init();
$this->exec();
return ;
}
$App->run()返回的時候,對一個請求的處理就算完成了
1.設定錯誤和異常處理機制(39-40行)
(set_error_handler和set_exception_handler)
2.項目預編譯并載入(44-52行)
// 在部署模式下會自動在第一次執行的時候編譯項目
if(defined('RUNTIME_MODEL')){
// 運行模式無需載入項目編譯緩存
}elseif(is_file(RUNTIME_PATH.'~app.php') && (!is_file(CONFIG_PATH.'config.php') || filemtime(RUNTIME_PATH.'~app.php')>filemtime(CONFIG_PATH.'config.php'))) {
// 直接讀取編譯后的項目文件
C(include RUNTIME_PATH.'~app.php');
}else{
// 預編譯項目
App::build();
}
3.設置時區支持(59-60行)
4.允許注冊AUTOLOAD方法、 session初始化(62-66行)
5. URL分析和調度(71行)
執行Dispatcher類的靜態方法 dispatch() 。這段代碼很不錯。
6.加載項目分組公共文件(82-90行)
if(!defined('GROUP_NAME')) define('GROUP_NAME', App::getGroup());
7.取得模塊和操作名稱(92-93行)
if(!defined('MODULE_NAME')) define('MODULE_NAME', App::getModule());
if(!defined('ACTION_NAME')) define('ACTION_NAME', App::getAction());
8.加載模塊配置文件(95-97行)
9.系統檢查(99-104行)
App::checkLanguage(); //語言檢查
App::checkTemplate(); //模板檢查
if(C('HTML_CACHE_ON')) // 開啟靜態緩存
10.項目初始化標簽
初始化完成,init返回
App.class.php 228行
1. 檢查 VAR_MODULE 變量(231行)
(包括 GET 和 POST), 如果未定義,則獲取默認分組名
分組名稱解析完畢,也就是http://server/project/index.php/Model/Action/的project部分,回到init
App.class.php 186行
1. 檢查 VAR_MODULE 變量(189行)
(包括 GET 和 POST), 如果未定義,則獲取默認模塊名
2. 判斷URL地址是否區分大小寫
不區分,小寫模塊名
智能識別方式 index.php/user_type/index/ 識別到 UserTypeAction 模塊
模塊名稱解析完畢,也就是http://server/project/index.php/Model/Action/的Model部分,回到init
App.class.php 209行
1. 檢查 VAR_MODULE 變量(211行)
(包括 GET 和 POST), 如果未定義,則獲取默認模塊名
操作名稱解析完畢,也就是http://server/project/index.php/Model/Action/的Action部分,回到init
1.創建Action控制器實例(379行)
A()函數
2.獲取當前操作名(400行)
$action=ACTION_NAME;
3.執行操作(401-418行)
// 執行操作鏈 最多只能有一個輸出
1.執行前置操作 '_before_'.$action
2.執行當前操作 $action
3.執行后綴操作 '_after_'.$action
exec執行完畢,一個請求處理完成了
Thinkphp一次網頁請求,就是實例化一個網站應用實例 ,并執行應用程序的過程。執行過程$App->run()分為init和exec兩部分。
這中間還省略了一部分分析,比如RBAC,比如Model相關的代碼,VIEW操作解析等,將在下次分享中討論。
發一個管理后臺,工作往往是繁瑣而又重復的:用戶登錄、權限管理、圖表展示、控制面板、增刪改查等等,同時,需求也是多種多樣的:電商系統、問答社區、客服系統、倉庫管理等等,五花八門。能不能有一個框架,能直接搭建好項目骨架,讓開發者專心于業務開發呢?FastAdmin或許是一個不錯的選擇。
FastAdmin,是 karson 在 Gitee 上開源的后臺開發框架,倉庫位于 https://gitee.com/karson/fastadmin,目前版本為 v1.3.3.20220121。
FastAdmin 基于 ThinkPHP+Bootstrap,能夠快速進行管理后臺的開發。FastAdmin提供了強大的命令行工具,能夠一鍵生成代碼、一鍵管理插件等,提供了豐富的插件選擇,基于MVC設計模式,基于模塊化設計,共分為:前臺、API、后臺和公共等四大部分等。
FastAdmin 的特性包括:
使用FastAdmin,首先進行安裝,要求環境如下:
PHP >=7.1 且 <=7.3 (推薦PHP7.1版本)
Mysql >=5.6 (需支持innodb引擎)
Apache 或 Nginx
PDO PHP Extension
MBstring PHP Extension
CURL PHP Extension
Git (用于源代碼的版本管理)
Node.js (可選,用于安裝Bower和LESS,同時打包壓縮也需要使用到)
Composer (可選,用于管理第三方擴展包)
Bower (可選,用于管理前端資源)
Less (可選,用于編輯less文件,如果你需要增改css樣式,建議安裝上)
下載安裝包后,
安裝完成后,就能進入后臺了:
FastAdmin基于ThinkPHP5強大的命令行功能擴展了一系列命令行功能,可以很方便的一鍵生成CRUD、生成權限菜單、壓縮打包CSS和JS、啟用禁用插件等功能,如
//生成fa_test表的CRUD
php think crud -t test
//生成fa_test表的CRUD且一鍵生成菜單
php think crud -t test -u 1
//刪除fa_test表生成的CRUD
php think crud -t test -d 1
//生成fa_test表的CRUD且控制器生成在二級目錄下
php think crud -t test -c mydir/test
在FastAdmin中默認有四個應用模塊:admin、api、common、index,你也可以擴展開發自己的應用模塊。
FastAdmin插件豐富,提供了插件市場,能夠隨時獲取各類插件,并直接在后臺進行安裝和管理:
FastAdmin 基于 ThinkPHP+Bootstrap,提供了強大的命令行工具,能夠一鍵生成代碼、一鍵管理插件等,提供了豐富的插件選擇,充分利用了ThinkPHP實現了高效可擴展的開發流程,能夠快速完成管理后臺的開發。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。