`
xphwv
  • 浏览: 45677 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js命名空间(解决不同js lib冲突问题)

 
阅读更多
//声明一个全局对象Namespace,用来注册命名空间
Namespace = new Object();
// 全局对象仅仅存在register函数,参数为名称空间全路径
Namespace.register = function(wk_NS)
{
    var nsArray = wk_NS.split('.');
    var sEval = "";
    var sNS = "";
    for (var i = 0; i < nsArray.length; i++)
    {
        if (i != 0) sNS += ".";
        sNS += nsArray[i];
        sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
    }
    if (sEval != "") eval(sEval);
}
/***
 * test demo 
 * Namespace.register("wk_test");注册命名空间
 * wk_test.jquery=$;将$添加到该命名空间
 * var p=wk_test.jquery("a").size();通过命名空间获取值
 * alert(p);
 */

 

实例demo

-------------------------------------------------------------------------------------------------------------------------------------

<script type="text/javascript" src="namespace.js"></script>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="jquery.validate.min.js"></script>
<script type="text/javascript" >
var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");
	Namespace.register("wk_vada");
	wk_vada=$;

	wk_vada(document).ready(function() {
	wk_vada("#signupForm").validate({
        rules: {
        	name: "required",
        	keyword:"required"
	  	},
        messages: {
        	name: "请输入姓名",
       		keyword: "请输入姓名"
        	}
 	}); 
 </script> 
<script type="text/javascript" src="jquery.autocomplete.min.js"></script>
<script type="text/javascript" >
	Namespace.register("wk_auto");
	wk_auto=$;
	
	wk_auto('#keyword').autocomplete(data).result(function(event, data, formatted) {
	    alert(data);
	});
	alert(wk_auto instanceof  wk_vada); //false
</script>

 注:借鉴无私的开源者 

分享到:
评论

相关推荐

    lib-manage2.3.zip

    lib-manage2.3可能采用了模块化的设计,将不同功能的代码封装在独立的库中,便于复用和维护。同时,通过命名规范和分类,使得开发者可以快速定位到所需库。 其次,版本控制是库管理系统不可或缺的一部分。lib-...

    es6导入到处详细1

    总的来说,ES6的导入与导出机制为JavaScript的模块化提供了强大支持,使得代码结构更加清晰,可维护性更强,同时也更好地解决了命名冲突和作用域问题。通过熟练掌握这些规则和用法,开发者可以编写出更高质量的前端...

    jsTree-ver1.0开发技术指南定义.pdf

    &lt;script type="text/javascript" src="_lib/jquery.js"&gt; &lt;script type="text/javascript" src="jquery.jstree.js"&gt; ``` 或者,如果希望使用压缩版,可以替换为: ```html &lt;script type="text/javascript" src=...

    JavaScript中Require调用js的实例分享

    Require.js提供了一种方式来组织代码,避免全局命名空间的污染,同时解决了代码依赖和多脚本文件管理的问题。 Require.js的核心概念是模块(Module),它是一个独立的、自我封装的对象,不会影响到全局环境。模块...

    child-process-ctor-Node.js4childProcess.ChildProcessponyfill.

    然而,`ponyfill`不同于传统的`polyfill`,它并不污染全局命名空间,而是通过导出一个函数或对象来提供新功能,这样可以避免与其他库冲突。 在Node.js v4版本中,`ChildProcess`构造函数可能还存在一些不兼容或者未...

    lua lib文件

    一些工具如luarocks可以帮助管理和安装Lua库,它类似于Python的pip或Node.js的npm,允许指定库的版本、解决依赖问题,并方便地安装到系统的合适位置。 7. **lua库的示例** - `luasocket`:提供网络通信功能,如TCP...

    Node.js模块加载详解

    在JavaScript历史上,其作为Web开发中不可或缺的编程语言,由于其早期设计的仓促,存在一些设计上的问题,比如全局命名空间的问题,这在Node.js中通过模块化的机制得到了解决。Node.js遵循CommonJS规范,每个模块有...

    RequireJS进阶(二)

    为了更好地组织代码和避免命名冲突,RequireJS支持模块命名空间。可以使用相对路径或者绝对路径来创建模块层次结构,如`'app/view'`和`'lib/util'`。 六、插件机制 RequireJS的插件系统允许扩展其功能,如文本模板...

    require_Dome

    它引入了AMD(Asynchronous Module Definition)模式,这种模式允许我们定义和异步加载模块,解决了传统JavaScript中由于全局变量导致的命名冲突问题。通过`requireJS`,我们可以将代码分割成多个模块,每个模块负责...

    前端html5框架ZUI1.2版

    23、修复color.js中增加命名颜色支持 26、弹出框增加新的选项能够制定JS生成DOM的id属性,便于自定义样式 27、大幅优化代码,修复一些在Javascript代码中的错误,完善关键代码注释,增强部分代码文件与requierejs的...

    seajs-5分钟上手

    Seajs的核心理念是模块化,它允许我们将JavaScript代码分割成多个独立的模块,每个模块都有自己的命名空间,避免了全局变量污染的问题。它遵循AMD(Asynchronous Module Definition)和CMD(Common Module ...

    XML官方指南(CHM)

    4. **命名空间**:探讨XML命名空间的概念,如何通过命名空间解决元素和属性名称的冲突问题。 5. **XSLT与XSL-FO**:解释如何使用XSLT(Extensible Stylesheet Language Transformations)进行XML到XML或XML到其他...

    Vue如何基于es6导入外部js文件

    而在ES5的`&lt;script src&gt;`方式中,浏览器会直接加载并执行外部文件,这在ES6/Vue环境中可能导致命名冲突或无法识别的问题。 总结一下,要在Vue项目中基于ES6导入外部JS文件,你需要: 1. 将外部JS文件转换为ES6模块...

    styles-lib

    6. **CSS-in-JS**:在某些情况下,styles-lib可能结合了JavaScript,将CSS嵌入到JS中,利用JS的动态性和灵活性,如styled-components或JSS。 7. **状态管理**:对于复杂的UI组件,styles-lib可能包含了一种管理组件...

    node_modules

    2. **依赖冲突**:当项目依赖的不同模块有相同的依赖但版本不一致时,Node.js会通过“npm link”或“npm flat”特性来解决冲突,尽量保持树状依赖结构,避免“ diamond problem”。 3. **优化体积**:在生产环境中...

    ace-builds-master.zip

    - `noconflict`: 提供无冲突模式的编辑器,避免与其他库发生命名空间冲突。 - `demo`: 示例代码和演示页面,帮助开发者快速了解如何在项目中集成Ace Editor。 - `mode-*` 和 `theme-*`: 不同编程语言的模式文件和...

    RequireJS 使用文档

    例如,可以设定所有第三方库在`js/lib`路径下,而自定义应用模块在`js/app`路径下。 4. **paths 配置的特殊规则**:某些模块ID可以直接加载为相对HTML文档的脚本,比如以`.js`结尾、以`/`开头或包含URL协议的模块ID...

    ExtJs教程_完整版

    ### ExtJs教程_完整版 —— 第一章起步(1)关键知识点详解 #### 一、ExtJS概述 **1.1 极致的用户体验** ...此外,ExtJS的社区非常活跃,提供了大量的资源和支持,使得学习和解决问题变得更加容易。

    nacos-server-1.4.3.tar.gz

    4. **命名空间**:通过命名空间,Nacos 允许在同一集群中隔离不同的环境(如开发、测试和生产环境)的配置和服务,避免了不同环境之间的冲突。 5. **多语言支持**:Nacos 提供了多种语言的 SDK,包括 Java、Go、...

Global site tag (gtag.js) - Google Analytics