从QQ登录的js sdk中,研究html、css以及js的解耦

       研究过腾讯提供的QQ登录js sdk版本(飞机票)的读者,可能会注意到,只要引入一个js,然后再设置一个span标签,就可以使用js实例化出一个QQ登录按钮来。如果你查看页面源码,会发现页面自动引入了很多个js文件,这是为什么呢??

       其实很简单,就是从你引入的这个js,会动态加载其他js或css等资源文件。这个技术并不复杂,也很常见。如果你了解chrome插件的话,你就会发现,这些插件就可以随意更改页面样式、添加各种js、css等页面资源。

       咱先不说这样做有什么好处,先就跟大家分享一下我自己写的代码吧:

//引入js
function addlinkscript(addrs){
  for(var i=0;i<addrs.length;i++){
    var script = document.createElement("script");
    script.type="text/javascript";
    script.src=addrs[i];
    document.head.appendChild(script);
  }
}

//引入css
function addlinkcss(addrs){
  for(var i=0;i<addrs.length;i++){
    var script = document.createElement("link");
    script.rel="stylesheet";
    script.href=addrs[i];
    document.head.appendChild(script);
  }
}

//##############################################################################

//加载js函数
function loadScript(){
  var addr =["http://cdn.bootcss.com/jquery/1.11.1-rc2/jquery.min.js"];
  addlinkscript(addr);
}

//加载css
function loadcss(){
  var addr = ["http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.css",
  "http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.min.css"];
  addlinkcss(addr);
}

//主函数切入点
(function main(){
  loadScript();
  loadcss();
})();

       只要把上面的代码放入一个js中,在某个页面上引入这个js,即可自动在页面上加载bootstrap.css、bootstrap.min.css、jquery.min.js这三个资源文件。相信你已经看到,其实这些资源文件是你可以自己去选择的。

       代码分享完了,但是我们为什么要这么做的??

       我们完全可以自己去在页面上加载这些资源文件。但是,如果对于一个大项目而言,使用各种js或jquery插件等,会引用各种js文件,如果你不了解,那么这会让你很头疼的。如果你想使用的插件,需要你引用10个js和css,而且名字很相似,你不小心落了一个,你很难发现是哪一个。

       如果你选择了这种方式,用户只需要加载一个插件链接的js,插件所需要的js和css自动加载到页面中,在不影响功能的基础上,同时减少了开发人员的任务量,降低了由于缺少js的bug出现几率。更重要的是我们把html和各种资源文件进行了解耦。如果我们完全可以从服务端修改这个链接的js,来修改插件的功能,相当于网页版的在线升级功能(安全性在这里暂不做考虑)。我们何乐而不为呢!!

       如果你是一个jquery插件的开发人员,如果你提供一个这样的js,那么你肯定会比其他同类插件更受欢迎。

       其实说白了,这就是一种“偷懒”行为。但是正是因为“偷懒”,才会更受欢迎。因为会“偷懒”的人,能更好的为用户服务。所以快来“偷懒”吧。

时间: 2024-09-20 17:25:47

从QQ登录的js sdk中,研究html、css以及js的解耦的相关文章

在js文件中如何获取basePath处理js路径问题

js路径的问题有时候不好处理,在jsp中,我们可以用el表达式直接获取basePath,但是在单独js文件中不能用el表达式,又不想在jsp中单独的写个变量,可以用以下方法: 复制代码 代码如下: var location = (window.location+'').split('/'); var basePath = location[0]+'//'+location[2]+'/'+location[3]; var url = basePath + '/js/xxx.js';

php ci框架中加载css和js文件失败的解决方法

 在将html页面整合到ci框架里面的时候,加载css和js失败,下面对这个问题进行分析及解决 在将html页面整合到ci框架里面的时候,加载css和js失败,弄了半天发现ci框架是入口的框架,对框架中文件的所有请求都需要经过index.php处理完成,当加载外部的css和js文件的时候要使用base_url()函数处理外部的链接.    比如:    在config配置文件中的base_url为:" localhost:8080/项目名称/ "    在控制器中访问applicati

php ci框架中加载css和js文件失败的原因及解决方法_php技巧

在将html页面整合到ci框架里面的时候,加载css和js失败,弄了半天发现ci框架是入口的框架, 对框架中文件的所有请求都需要经过index.php处理完成,当加载外部的css和js文件的时候要使 用base_url()函数处理外部的链接. 比如: 在config配置文件中的base_url为:" localhost:8080/项目名称/ " 在控制器中访问application/resource/aaa.js文件 相对路径<script src= "resource

php ci框架中加载css和js文件失败的解决方法_php技巧

在将html页面整合到ci框架里面的时候,加载css和js失败,弄了半天发现ci框架是入口的框架,对框架中文件的所有请求都需要经过index.php处理完成,当加载外部的css和js文件的时候要使用base_url()函数处理外部的链接. 比如: 在config配置文件中的base_url为:" localhost:8080/项目名称/ " 在控制器中访问application/resource/aaa.js文件 相对路径<script src= "resource/a

MVC发布后项目存在于根目录中的子目录中时的css与js、图片路径问题

加载固定资源js与css <script src="@Url.Content("~/Scripts/js/jquery.min.js")" type="text/javascript"></script><link href="@Url.Content("~/Content/css/shop.css")" rel="stylesheet" type=&quo

最近在网页中常用的css和js酷炫动画效果

  最近在网站和博客上能发现使用各种各样很帮效果的动画效果.CodyHouse介绍了这些CSS和Javas cript的编码教程. 因为每个文件都可以整套下载,所以马上就可以使用. 固定背景效果 →效果页 适用的浏览器:Chrome,Safari,Firefox,Opera,IE9+ 在Section和div垂直配置的长页面中,把背景固定,像卷帘被提起似的滚动. 产品展示滑块 →效果页 适用的浏览器:Chrome,Safari,Firefox,Opera,IE9+ 把配置卡片状的各个产品,用很棒

html中加入KindEditor除了引入js文件还要怎么实现

问题描述 就像这样的效果的 解决方案 解决方案二:就是发帖的文本编辑器,已经引入<scriptcharset="utf-8"src="/editor/kindeditor.js"></script><scriptcharset="utf-8"src="/editor/lang/zh_CN.js"></script>解决方案三:kindeditor中的工具可以自己设置,参考:<

winform-Winform做的东西怎么实现QQ登录啊?有官方的SDK吗?

问题描述 Winform做的东西怎么实现QQ登录啊?有官方的SDK吗? 求大神赐教啊!就是用Winform做一个QQ登录?我看别人有实现的...不知道怎么弄! 解决方案 一般都是用的webqq协议 工具:浏览器F12开发人员工具,IE9以前的可以用httpwatch 流程: 1.打开抓包工具,进行正常的登录,获取资料,发送接收消息 2.在进行第一步的时候,你的工具就可以检测到浏览器的http请求 3.对http请求进行分析 4.使用 httpwebrequest 对http请求进行模拟 webq

PHPCMS V9中QQ登录网站失败问题解决方法

这个故障的原因是PHPCMS V9的QQ登录功能代码中,使用了file_get_contents函数来获取腾讯的https网址,这类网址是通过ssl加密传输的.虽然,我们可以通过为PHP安装openssl扩展,让file_get_contents函数可以获取到内容,但获取到的内容还是加密的,无法正常的解密. 我的解决思路是自己编写一个通过curl读取数据的方法,替换掉PHPCMS原有的方法,具体如下: 首先,找到phpcmsmodulesmemberclassesqqapi.class.php文