一篇文章讲解“模型-内置标签之条件标签”,本篇文章讲解“模板-内置标签之资源文件加载”。
资源文件加载即是在模板中引入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小时内与您取得联系。