一、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. [日常] nginx与HTTP cache

    去年的事,随便记记 =============================================================2017年12月11日 记录: nginx缓存:ngx_h ...

  2. MyEclipse设置当前行背景颜色、选中单词前景色、背景色

    General->Editors->Text Editors -> Current Line Hightlight 可以设置当前行的背景颜色 效果如下:

  3. IDEA 导出maven项目所有的依赖包到指定的目录

    问题产生: 需要把一个maven工程调整结构,部署到一个新环境中,需要把依赖的jar包,单独打到一个目录中. 解决方案: 需要两步便可以copy到指定的目录中. 第一步: 找到maven projec ...

  4. PCA vs Linear Regression 可视化理解

    https://shankarmsy.github.io/posts/pca-vs-lr.html https://shapeofdata.wordpress.com/2013/04/09/princ ...

  5. Getting Started with Erlang

    Getting Started with Erlang Erlang is a great language that lets you build highly concurrent applica ...

  6. Keras vs. PyTorch

    We strongly recommend that you pick either Keras or PyTorch. These are powerful tools that are enjoy ...

  7. Android RxJava+Retrofit完美封装

    作者简介 本篇来自 小河马 的投稿,分享了自己是如何进行 RxJava+Retrofit 的封装.本文的技术点自然没话说,另外对于这种模块化的思路,希望能帮助到大家.最后提前祝大家周末愉快以及圣诞快乐 ...

  8. Material适配2 - 高级篇

    版权声明: 欢迎转载,但请保留文章原始出处 作者:GavinCT 出处:http://www.cnblogs.com/ct2011/p/4493439.html 继续Material系列,先从Tool ...

  9. linux 源码包之脚本安装包的安装

    脚本安装包 脚本安装包并不是独立的软件包类型,常见的实际是源码包.是人为地把安装过程写成了自动安装脚本,只要执行脚本,定义简单的参数,就可以完成安装.非常类似于windows软件的安装方式.在linu ...

  10. CSS 颜色 字体 背景 文本 边框 列表 display属性

    1  颜色属性 <div style="color:blueviolet">ppppp</div> <div style="color:#f ...