整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「ThinkPHP5開發連載73」tp5連載模板內置

          「ThinkPHP5開發連載73」tp5連載模板內置標簽之資源文件加載

          一篇文章講解“模型-內置標簽之條件標簽”,本篇文章講解“模板-內置標簽之資源文件加載”。


          資源文件加載

          資源文件加載即是在模板中引入CSS、JS等資源文件。

          傳統方式的導入外部JS和CSS文件的方法是直接在模板文件使用:

          1. load標簽

          系統提供了專門的標簽來簡化上面的導入:

          ①新建Index控制器,并新建index方法

          ②新建index.html模板,并引入資源文件

          ③新建script.js與style.css資源文件

          script.js文件:

          style.css文件:

          注意:

          1. ThinkPHP中資源文件的位置為“public/static/”下。

          預覽:

          ④配合“模板輸出替換”使用

          由于文件路徑不對,導致資源文件加載失敗,可以配合模板輸出替換使用。

          在config/template.php文件中,定義模板輸出替換:

          ⑤在index.html模板中使用模板輸出替換

          預覽:


          2. 同時加載多個資源文件

          在index.html模板中,使用load標簽同時加載多個資源文件。

          預覽:

          注意:

          1. load標簽支持同時加載多個資源文件,文件之間用逗號隔開。


          3. js與css標簽

          系統還提供了兩個標簽別名js和css,用法和load一致。

          在index.html模板文件中,使用js與css標簽加載資源文件。

          預覽:

          ThinkPHP5連載為卓象程序員原創,轉載請聯系卓象程序員

          關注卓象程序員,定期發布技術文章

          下一篇講解“模板-內置標簽之標簽嵌套+原生PHP”

          ?

          程大綱

          1. 加載公共入口文件

          2. 項目初始化Init

          3. 項目預編譯

          4. URL分析Dispather

          5. 獲取模塊和操作名

          6. 項目執行exec

          7. 執行控制器的操作

          8. 調用模塊獲取數據

          9. 輸出視圖

          入口文件的定義

          <?php

          define('THINK_PATH', '../ThinkPHP');

          //定義項目名稱,如果不定義,默認為入口文件名稱

          define('APP_NAME', 'web');

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

          //加載ThinkPHP框架公共入口文件

          require(THINK_PATH.'/ThinkPHP.php');

          //實例化一個網站應用實例

          $App=new App();

          //執行應用程序

          $App->run();

          ?>

          ThinkPHP.php里面的干了些啥

          記錄開始執行時間 $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'];

          進入ThinkPHP\Lib\Think\Core\App

          入口文件中調用的$App->run()

          public function run() {

          $this->init();

          $this->exec();

          return ;

          }

          $App->run()返回的時候,對一個請求的處理就算完成了

          App.class.php的init函數(1)

          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的getGroup

          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

          App.class.php的exec函數(1)

          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 的特性包括:

          • 基于Auth驗證的權限管理系統
          • 支持無限級父子級權限繼承,父級的管理員可任意增刪改子級管理員及權限設置
            • 支持單管理員多角色
            • 支持管理子級數據或個人數據
          • 強大的一鍵生成功能
            • 一鍵生成CRUD,包括控制器、模型、視圖、JS、語言包、菜單、回收站等
            • 一鍵壓縮打包JS和CSS文件,一鍵CDN靜態資源部署
            • 一鍵生成控制器菜單和規則
            • 一鍵生成API接口文檔
          • 完善的前端功能組件開發
            • 基于AdminLTE二次開發
            • 基于Bootstrap開發,自適應手機、平板、PC
            • 基于RequireJS進行JS模塊管理,按需加載
            • 基于Less進行樣式開發
          • 強大的應用插件擴展功能,在線安裝卸載升級應用插件
          • 通用的會員模塊和API模塊
          • 共用同一賬號體系的Web端會員中心權限驗證和API接口會員權限驗證
          • 二級域名部署支持,同時域名支持綁定到插件
          • 支持大文件分片上傳、分片直傳、剪切板粘貼上傳、拖拽上傳,進度條顯示,圖片上傳前壓縮
          • 支持列表跨頁選擇記憶、分頁大小記憶、左右固定列
          • 強大的應用模塊支持(CMS、簡單商城、知識付費問答、在線投票系統、Shopro商城、Fastflow工作流、CRM客戶關系管理)
          • 支持CMS、博客、知識付費問答無縫整合Xunsearch全文搜索
          • Uniapp微信小程序支持(CMS小程序、活動報名小程序、民宿酒店預訂小程序、問答小程序、簡單商城小程序、Shopro商城小程序)
          • 整合第三方短信接口(阿里云、騰訊云短信)
          • 無縫整合第三方云存儲(七牛云、阿里云OSS、又拍云)功能
          • 第三方富文本編輯器支持(Summernote、Nkeditor、百度編輯器)
          • 第三方登錄(QQ、微信、微博)整合
          • 第三方支付(微信、支付寶)無縫整合,微信支持PC端掃碼支付
          • 豐富的插件應用市場


          使用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樣式,建議安裝上)

          下載安裝包后,

          1. 將下載的完整包解壓到你的站點項目目錄,不支持放在二級目錄。
          2. 添加站點并綁定到項目中的public目錄為運行目錄。
          3. 訪問你的項目域名進行安裝,比如:https://demo.fastadmin.net/install.php 。
          4. 為了安全,安裝完成后會在public目錄生成隨機后臺入口,請通過隨機后臺入口登錄管理后臺。

          安裝完成后,就能進入后臺了:

          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,你也可以擴展開發自己的應用模塊。

          • 后臺模塊(admin)是FastAdmin中的核心模塊,后臺模塊又分為系統配置、附件管理、分類管理、插件管理等多個功能模塊,更多的功能模塊可以在插件管理中自由的安裝和卸載。后臺的前端是基于AdminLTE和Bootstrap進行了大量二次開發,采用RequireJS進行JS模塊化管理和加載。
          • 前臺模塊(index)的結構和后臺功能類似,具體請參考后臺模塊的章節
          • 公共模塊(common)是一個特殊的模塊,默認是禁止直接訪問的,一般用于放置一些公共的類或其它模塊的繼承基類等。
          • Api模塊(api)通常用于對接APP,用于向APP提供接口,目前FastAdmin暫未提供API相關的插件和文檔,你可以直接參考ThinkPHP5官方的文檔。

          FastAdmin插件豐富,提供了插件市場,能夠隨時獲取各類插件,并直接在后臺進行安裝和管理:


          總結

          FastAdmin 基于 ThinkPHP+Bootstrap,提供了強大的命令行工具,能夠一鍵生成代碼、一鍵管理插件等,提供了豐富的插件選擇,充分利用了ThinkPHP實現了高效可擴展的開發流程,能夠快速完成管理后臺的開發。


          主站蜘蛛池模板: 日本一区二区三区在线网| 亚洲AV日韩AV天堂一区二区三区| a级午夜毛片免费一区二区| 杨幂AV污网站在线一区二区| 国产精品电影一区二区三区| 精品日韩一区二区| 影院无码人妻精品一区二区| 国产在线精品一区二区在线观看| 无码乱人伦一区二区亚洲一| 亚洲综合色一区二区三区| 日韩视频一区二区| 国产午夜精品一区二区三区| 精品人妻AV一区二区三区| 日本强伦姧人妻一区二区| 91久久精一区二区三区大全| 亚洲一区二区三区亚瑟| 一区二区三区无码高清视频| 人妻无码一区二区三区AV| 国产精品亚洲一区二区三区| 熟女大屁股白浆一区二区| 久热国产精品视频一区二区三区| 精品福利一区二区三区| 在线精品一区二区三区| 精品亚洲一区二区三区在线播放| 国产精品丝袜一区二区三区| 国模无码视频一区| 亚洲熟妇av一区二区三区漫画| 在线观看一区二区精品视频| 国精品无码一区二区三区在线蜜臀 | 在线观看亚洲一区二区| 精品一区二区久久久久久久网精| 亚洲色精品vr一区二区三区| 日本一区中文字幕日本一二三区视频| 久久国产精品免费一区二区三区| 国产香蕉一区二区精品视频| 亚洲天堂一区二区| 无码人妻一区二区三区免费视频 | 熟妇人妻AV无码一区二区三区| 国产精品视频免费一区二区三区 | 国产高清在线精品一区二区| 91video国产一区|