热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ThinkPhp下把前端文件独立出来

前端独立之前的目录thinkphp默认的View模板文件都是在Application各个模块下的,css、js之类的资源文件是放在Public目录下,大致是这个样子的:Thinkp
前端独立之前的目录

thinkphp默认的View模板文件都是在/Application各个模块下的,css、js之类的资源文件是放在/Public目录下,大致是这个样子的:

ThinkphpSample
├─Application 项目逻辑目录
│ ├─Common 公共模块
│ │ ├─...
│ ├─Home Home模块
│ │ ├─Controller Home控制器目录
│ │ ├─...
│ │ ├─View Home模块下的视图目录
│ │ │ ├─Index
│ │ │ │ ├─index.html
│ │ │ │ ├─...
│ ├─Admin Admin模块
│ │ ├─Controller Admin控制器目录
│ │ ├─...
│ │ ├─View Admin模块下的视图目录
│ │ │ ├─Index
│ │ │ │ ├─index.html
│ │ │ │ ├─...
│ │ │ ├─Article
│ │ │ │ ├─index.html
│ │ │ │ ├─add.html
│ │ │ │ ├─edit.html
│ │ │ │ ├─...
│ ├─...
├─Public 资源文件目录
│ ├─Weixin 微信前端静态资源目录
│ │ ├─js home下调用的js文件目录
│ │ ├─css home下调用的css文件目录
│ │ ├─images home下调用的图片文件目录
│ ├─Admin 管理后台静态资源目录
│ │ ├─js home下调用的js文件目录
│ │ ├─css home下调用的css文件目录
│ │ ├─images home下调用的图片文件目录
│ ├─...
├─ThinkPHP 框架系统目录

但在实际开发中,这样把前端文件分散到各个模块下是有很多弊端的:

  • 使用gulp这类前端工具很不便利;
    如果想要在src目录下全是原始代码,在dest目录下全是压缩后的html、js、css等,这是难以实现的。
前端独立之后的目录

把所有的模板文件和js、css等独立出来放在根目录下的/tpl中的;
如下:

ThinkphpSample
├─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
│ │ │ ├─...
│ ├─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 资源文件目录
│ ├─static 静态资源目录
│ │ ├─js jquery等第三方js存放的目录
│ │ ├─css animate.css等第三方css目录
│ │ ├─ ...
│ ├─weixin 静态资源目录
│ │ ├─js jquery等第三方js存放的目录
│ │ ├─css animate.css等第三方css目录
│ │ ├─ ...
├─tpl 视图文件生产目录
│ ├─Public 公共目录
│ │ ├─js 公共js目录
│ │ │ ├─base.js 全站都引用的js文件
│ │ │ ├─ ...
│ │ ├─css 公共css目录
│ │ │ ├─base.css 全站都引用的css文件
│ │ │ ├─ ...
│ │ ├─images 公共图片目录
│ │ ├─...
│ ├─Home 前台Home视图目录
│ │ ├─Index 首页文件目录
│ │ │ ├─index.html 首页
│ │ │ ├─ ...
│ ├─Admin 同Home
│ ├─User 同Home
├─tpl_src 视图文件源目录
│ ├─Public 公共目录
│ │ ├─js 公共js目录
│ │ │ ├─base.js 全站都引用的js文件
│ │ │ ├─ ...
│ │ ├─css 公共css目录
│ │ │ ├─base.css 全站都引用的css文件
│ │ │ ├─ ...
│ │ ├─images 公共图片目录
│ │ ├─...
│ ├─Home 前台Home视图目录
│ │ ├─Index 首页文件目录
│ │ │ ├─index.html 首页
│ │ │ ├─ ...
│ ├─Admin 同Home
│ ├─User 同Home
├─Runtime 缓存目录
├─ThinkPHP 框架系统目录

如何做到?
  1. 在根目录的入口文件index.php文件中定义TMPL_PATH
    新增define(“TMPL_PATH”,”./tpl/”);

// 应用入口文件
// 检测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("TMPL_PATH","./tpl/");
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';

  1. 在/Application/Common/Conf/config.php文件中定义静态资源目录

return array(
'TMPL_PARSE_STRING'=>array(
'__PUBLIC__'=>__ROOT__.trim(TMPL_PATH,'.').'/Public/Static'
)
);

推荐阅读
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • ScrollView嵌套Collectionview无痕衔接四向滚动,支持自定义TitleView
    本文介绍了如何实现ScrollView嵌套Collectionview无痕衔接四向滚动,并支持自定义TitleView。通过使用MainScrollView作为最底层,headView作为上部分,TitleView作为中间部分,Collectionview作为下面部分,实现了滚动效果。同时还介绍了使用runtime拦截_notifyDidScroll方法来实现滚动代理的方法。具体实现代码可以在github地址中找到。 ... [详细]
author-avatar
热门星座排行榜空间
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有