构建自己的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目前的使用和关注程度在三大框架 ...
随机推荐
- 二叉树的深度(剑指offer-38)
题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 递归解析: 思路: 从根节点出发,查询左子树的深度,获取右子树的深度 ...
- Django---进阶10
目录 forms组件源码 cookie与session Cookie操作 session操作 CBV如何添加装饰器 作业 forms组件源码 """ 切入点: form_ ...
- C++左值引用与右值引用
本文翻译自:https://docs.microsoft.com/en-us/cpp/cpp/references-cpp?view=vs-2019 引用,类似于指针,用于存储一个位于内存某处的对象的 ...
- JavaScript学习 Ⅶ
十四. DOM(文档对象模型) 节点:Node--构成HTML文档最基本的单元 文档节点:整个HTML文档 元素节点:HTMl文档中的HTML标签 属性节点:元素的属性 文本节点:HTML标签中的文本 ...
- Django -MD5密码加密与登录
直接贴代码 login_reg.py from django.shortcuts import render, redirect from web.forms.login_reg import Reg ...
- Ethical Hacking - GAINING ACCESS(9)
Server Side Attack Nexpose - Analysing Scan Results and Generating Reports OS and Software Inforatio ...
- P4017 最大食物链计数 (拓扑排序)
看到拓扑排序感觉非常遥远的复杂,不喜欢图.看了拓扑排序的原理,很像广搜. 以本题样例为例: 了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2 入度为2…… for循环 找到秃头 5 ...
- 使用 forever 启动 vue 需要注意的问题
forever 是 nodejs 生态中一个用来永久挂起一个应用(当这个应用崩溃时能自己重启)的应用(库). 但用他启动vue的时候必须注意一个问题: 在哪个路径启动vue,就在哪个路径启动forev ...
- 设计模式:chain of responsibility模式
目的:弱化发出请求的对象和处理请求对象的之间的关系 理解:每个处理请求的对象仅仅只关注自己能处理的请求,不关系其他请求 优点: 无需一个管理类来匹配所有的请求,更灵活 责任链可以动态的调整 Andor ...
- Zookeeper ----- 系统模型
数据模型 Zookeeper的数据模型与文件系统非常相似,唯一不同的它的每个节点(ZNode)都可以存放数据,无论父节点还是子节点. 事务ID 即前面提到的ZXID.对每个事务请求,Zookeeper ...