JavaScript学习10:动态载入脚本和样式

JavaScript学习10:动态载入脚本和样式

大家好,又见面了,我是全栈君。

       我们在写Web页面的时候,须要引入非常多的JavaScript脚本文件和CSS样式文件,尤其是在站点需求量非常大的时候,脚本的需求量也随之变大,这样一来,站点的性能就会大打折扣。因此就出现了动态载入的概念。即在须要的时候才去载入相应的脚本和样式。以下我们就来看看怎样实现动态载入。

      动态脚本
       先来看一个动态载入js文件的代码演示样例:

//动态载入JS
var flag=false ;
if(flag){
	loadScript('browserdetect.js');
}
function loadScript(url){
	var script =document.createElement('script');
	script.type='text/javascript';
	script.src=url;
	document.getElementsByTagName('head')[0].appendChild(script);
}

       如此一来,我们仅仅需控制flag的值就能够控制js脚本文件是否载入到当前页面中。

       再来看一个动态运行js的演示样例:

//动态运行JS
var flag=true ;
if(flag){
	executeScript();
}
function executeScript(){
	var script =document.createElement('script');
	script.type='text/javascript';
	var text=document.createTextNode("alert('Lian')");
	script.appendChild(text);
	document.getElementsByTagName('head')[0].appendChild(script);
}

      动态样式
       我们肯定都对各种换肤功能司空见惯了,可是你肯定没想过换肤是怎样实现的。我也是学到这块才恍然大悟。原来看起来蛮高级的换肤功能居然如此简单:仅仅需换一个CSS样式就可以。
那我们就来看看网页的样式是怎样动态载入的。

通常样式表有两种方式进行载入,一种是<link>标签,一种是<style>标签。

因此给出两种方式的代码演示样例,来说明怎样动态载入样式。

       使用link标签载入,和上面提到的动态载入js脚本没什么两样,不再多说。
<span style="font-size:18px;">//动态运行linkvar flag=true;if(flag){	loadStyle('basic.css');}function loadStyle(url){	var link=document.createElement('link');	link.rel='stylesheet';	link.type ='text/css';	link.href=url;	document.getElementsByTagName('head')[0].appendChild(link);}</span>

       比較麻烦点的是使用style来改变样式,由于涉及兼容性问题,所以在运行的时候,须要依据浏览器支持的类型,选择对应的函数来运行这个过程,看下代码演示样例
<span style="font-size:18px;">//动态运行style
var flag=true;
if(flag){
	var style=document.createElement('style');
	style.type='text/css';
	document.getElementsByTagName('head')[0].appendChild(style);
	insertRule(document.styleSheets[0],'#box','background:red',0);
}
function insertRule(sheet,selectorText,cssText,position){
	//假设是非IE
	if(sheet.insertRule){
		sheet.insertRule(selectorText+"{"+cssText+"}",position);	
	}else if(sheet.addRule){ //假设是IE
		sheet.addRule(selectorText,cssText,position);
	}
}</span>

       小结一下记得老师以前重复强调,如无必要。勿增实体。相同在程序设计的过程中也一样,我们在程序启动时。就载入非常多的东西,势必会影响程序的性能。因此我们要学会在须要的时候,一点一点的进行加入。有点装饰模式的赶脚。同一时候也是一个灵活性的体现。尽管是一个小的知识点,可是运用好了,是有大用处的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115369.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 七、springboot整合flowable(工作流)

    七、springboot整合flowable(工作流)springboot整合flowable(工作流)简介Flowable适用于开发人员,系统管理员和业务用户的紧凑且高效的工作流程和业务流程管理(BPM)平台。Flowable的发布包里包含了大部分源码,以JAR文件方式提供。Flowable的源码也可以通过以下链接获得:https://github.com/flowable/flowable-engine准备工作pom….

    2022年5月21日
    90
  • 前端的模块化_模块化设计

    前端的模块化_模块化设计前言在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端(表单验证等),随着web2.0时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀,此时在JS方面就会考虑使用模块化规范去管理。本文内容主要有理解模块化,为什么要模块化,模块化的优缺点以及模块化规范,并且介绍下开发中…

    2022年10月23日
    0
  • 经典的20道AJAX面试题[通俗易懂]

    经典的20道AJAX面试题[通俗易懂]1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识)什么是ajax:AJAX是“AsynchronousJavaScriptandXML”的缩写。他是指一种创建交互式网页应用的网页开发技术。Ajax包含下列技术:基于web标准(standards-basedpresentation)XHTML+CSS的表示;使用DOM(DocumentObjectM…

    2022年8月27日
    3
  • 代码生成器修改备注名_王者荣耀名字代码生成器

    代码生成器修改备注名_王者荣耀名字代码生成器1.model层生成时主键的字段是int32?2.Pcip_Msg中的IsAllClinics本是tinyintnotnull,但转成后是Byte?应该去?才对的.3.应能适应网络及本地中的有错数据库

    2022年7月28日
    1
  • 消息队列

    消息队列

    2021年3月12日
    157

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号