一、JavaScript 库

1.什么是javascript库:

javascript库,说白了,就是把各种常用的代码片段,组织起来放在一个 js 文件里,组成一个包,这个包就是 JavaScript 库。
现如今有太多优秀的开源 JavaScript 库,比如:jQuery、Prototype、Dojo、Extjs 等等。这些 JavaScript 库已经把最常用的代码进行了有效的封装,以方便我们开发,从而提高效率。

2.创建基础库

base.js

/*函数式
function $(id) {
return document.getElementById(id);
}
*/ /*对象式*/
var Base = {
getId : function (id) {
return document.getElementById(id)
},
getName : function (name) {
return document.getElementsByName(name)
},
getTagName : function (tag) {
return document.getElementsByTagName(tag);
}
};

demo.js

/*
window.onload = function () {
alert(document.getElementById('box').innerHTML);
alert(document.getElementsByName('sex')[0].value);
alert(document.getElementsByTagName('p')[0].innerHTML);
};
window.onload = function () {
alert($('box').innerHTML);
}
*/
window.onload = function () {
alert(Base.getId('box').innerHTML);
alert(Base.getName('sex')[0].value);
alert(Base.getTagName('p')[0].innerHTML)
};

demo.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>第34章 项目1-博客前端:理解JavaScript库</title>
<script type="text/javascript" src="../js/base.js"></script>
<script type="text/javascript" src="../js/demo.js"></script>
</head>
<body>
<div id="box">id</div> <input type="radio" name="sex" value="男" checked="checked" /> <p>段落</p>
</body>
</html>

二、连缀

所谓连缀,最简单的理解就是一句话同时设置一个或多个节点两个或两个以上的操作。比如:

$().getId('box').css('color', 'red').html('标题').click(function () {alert('a')});

连缀的好处,就是快速方便的设置节点的操作。

demo.js

/*
//alert(Base.getId('box'));
Base.getId('box').css('color','red').css('backgroundColor', 'black').html('pox').click(function () {
alert('a');
}).addClass('a'); Base是一个基础库的核心对象
Base.getId('box')返回的是一个divElement,这个对象是没有css方法的
将Base.getId('box')返回改成Base即可,返回Base对象
Base.getId('box').css('color','red')返回的也是Base对象
Base.getId('box').css('color','red').css('backgroundColor', 'black')还是返回的Base对象
Base.getId('box').css('color','red').css('backgroundColor', 'black').html('pox')也是返回的Base对象
Base.getId('box').css('color','red').css('backgroundColor', 'black').html('pox').click(function () {
alert('a');
}); click方法执行完毕之后,还是返回的Base对象 在Base对象中,添加css方法,html方法,click方法 var base = new Base();
base.getId('box').style.color = 'red';
base.getId('box').style.backgroundColor = 'black';
base.getId('box').innerHTML = 'pox';
base.getId('box').onclick = function () {
alert(this.innerHTML);
};
*/ window.onload = function () {
//alert(base.getId('box').elements.length);
$().getId('box').css('color', 'red').css('backgroundColor', 'black');
//alert(base.getTagName('p').elements.length);
$().getTagName('p').css('color', 'green').html('标题').click(function () {
alert('a');
}).css('backgroundColor', 'pink');
};

base.js

function Base() {

    //创建一个数组,来保存获取的节点和节点数组
this.elements = []; //获取ID节点
this.getId = function (id) {
this.elements.push(document.getElementById(id));
return this;
}; //获取元素节点
this.getTagName = function (tag) {
var tags = document.getElementsByTagName(tag);
for (var i = 0; i < tags.length; i ++) {
this.elements.push(tags[i]);
}
return this;
}; }
//上面写法麻烦的地方是,需要在前台 new 出来,然后调用。但采用这种方式,
//我们可以在每个方法里在每个方法里都返回这个对象,并且还可以在对象的原型里添加
//方法,这些都是连缀操作最基本的要求。 //为了避免在前台 new 一个对象,我们可以在库里面直接 new。
var $ = function () {
return new Base();
}
Base.prototype.css = function (attr, value) {
for (var i = 0; i < this.elements.length; i ++) {
this.elements[i].style[attr] = value;
}
return this;
} Base.prototype.html = function (str) {
for (var i = 0; i < this.elements.length; i ++) {
this.elements[i].innerHTML = str;
}
return this;
} Base.prototype.click = function (fn) {
for (var i = 0; i < this.elements.length; i ++) {
this.elements[i].onclick = fn;
}
return this;
}

demo.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>第34章 项目1-博客前端:理解JavaScript库</title>
<script type="text/javascript" src="../js/base.js"></script>
<script type="text/javascript" src="../js/demo.js"></script>
</head>
<body>
<div id="box">box</div>
<p>段落</p>
<p>段落</p>
<p>段落</p>
</body>
</html>

javascript库概念与连缀的更多相关文章

  1. 最新的jQuery插件和JavaScript库

    每一个前端开发人员很清楚的重要性和功能的JavaScript库提供.它提供了一个简单的接口,用于构建快速动态的接口,而无需大量的代码. 谢谢你的超级从事jQuery开发者社区,人始终是创造新的和令人惊 ...

  2. 流行的JavaScript库 ——jQuery

    1.为了简化 JavaScript 的开发, 一些 JavsScript 库诞生了. JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互的 Web2.0 特性的富客 ...

  3. Libscore – 收集 JavaScript 库的使用数据

    Libscore 扫描网络上成千上万的网站,收集统计 JavaScript 库的使用数据.在搜索框中,输入关键词,例如 jQuery, Modernizr, $.ui 或者 $.fn.fancybox ...

  4. 推荐15款制作 SVG 动画的 JavaScript 库

    在当今时代,SVG是最流行的和正在被众多的设计人员和开发人员使用,创建支持视网膜和响应式的网页设计.绘制SVG不是一个艰巨的任务,因为大量的 JavaScript 库可与 SVG 图像搭配使用.这些J ...

  5. 推荐8个实现 SVG 动画的 JavaScript 库

    SVG 是一种分辨率无关的图形(矢量图形).这意味着它在任何类型的屏幕都不会遭受任何质量损失.除此之外,你可以让 SVG 灵活现一些动画效果.这篇文章就给大家推荐8个实现 SVG 动画的 JavaSc ...

  6. AntiModerate – 渐进式图片加载的 JavaScript 库

    AntiModerate 是一个渐进式图片加载的 JavaScript 库.我们多数看到的图片显示模式,都是从上到下逐渐显示的,这是“标准式”图像:而有的图片是先出现一个很低分辨率的图像轮廓,类似加了 ...

  7. 创建你的第一个JavaScript库

    是否曾对Mootools的魔力感到惊奇?是否有想知道Dojo如何做到那样的?是否对jQuery感到好奇?在这个教程中,我们将了解它们背后的东西并且动手创建一个超级简单的你最喜欢的库. 我们其乎每天都在 ...

  8. 加速编码的 JavaScript 库和工具

    JavaScript库是 一个提前写好的JavaScript文件库,它可以很容易的开发基于JavaScript的应用,特别是AJAX和一些其它的以web为中心的技术.运用JavaScript最基本的方 ...

  9. 推荐几款制作网页滚动动画的 JavaScript 库

    这里集合了几款很棒的制作网页滚动动画的 JavaScript 库和插件.它们中,有的可以帮助你在页面滚动的时候添加动感的元素动画,有的则是实现目前非常流行的全屏页面切换动画.相信借助这些插件,你也可以 ...

随机推荐

  1. JS中的编码,解码类型及说明

    使用ajax向后台提交的时候 由于参数中含有#  默认会被截断 只保留#之前的字符  json格式的字符串则不会被请求到后台的action 可以使用encodeURIComponent在前台进行编码, ...

  2. SQL Server数据库状态和文件状态

    数据库状态 (database states) 查询数据库的当前状态 : 1.查询所有数据库的状态 ,通过sys.databases目录视图的state_desc列 user master go se ...

  3. ubuntu上使用vim编辑文本内容

    1. 什么是 vim? Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.简单的来说, vi 是老式的字处理器,不过功能已经很齐全了, ...

  4. Linux系统修改Mysql密码

    一.拥有原来的myql的root的密码: 方法一: 在mysql系统外,使用mysqladmin mysqladmin -u root -p password "test123" ...

  5. dubbo的重试机制

    对dubbo熟悉的人对下面的配置一定不会陌生: <dubbo:reference id="xxxx" interface="xx" check=" ...

  6. Linux:curl

    curl命令用来做HTTP协议的客户端,可以通过命令参数生成各种请求,非常强大. 1. GET 默认情况下下curl执行的是GET操作,所以可以当做wget使用如 $ curl https://www ...

  7. CSS相对定位|绝对定位(五)之z-index篇——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1855 补充于2016 ...

  8. elastic job will never fire

    1. 描述 2018-08-20 18:11:01.912 [Thread-8] INFO  org.quartz.impl.StdSchedulerFactory - Using default i ...

  9. 前端学习之HTML(1)

    HTML标签学习 2018-10-31 记录一下学习的网站 http://www.w3school.com.cn http://www.runoob.com/ <!DOCTYPE html> ...

  10. 那些年我们对npm 和 cnpm 的误区

    1. npm 和 cnpm 的区别 相信很多人都不太明白 npm 和 cnpm 到底是什么东东, 为啥在国内要用 淘宝镜像使用 cnpm, (1) 两者之间只是 node 中包管理器的不同哟, (2) ...