当前位置: 代码迷 >> JavaScript >> JS-创办自己的“JavaScript库”,原来如此简单
  详细解决方案

JS-创办自己的“JavaScript库”,原来如此简单

热度:364   发布时间:2012-06-20 20:37:21.0
JS---创建自己的“JavaScript库”,原来如此简单

    在上一篇文章中提到了JavaScript库实际上就是一堆函数的集合,就是方便给你调用的不用自己写那些功能强大的函数……这篇文章说一说如何创建JavaScript库及需要注意的问题!期待您光临斧正!


行文目录:点击对应目录进行跳转

  • 编写JavaScript库要注意的问题
  • 编写JavaScript库的模板代码
  • 编写JavaScript库(实例)
  • 完善JavaScript库(实例)






一.编写JavaScript库要注意的问题


为了让自己的JS库构建的更加优雅、合理,我们编写JS库时要注意两方面的内容:

1.不要使用版本检测,而要使用能力检测

由于浏览器的类型和版本太多,以及不断的新的浏览器出现,我们不可能投入大量的时间和成本去实践检测各种版本的浏览器。"浏览器检测"也叫"版本检测"通常被认为是一种错误的做法,浏览器检测的最佳实践是能力检测,通常也被称为对象检测,指的是在代码执行之前检测某个脚本对象or方法是否存在,而不是依赖于你对哪个浏览器具有哪些特定的了解。如果必须的对象和方法存在,那么说明浏览器能够使用它,而且代码也可以按照预期执行。能力检测使用<if(xxx.xxxx)>的方式


2.使用命名空间

当使用多个js库文件时,为了避免在调用时不同js库文件的同名函数的冲突,一般会使用命名空间来解决。JavaScript支持同名函数,但只使用最后一个加载的函数(不支持重载,不会考虑参数,只看函数名字), 哪一个最后被加载,哪一个就会被调用到。所以不使用命名空间的话,就很容易遇到同名函数冲突的问题。

      使用命名空间的两点原则:唯一性不共享

唯一性:挑选一个独一无二的命名空间的名字(如Google Maps在所有的标识符中都添加了G前缀),注意js是大小写敏感的。

不共享:不共享意味着什么都不共享;当你创建自己的$函数时你可能会与著名的库(如Prototype)中的$函数发生冲突而导致Prototype中的$无法使用,为了不与著名的一些库(jQuery、prototype)或者其他已有的一些函数冲突,使用匿名函数来实现代码的不共享。如:要保证只有你自己使用这个$()函数,你可以使用一个JS小技巧。

//匿名函数
(function(){
//code,运行的代码
})();

注意:()在JavaScript中有两种含义:一是运算符;二是分隔符
上面匿名函数需要说明两点:
     ①红色括号里是一个匿名函数,红色括号代表分割,表示里面的函数是一个部分;
     ②绿色括号表示一个运算符,表示红色括号里面的函数要运行;相当于定义完一个匿名函数后就让它直接运行。


二.编写JavaScript库模板


1.可以使用下面的模板来编写自己的JavaScript库


2.在HTML页面上引用自己JS库中的函数方式

首先,执行"插入→HTML→脚本对象→脚本",搜素自己要插入到此HTML页的js库文件插入到HTML文件标题下方,例如


然后,在body属性中调用JS库中的函数,两种方式

<body onload="myNameSpace.$()"></body>   //myNameSpace为定义的命名空间,可以调用自己构建的JS库文件中到函数了

<body onload="window.myNameSpace.$()"></body> //在命名空间前加上window也可实现调用JS库中的函数


三.编写自己的JavaScript库(实例)


实现一个在网页加载时弹出对话框的简单实例,本实例我们采用编程软件Dreamweaver 8。


1.创建自己的JS库,此处命名空间我命名为WALY.js

  注意:大家可以使用自己喜欢的名字作为命名空间的名字,这样使得即使一起使用其他人编写的库时也不会发生相互干扰的情况。


2.在HTML页面代码中调用JS库,进行验证是否调用到WALY.js中的函数。HTML文件名为WALYTest.html


3.运行网页,运行结果如图



四.完善JavaScript库


这里主要在JS库匿名函数中编写两个常用的方法:

1.$()方法

2.getElementsByClassName()方法


实例初探:js库中只编写$()方法

1.建立"AZJ.js"库,编写$()方法,代码如下


2.在HTML页面进行测试

当从界面只传递一个参数时,代码设计


运行结果为:点击"Click Me"按钮,弹出网页消息:AZJtest



当从界面传递两个参数时,代码设计


运行结果,单击"Click Me"按钮,先弹出AZJtest,再弹出AZJtest2




实例深入:编写getElementByClassName()方法

1.在"AZJ.js"库中编写getElementByClassName()方法,代码设计如下


2.在HTML页面进行测试

测试方式同上面传递两个参数的方式,代码设计如下


运行结果,同上述方法中传递两个参数的情况。

文章写到这里,相信您也会编写简单的js库文件了吧,编写js库文件是不是很简单呢?奋斗




12楼lidaasky14小时前
受益匪浅
Re: mazhaojuan13小时前
回复lidaaskyn高手过奖,哈哈……
11楼killer86昨天 23:52
优秀文章阿,就是要支持这样的原创才好……加油,楼主!
Re: mazhaojuan14小时前
回复killer86n谢谢……O(∩_∩)O
10楼ithzhang3天前 21:37
顶啊,顶啊。
Re: mazhaojuan3天前 21:38
回复ithzhangn谢谢,(^o^)/~
9楼liushuijinger3天前 17:06
高手啊
Re: mazhaojuan3天前 19:16
回复liushuijingern谢谢高手夸奖,哈哈(^o^)/~
8楼liusong06054天前 16:47
好啊,加油哇!
Re: mazhaojuan4天前 16:48
回复liusong0605n好的,加油,一起努力!
7楼xqf3095天前 21:12
好文章,娟姐
Re: mazhaojuan5天前 23:23
回复xqf309n嘿嘿,学习总结……
6楼beijiguangyong5天前 20:32
加油,楼主!
Re: mazhaojuan5天前 20:49
回复beijiguangyongn听高手的……ㄉ(^ω^)ㄊ……
5楼donghustone5天前 20:23
强大!
Re: mazhaojuan5天前 20:23
回复donghustonen感谢光临,谢谢赞赏!
4楼joky_5天前 20:03
顶了
Re: mazhaojuan5天前 20:11
回复joky_ntks……ㄉ(^ω^)ㄊ
3楼wang136675393255天前 19:42
娟姐,俺都看不懂了。
Re: mazhaojuan5天前 19:52
回复wang13667539325n到这个阶段,你就看懂啦,不难的……加油ㄉ(^ω^)ㄊ
2楼feilongwanli5天前 19:16
好文章,多多益善········顶起
Re: mazhaojuan5天前 19:30
回复feilongwanlin谢谢……[img]http://static.blog.csdn.net/images/emotions/e04.gif[/img]
1楼lfmilaoshi5天前 18:58
优秀文章阿,就是要支持这样的原创才好……加油,米老师
Re: mazhaojuan5天前 19:01
回复lfmilaoshin[img]http://static.blog.csdn.net/images/emotions/e04.gif[/img] 继续努力……
  相关解决方案