PHP:如果正确加载js、css、images等静态文件
日常中,我们想要把一些静态页面放在框架上或者是进行转移时,那么静态页面上的原url加载js、css、images都会失效,那么我们应该怎么进行修改捏?
现在仓鼠做个笔记哈
这里有几个注意项:
1、路径必须要绝对正确,基于项目之后的js、css文件位置路径必须是绝对路径
(例如项目的位置在D://studys/aa/bb下,项目名称是cc,js文件路径是D://studys/aa/bb/cc/public/js/dd.js,那么加载路径应该是aa/public/js/dd.js)
2、不要用绝对路径!!不要用绝对路径!!不要用绝对路径!!
(因为用绝对路径,将文件放在其他电脑上后,js、css这些文件一样加载不出来,因为我们存放php文件的系统盘非常有可能不一样)
3、当我们使用相对路径的时候,要善于使用$_SERVER这个全局变量去获取,一般加载这些文件使用的是dirname($_SERVER['SCRIPT_NAME'])
($_SERVER['SCRIPT_NAME']获取的是inde.php入口文件的相对位置,这里dirname()是指相对于inde.php上一个路径)
(例如$_SERVER['SCRIPT_NAME']得到的结果是:aa/bb/cc/index.php,那么dirname($_SERVER['SCRIPT_NAME']得到的结果是:aa/bb/cc,这个结果一般截取到的是框架名称位置——Index.php最终位置在框架文件夹下)
(这时候,我们再根据得到的结果,和我们放置js、css文件位置,进行一个拼接,就能得到我们访问js、css文件的相对路径)
例子:
原静态页面中,加载js、css、images的路径为:
  
当我们放进框架后,加载这个静态文件,发现样式和图片都失效了,全页面变得乱七八糟
  
这时候,我们只要将正确的加载js、css的路径进行修改,就能读取到啦
1、查看我们JS、CSS、Images置放位置
  
  
从上面我们可以看到:JS、CSS等文件,是在v1.0.2/thinkmimi/public/下
2、再定义常量,获取项目的相对路径
# 相对于浏览器的项目根目录地址-用于加载静态文件
defined('ROOT_PATH') or define('ROOT_PATH', stripslashes(dirname($_SERVER['SCRIPT_NAME'])));
根据上面的文件,我们可以得出,ROOT_PATH得到的相对路径为:/studys/TWO/v1.0.2,从这个路径中,我们得出,v1.0.2是整个框架的名称
3、最后进行url拼接
  
这时候,我们进行访问,就能正确加载到我们的静态文件啦
  
我们打开审查元素,查看JS、CSS等文件生成的URL
  
可以看到,加载的最终结果都是相对路径,即使文件放在其他电脑上,系统也会根据$_SERVER去获取此框架在该电脑中的相对路径的
以上
END
PHP:如果正确加载js、css、images等静态文件的更多相关文章
- 动态加载js css 插件
		
简介 动态加载js,css在现在以及将来肯定是很重要的.目前来看前端代码编写的业务量已经远远超过后端编写的.随着对用户体验度逐渐增强,前端业务复杂,加载速度变得很慢很慢.为了解决这个问题,目前出现的两 ...
 - js动态加载js css文件,可以配置文件后辍,防止浏览器缓存
		
js的引用,在浏览器,或微信上访问经常会遇到文件改了,但就是没有更新的问题,使用此函数可以轻松解决缓存问题只需要把js的引用方式改为使用此函数加载即可 源码如下: /** * js动态加载js css ...
 - 页面加载异常  清除浏览器静态文件  js  css 缓存  js动态加载js css文件,可以配置文件后辍,防止浏览器缓存
		
js清除浏览器缓存的几种方法 - 兔老霸夏 - 博客园 https://www.cnblogs.com/Mr-Rocker/p/6031096.html js清除浏览器缓存的几种方法 一.CSS和 ...
 - javascript异步延时加载及判断是否已加载js/css文件
		
<html> <head> <script type="text/javascript"> /**======================= ...
 - [Yii2] 快速套模板,加载JS,CSS(HTML标签<base>)
		
刚开始学,弄了好久,不知道怎么加载JS.CSS,以及怎么不加载YII2自带的模板!其实真的好简单! 补: 其实是我垃圾,YII2默认访问路径是WEB,所以把style文件放到web下就能加载! 首先把 ...
 - 动态加载js,css
		
今天项目中需要用到动态加载 CSS 文件,经过一番折腾终于搞定,回家整理了一下,顺便融合了动态加载 JS 的功能写成了一个对象,先上代码: var dynamicLoading = { css: fu ...
 - JS动态加载 js css
		
1.动态加载js function loadScript( url ){ var script = document.createElement( "script" ); scri ...
 - Laravel 加载 js css image 文件
		
写在前面的话: 1.前提是需要使用blade模板引擎 2.css js image 文件夹建在laravel 的 public 目录下面 3.生成的路径默认都是相对路径 A: 加载css文件 (用下面 ...
 - 动态加载js,css(项目中需要的)
		
最近做的一个项目需要加入百度统计,大家都知道百度统计在页面引用就是一坨js,实现方法很简单引用到页面就ok了. 那么问题来了,虽然我不知道百度统计的原理是啥,我的测试服引用了百度统计,百度统计账号里面 ...
 
随机推荐
- php 在 匿名函数中 调用自身。。
			
//php闭包实现函数的自调用,也就是实现递归 function closure($n,$counter,$max){ //匿名函数,这里函数的参数加&符号是,引址调用参数自己 $fn = f ...
 - echarts图调用多个接口
			
html: <div id="sentimentMain1" style="width:960px;height:500px;margin:20px auto;&q ...
 - PS常用快捷键大全
			
察看图像类别 说明:: --- Shift键 : --- 空格键 *--- 在Imageready中不适用 § --- 只在Imageready中可用 动作 结果 双击工具箱::或Ct ...
 - JS电话、手机号码验证
			
function isTelephone(inpurStr) { var partten = /^0(([1,2]\d)|([3-9]\d{2}))-\d{7,8}$/; ...
 - python中的设计模式
			
单例模式:Python 的单例模式最好不要借助类(在 Java 中借助类是因为 Java 所有代码都要写在类中),而是通过一个模块来实现.一个模块的模块内全局变量.模块内全局函数,组合起来就是一个单例 ...
 - JavaScript 将数组中具有相同值的对象 取出组成新的数组
			
var arr=[{name:2,id:3},{name:2,id:4},{name:3,id:5},{name:3,id:6},{name:1,id:1},{name:1,id:2}]; // 传入 ...
 - 导入AppiumLibrary报错: ImportError: cannot import name 'InvalidArgumentException
			
导入AppiumLibrary报错: ImportError: cannot import name 'InvalidArgumentException报错原因 selenium.common.exc ...
 - 垃圾收集GC
			
一.引用计数法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不能再被使用的.引用计数法实现简单,判定效率也很高,但是它很 ...
 - javassist fr8.0破解
			
主要是破解连接数的. 已破解的jar:http://download.csdn.net/download/wolf12/9834152 public static void main(String[] ...
 - Boxes in a Line UVA - 12657 (双向链表)
			
题目链接:https://vjudge.net/problem/UVA-12657 题目大意:输入n,m 代表有n个盒子 每个盒子最开始按1~n排成一行 m个操作, 1 x y :把盒子x放到y ...