构建自己的js库
一、背景
- web前端开发人员经常会用到一些现成的js库(框架)。框架的使用增加了代码的模块化和可复用性,最主要的是屏蔽了浏览器之间差异性的实现,使得代码更加简洁,框架使用者只需要将注意力放在业务的实现上而不必为底层繁琐的实现感到头疼。
- 目前主流的js框架有很多,各有侧重,我们通常只会用到其中一小部分子功能。如果为了局部功能而引入一个庞大的框架,显然有点大材小用而且会增加浏览器的加载负担,浪费网络带宽,影响用户体验。因此,很多时候定义我们自己的js库非常的有必要,我们只需要根据项目需求构建出个性化js库,这样的js库将会变得相当精简。
- 实习导师要求在实习之前学习一下如何构建一个自己的类库,任务使然。
结论:基于以上三个原因,笔者大概学习了如何构建一个自己的js库,以及在构建的过程中应该注意的一些事项。
二、构建js库是需要注意的问题
1、会不会和其他的库产生冲突
比如jQuery,Ext,Prototype等符号
2、不要版本检测。
不依赖于浏览器的样式,和浏览器的版本,而是依赖于脚本语言js的强大。
3、使用命名空间。
这里所说的命名空间不是真正的命名空间,只是能在脚本内营造的一个属于自己的小空间的技巧而已。
----命名空间的唯一性:
如果多个方法的名字相同,则默认使用最后一个方法。不过通常要避免这种做法。
一般命名为IC (ItCast)
----命名空间不共享:
库中的任何函数只在库中使用,保证自己使用$()函数,使用js小技巧。
(function(){
//运行的代码。
})(); //后面的括号表示运行,定义匿名函数之后直接运行。前面的括号表示分隔符,定义函数。
三、构建一个简单的js库实例
这里给出了一个简单的js例子。
<script>
(function(){ //自己的命名空间,外部无法访问。
//定义了自己的函数$()
Function $()
{
//代码。
//测试是否成功。
alert("你好!");
}
//构造自己的命名空间。
Window['myNameSpace']={}
//将自己的命名空间注册到window,并且注册自己的$函数。
Window['myNameSpace']['$']=$;
})();
</script>
然后再html文件中对我们之前构建简单的js库进行测试。
<html>
<head>
<title>js库测试</title>
<script type="text/javascript" src="myNameSpace.js"></script>
</head>
/*调用自己建立的 $()方法。window可以省略*/
<body onload="window.myNameSpace.$();">
</body>
</html>
需要注意的是,调用js库中的方法时,window可以省略(由js作用域链的相关知识可知)。所以我们可以定义一个名为myExtJs的库,并通过这样的方式来调用。eg:myExtJs.myLoad()。
用过ExtJs的朋友,看到这里应该会感到很熟悉,ExtJS的就是以Ext作为顶级命名空间,并将该命名空间作为window对象的一个属性。以此类推,我们可以继续通过往自定义命名空间中添加属性的方式,创建命名空间。
构建自己的js库的更多相关文章
- javascript学习(一)构建自己的JS库
库是一个饱受争议的热门话题.一种观点认为它是一种非常棒的工具,是任何开发者都不可或缺的:另一种观点则认为在不理解库的内部工作原理的情况下对库形成依赖,会助长懒惰的风气从而导致开发者素质下降 库是一个饱 ...
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...
- typescript+webpack构建一个js库
依赖说明 入口文件 tsconfig配置 webpack配置文件 webpack入口文件配置 webpack为typescript和less文件配置各自的loader webpack的output配置 ...
- 【转载】写一个js库需要怎样的知识储备和技术程度?
作者:小爝链接:https://www.zhihu.com/question/30274750/answer/118846177来源:知乎著作权归作者所有,转载请联系作者获得授权. 1,如何编写健壮的 ...
- Vue.js库的第一天的学习
一,vue.js简介 Vue.js可以作为一个js库来使用,也可以用它全套的工具来构建系统界面,这些可以根据项目的需要灵活选择 所以说, vue.js是一套构建用户界面的渐进式框架 Vue.js的核心 ...
- 主流JS库一览
主流JS库一览 标签: prototypedojomootoolsprototypejsjqueryjavascript 2009-10-14 22:52 19936人阅读 评论(2) 收藏 举报 ...
- 12个值得关注的顶级可视化JS库 涉及图表、动画、时间处理,表格操作
本文是译文,原文是https://da-14.com/blog/top-11...我在原文的基础上加了百度的Echats图表库,这个也是毫不逊色其他图表库的.另外Handsontable电子表格库也是 ...
- 使用模块化工具打包自己开发的JS库(webpack/rollup)对比总结
打包JS库demo项目地址:https://github.com/BothEyes1993/bes-jstools 背景 最近有个需求,需要为小程序写一个SDK,监控小程序的后台接口调用和页面报错(类 ...
- 前端之Vue.js库的使用
vue.js简介 Vue.js读音 /vjuː/, 类似于 view Vue.js是前端三大新框架:Angular.js.React.js.Vue.js之一,Vue.js目前的使用和关注程度在三大框架 ...
随机推荐
- HDU3686 Traffic Real Time Query System 题解
题目 City C is really a nightmare of all drivers for its traffic jams. To solve the traffic problem, t ...
- 如何排查CPU占用太高
线上项目运行时,出现问题不像在本地那么容易排查,经常需要借助日志.或者一些工具来找出问题.cpu被占满我们经常会遇到.比如我们有这样一段代码: public Class Demo1_16 { publ ...
- 一文梳理Web存储,从cookie,WebStorage到IndexedDB
前言 HTTP是无状态的协议,网络早期最大的问题之一是如何管理状态.服务器无法知道两个请求是否来自同一个浏览器.cookie应运而生,开始出现在各大网站,然而随着前端应用复杂度的提高,Cookie 也 ...
- git clone下载速度很慢的解决方法
一直用git clone从github上下载源码学习,但是有时候git clone速度好慢,只有几Kb的速度,按这个速度下载安卓源码的话估计要下一年. 然后我再网上找各种教程,试过通过vps下载git ...
- python面试题六: 剑指offer
面试题3 二维数组中的查找 LeetCode题目:二维数组中,每行从左到右递增,每列从上到下递增,给出一个数,判断它是否在数组中思路:从左下角或者右上角开始比较 def find_integer(ma ...
- Kite: 一个分布式微服务框架(翻译)
原文链接:https://blog.gopheracademy.com/birthday-bash-2014/kite-microservice-library/ 此为中文翻译 用GO语言来编写web ...
- 采用 Unicode 标点属性方式的正则表达式,可以去掉所有的标点符号,
public class Test { public static void main(String[] args) { String str = "!!!??!!!!%*)%¥!KTV去符 ...
- 程序员肺被切掉一块还得去加班... 再谈“工作996,生病ICU”
如题,为什么要说再谈“工作996,生病ICU”,因为996问题早已不是一个新问题,在我最近刚出版的新书<SOD框架“企业级”应用数据架构实战>写作期间,爆发了一次程序员“起义”,出现了一个 ...
- 【题解】cf1381c Mastermind
序 (一道很考验思维质量的构造好题,而且需要注意的细节也很多.) 本题解主体使用的是简洁且小常数的\(O(nlogn)\)时间复杂度代码,并且包含其他方法的分析留给读者自行实现(其实是自己不会写或者写 ...
- 解决用vscode开发arduino时Serial未定义
在工作目录编辑c_cpp_properties.json文件 添加defines字段 { "configurations": [ { "name": " ...