Js(Css)动态引用方法–Js(css)的统一管理

引自:http://pm.htjs.net/cbb

Javascript(Css)组件在Web中的访问地址基本上要求基于Url的相对地址或绝对地址,如果地址出现错误那么Web访问时将出现异常,组件也就无法使用。因此,以前对于此种处理多为两种方法:

1、绝对地址写法:

<script type=”text/javascript” src=”http://localhost/yfjz/yfjz_scripts.js”></script>

如上,在程序中进行引用。此种引用方式的好处在于所有引用点配置方法一致,屏蔽了目录层的变换而带来的引用差异,对编程、维护来说都较为统一、规范;但这种方法对部署时存在调整,即“localhost”必须根据部署域名而更换,例如,要将程序部署到www.htjs.net网站上,那么所有程序引用都将改为<script type=”text/javascript” src=”http://www.htjs.net/yfjz/yfjz_scripts.js”></script>,如果发布目录也不是yfjz,而是shyl,那么程序引用将改为<script type=”text/javascript” src=”http://www.htjs.net/shyl/yfjz_scripts.js”></script>,这样就存在了所有引用程序必须改动的问题。

2、相对地址写法:

比如,项目用有目录A,A目录存有子目录a1、a2,那么A目录又是YFJZ目录的子目录,那么,目录结构如下:

yfjz

|—-A

|—-a1

|—-a2

如果,yfjz_scripts.js文件在yfjz目录下,那么在A目录下文件引用写法如下:

<script type=”text/javascript” src=”../yfjz_scripts.js”></script>

而a1目录下文件引用写法如下:

<script type=”text/javascript” src=”../../yfjz_scripts.js”></script>

如上,在js文件与目录间形成层次关系,相对路径应用,系统部署发布时不用担心域名及其发布目录的变化而带来的调整。同样,这样的编程方法带来的困惑是“目录层次不同而造成的引用编码差异”的问题。这种情况是,在单个js引用时就很明显,而在项目中出现多js引用、多人员分组开发时就会造成编码过程中的困惑。

3、动态引用js(css)方法:

由于基于浏览器(b/s)编程中受到安全规范协议的限定,js动态程序一般是不允许直接引用的,比如,在html页面中写入如下语句:

<script type="text/javascript">
       document.write('alert("aaaa");');
</script>

那么,浏览该页面是不会执行alert的提示功能的,只会在页面中打印出“alert("aaaa");”的字样。这就是所谓的安全限定,该alert语句是不允许执行的。
另外,在js文件中,也是不允许有包含其它js文件的做法。怎么说呢,就是说,js不能像php或jsp那样用“include”方法来引用其它js文件内编码。
由以上两点限制,对于js文件的管理就成了棘手问题,目前的一般做法就是需要了就引用,或者是不管是否需要“全部都引用”。

好了,现在开始说说动态引用的优势:
可实现js的统一管理,显现编码优雅;
可实现根据功能需要动态引用js,减少资源下载时间;
可以结合1、2方法的优点、同时能屏蔽彼此单独存在时的缺点;
可实现动态定制js函数,形成类似与php、jsp的动态开发方式,建立自己的js开发架构;

实现原理:绕过浏览器(Firefox、Ie等)安全协议

实现方法:
比如,一个js文件名为ademo.js,编辑内容如下:

(function () {
	var basePath  = "";
	for (var i = 0, scripts = document.getElementsByTagName("script"); i < scripts.length; i++)
        if (scripts[i].src.match("ademo.js")) {
            basePath = scripts[i].src.replace("ademo.js", "");
            break;
        }
    document.write('<'+'script type="text/javascript" src="'+basePath+'../../commons/js/util.js"></'+'script>');
    document.write('<'+'link href="'+basePath+'/Style.css" rel="stylesheet" type="text/css" />');

}) ();  

 

比如,ademo.js文件放于yfjz目录下,发布服务器域名为localhost,那么,basePath变量的内容会为“http://localhost/yfjz”。

大家知道剩下该怎么做了吧,仅举一个例子,大家举一反三即可。

CSS自定义属性:给你的样式表注入灵魂的魔法棒 各位前端的魔法师们,你们是不是也经常遇到这样的情况:辛辛苦苦搭建好的网站,甲方爸爸突然说:“哎呀,这主色调能不能稍微鲜艳一点?”,然后你就得满世界地找颜色代码,一个一个替换,改到眼花缭乱,恨不得把显示器砸了?或者,你的团队里来了个新人,代码写得飞起,但就是不太懂你那些“祖传”的命名规则,一不小心就把你的样式表搞得一团糟,让你想原地爆炸?再或者,你想给网站增加一些炫酷的主题切换功能,结果发现要改的地方太多,简直就是个不可能完成的任务? 阅读详情

相关推荐

前端进阶 课程三十一、CSS变量(Custom Properties)与calc计算(提升开发效率)

本课程核心围绕CSS变量与calc函数,打造高效、可维护、自适应的现代化CSS开发体系。CSS变量负责样式参数的统一存储与批量管控,区分全局与局部作用域,支持CSS与JS双向修改,彻底解决重复代码与后期维护难题;calc函数负责跨单位动态数值计算,适配响应式布局与动态尺寸需求,运算规则清晰易上手。两者结合形成“变量存参数、calc做计算”的闭环逻辑,实现修改单个参数即可联动更新全站样式,兼顾开发效率与页面适配性,搭配简易兼容方案,兼顾新旧浏览器,是前端日常开发中降本提效的核心技能,可快速落地各类响应式与主题

RFCEO的博客 559

前端项目中的接口统一管理(以vue项目和axios插件为例)

如果觉得中间废话多,请直接跳过,直接看下面代码就好了,不闲扯直接开始! 平时我们项目中调用后端接口的例子: <script> // 其他东西咱就省略了 // 引入插件 import axios from "axios"; export default { data() { return {}; }, methods: { m_getList() { axios...

nian_cj的博客 1835

CSS3+JS实现响应式列表展开收缩特效

为了实现点击标题展开/收起内容的行为,必须将“触发区”与“目标区”明确划分。作为交互入口,应具备明显的视觉反馈;而则承载详细信息,在默认状态下处于隐藏状态。我们可以引入更多语义增强手段,例如添加到标题区域,使其可通过键盘导航激活,提升可访问性:如何优化首屏加载性能?</div>可通过懒加载图片、压缩资源文件、启用CDN缓存等方式显著提升首屏渲染速度...</div>属性作用说明允许元素被 Tab 键聚焦,支持键盘操作指示当前内容是否展开,供辅助工具识别。

weixin_30838971的博客 839

js统一公共请求处理与常用工具封装

web后台管理页面用。

qyhua的专栏 877

6种JavaScript实现的浮动提示框与弹出窗口实战代码合集

?

weixin_32925455的博客 1075

图像的低频,中频,高频信息含义?

看很多图像处理的博文,都会说图像的主要成分是低频信息,它形成了图像的基本灰度等级,对图像结构的决定作用较小;中频信息决定了图像的基本结构,形成了图像的主要边缘结构;高频信息形成了图像的边缘和细节,是在中频信息上对图像内容的进一步强化。我有点纳闷,图像不就是一堆像素点构成的三维矩阵吗?跟频率有啥关系! 针对这个问题,又查了不少网文,解释的也都各不相同。例如, “初学的时候,你可以把高中低这个度量和图像上相邻点的灰度差大小对等起来”。 “感性上来讲,图像越杂乱的部分,频率越高...

jinking01的专栏 3万+

动态加载 JS 文件

动态加载JS文件是一种优化页面加载速度和提高用户体验的重要方式,但也需要注意文件路径、文件大小、兼容性和安全性等问题。开发者可以通过createElement()方法、appendChild()方法、XMLHttpRequest对象和eval()函数等方式来实现动态加载JS文件,具体实现方法可以根据需求和实际情况进行选择和调整。

tyxjolin的专栏 1万+

基于Codex平台构建AI技能:抖音爆款分析与带货视频生成实战

这次我们来看一个基于 Codex 平台构建 AI 技能(Skill)的实战项目。核心目标很直接:利用 AI 能力,自动化分析抖音平台的爆款内容,并生成可用于带货的视频。这听起来像是内容创作领域的“自动化流水线”,它解决的核心痛点是:人工分析爆款、撰写脚本、制作视频的效率瓶颈。 对于技术开发者和内容创作者而言,这个项目的价值在于将“内容策略分析”和“视频内容生成”两个环节通过 Codex 的 Skill 机制串联起来,形成一个可定制、可批量执行的自动化工作流。我们最关心的几个问题包括:这个方案的技术门槛高不高

weixin_29054399的博客 484

统一管理JavaScript脚本和CSS样式表引用

新建一个JS文件(aaa.js),将所有引用放到这个文件中: /**  * 引入脚本文件  */ document.write(''); document.write(''); ... /**  * 引入样式表  */ document.write(''); document.write(''); ... 再在html中添加对aaa.js的引入即可:

a_dev的专栏 777

01-认识脑电信号及相关信号的预处理过程

脑电信号处理过程脑电实验为什么要预处理预处理方法降采样如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 脑电实验 本博客主要是记录基于脑电信号的情绪识别方法的研究...

脑机交流者的博客 7658

【教程4>第4章>第15节】基于FPGA的costas环的设计构架

目录1.costas环的整体实现结构2. FPGA设计构架3.参考文献 Costas 环是一种用于载波同步的闭环反馈控制系统,主要应用于通信系统中的相干解调。其基本原理是通过鉴相器(Phase Detector,PD)比较接收信号与本地载波信号的相位差,将这个相位差信息经过环路滤波器(Loop Filter,LF)滤波后,去控制数控振荡器(Numerically Controlled Oscillator,NCO)的输出频率和相位,使得本地载波能够跟踪接收信号的载波,最终实现载波同步。我们在《F

FPGA/MATLAB学习教程/源码/项目合作开发 567

使用js的三种引用方式

使用js的三种引用方式。

m0_71002854的博客 2300

微信小程序 - 最新获取用户昵称 / 头像(wx.getUserProfile 接口被废弃后的代替方案)详细教程,2022 年之后的所有微信小程序,获取用户信息最新详细教程,附带示例源代码

微信小程序wx.getUserProfile接口废了用什么代替,微信小程序wx.getUserProfile不能用了怎么办,wx.getUserProfile失效有什么替代方案吗,微信新规定头像昵称填写最新教程,目前微信小程序最新获取用户头像昵称教程,微信小程序用户头像昵称获取规则调整公告,2022改版后的微信小程序如何获取用户头像和昵称信息,微信小程序官方废弃getUserProfile后如何实现获取用户信息,微信小程序wx.getUserProfile接口返回了默认头像昵称,微信小程序获取用户信息不

🏆 前端领域优质创作者 2万+

css变量的使用方法

CSS变量的使用方法 在css中,变量是一种特殊的样式,可以在css中设置一个变量,之后,就可以在子元素中获取到这个值。 如何定义CSS变量 .root { --color: red; } .son { color: var(--color); } 以上的代码,就是在root中定义了一个变量,变量名为--color,变量值为red。 在子元素中,可以通过var(--color)来获取这个变量的值。 CSS变量的用途 方便的管理统一的属性 这应该是最优先想到的用途了 当一些元素拥有大部分相同的

启明星的指引---博客 1828

FreeRTOS深入教程(任务创建的深入和任务调度机制分析)

本篇文章将带大家深入学习任务的创建和分析任务调度的机制。本篇文章深入的讲解了任务创建的内部实现和任务调度的源代码分析和实现,学习这篇文章有助于更深入的学习FreeRTOS的源码。

m0_49476241的博客 6389

大数据分析实验,包含五个子实验:wordCount实验,PageRank实验,关系挖掘实验,k-means算法,推荐系统算法。

大数据分析实验,包含五个子实验:wordCount实验,PageRank实验,关系挖掘实验,k-means算法,推荐系统算法。

805

css变量(自定义属性)

CSS 变量(自定义属性)是一种支持动态修改的CSS特性,通过--定义变量,var()引用变量。它具有作用域继承、JS动态修改和默认值等特性,适用于主题切换、统一管理等场景。相比SCSS变量,CSS变量在运行时定义和修改,更灵活。摘要还举例说明CSS变量在Vue中的行内样式应用,以及对比了CSS变量与SCSS变量的差异。

qq_42931285的博客 714

java项目反编译工具记录,共计6个工具

java项目反编译工具记录,共计6个工具

橙-极纪元-JJYCheng 1799

JavaWeb快速入门--CSS

Cascading Style Sheets 层叠样式表 CSS是一种用来表现HTML或XML等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

龙源IT 的博客 1103

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

vue的style标签里面设置变量

vue的style标签里面设置变量

seimeii的博客 6798

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

uniapp移动端基础介绍

静态的样式统一写到 class 中。style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度。class:用于指定样式规则,其属性值是样式规则中类选择器名(样式类名)的集合,样式类名不需要带上.,样式类名之间用空格分隔。template下包含两个view会报错,只要加一个view把两个view包含起来才不会报错。中全局引用,每个页面都可以使用该样式。推荐第二种方式,方便所有的样式文件在。中导入,每个页面都可以使用该样式。属性来控制组件的样式。

qzmlyshao的博客 1519

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

对vue.js前端框架技术的理解

因为Vue使用的主体语言为JS,开发者可以灵活地将其他框架(如React和Angular)的项目迁移到Vue,具有很高的集成能力。Vue就是一个JS库,并且无依赖别的JS库,直接引入一个JS文件就可以使用,与传统JS和JQuery框架不同,Vue的渐进式框架表示开发者可以由简单组件写起,渐渐搭建出一个复杂的前端平台。对于任何更改,虚拟DOM都将复制的JS与原始JS进行比较,只重新加载更改的部分,局部修改到真实DOM上。形成Vue渐进式框架的核心概念为:组件化,MVVM,响应式,和生命周期。

xxl20220306101的博客 1642

最新YOLO实现的草莓成熟度实时检测平台(Flask+SocketIO+HTML/CSS/JS)

面向温室与田间,构建基于 Flask+SocketIO 的草莓成熟度实时检测平台,集成 YOLOv5–YOLOv12,支持模型切换与权重上传;兼容图像/视频/浏览器摄像头,提供原图/检测图对比、进度与阈值控制;结果可 CSV 导出、带框一键下载并写入 SQLite;含可跳过的登录与会话管理、最近记录高亮;实验对比 mAP/F1/PR 与训练曲线,评估多硬件实时性;附工程与数据集链接。

逗逗班学Python 209

安卓项目源码,《Vue,2024前端高级面试题及答案

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。也许是互联网未来10年中最好的一年。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

2401_83973995的博客 684

纯 CSS 实现自定义 Switch 开关(商品上下架滑块)

这类自定义滑块开关是中后台系统的通用基础组件,一次封装可以在商品上下架、启用禁用、状态启停等多处复用。如果项目使用 UI 框架(ElementUI/Ant Design)一般自带 Switch 组件,但在轻量化项目、原生 jQuery 项目中,这套手写 CSS 方案更加灵活,无框架冗余体积。本文提供一套无 JavaScript 依赖、兼容性良好、简洁轻量化的 Switch 开关实现代码,可直接用于商品上架 / 下架、状态启用 / 禁用场景。原生作为底层表单控件,保留原生选中状态、表单提交能力;

2602_95057108的博客 406

最新YOLO实现的自动驾驶目标实时检测平台(Flask+SocketIO+HTML/CSS/JS)

本文构建自动驾驶目标实时检测平台,后端Flask+SocketIO,前端HTML/CSS/JS,支持图片/视频/浏览器摄像头输入;提供左右双画面对比、视频同步双帧与进度控制,阈值与类别可调。集成YOLOv5–YOLOv12可切换与权重上传,展示mAP、F1、PR及训练曲线。结果支持CSV导出、带框图片/视频一键下载、SQLite入库与最近记录定位;登录/注册可跳过,口令哈希与会话隔离保障安全。文末给出工程与数据集下载链接。

逗逗班学Python 503
上一篇: 停止删除oracle中正在执行的job
下一篇: Struts2中为Action的List属性赋值问题揭秘
javaRwx
博客等级 码龄20年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值