在java中,为了防止命名冲突和模块式开发,会有个一个import 关键字来进行导包。

  在js中为了达到同样的效果,我们也通过给其自定义一个“包”的概念。

  直接上代码:

  首先有个LC.js文件:

  

//LC.js

var LC = LC || {};LC.namespace = function(namespace) {var nsparts = namespace.split(".");var parent = window;if (nsparts[0] === "LC") {nsparts = nsparts.slice(1);parent = LC;}for (var i = 0; i < nsparts.length; i++) {var partname = nsparts[i];if (typeof parent[partname] === "undefined") {parent[partname] = {};}parent = parent[partname];}return parent;
};// alias namespace
LC.ns = LC.namespace;

  设计思路:将命名空间,即”包“名通过参数传递到此方法中,然后将这个”包名“通过字符串解析,将其注册到window对象中,来充当window对象的属性,

通过一种类似递归的方式,来处理子包。

  使用的方法:

    

//Test.jsLC.ns("app.admin").test = (function() {function init() {alert("init")}function doSomething() {alert("doSomething");}return {init : init,doSomething : doSomething 

    };
 })();

在页面调用Test.js 即需要引入这两个文件,调用某个方法:

<script >app.admin.test.init();app.admin.test.doSomething();</script>

  这样就通过这种命名空间的方式来减少js方法命名的重复了。

转载于:https://www.cnblogs.com/lic309/p/4136292.html

使用js命名空间进行模块式开发相关推荐

  1. vue2项目复习01-关闭elint检校,src文件别名,路由传参的对象写法,代理解决跨域问题,nprogress,vuex状态管理库,store的模块式开发,节流与防抖,编程式导航+事件委托路由跳转

    1.关闭elint语法校验 创建vue.config.js //关闭elint语法校验 {lintOnSave:false; } 2.src文件夹配置别名 jsconfig.json配置别名 @代表s ...

  2. maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

    项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...

  3. 模块式开发 java_Java9系列第8篇-Module模块化编程

    我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 ...

  4. 再谈 JS中的模块规范(CommonJS,AMD,CMD)来自玉伯的seajs分析

    随着互联网的飞速发展,前端开发越来越复杂.本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发. 恼人的命名冲突 我们从一个简单的习惯出发.我做 ...

  5. .net 插件式开发学习总结

    .NET简谈插件系统开发模式 今天跟大家分享一下我们在日常开发中并不常用的开发模式"插件系统模式",什么叫插件从大一点的概念讲就是我们开发的软件是由很小的模块组成,每一块都能成功的 ...

  6. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

    标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11155 ...

  7. MEF 插件式开发 - DotNetCore 初体验

    背景叙述 在传统的基于 .Net Framework 框架下进行的 MEF 开发,大多是使用 MEF 1,对应的命名空间是 System.ComponentModel.Composition.在 Do ...

  8. Node.js web应用模块之forever

    javascript 一统江湖的势头越来越猛,越来越重的前端,不得不实施前后端分离,angular.js 成功把前端javascript抽象成了一个复杂的MVC框架,注意,它是一个框架,可不是普普通通 ...

  9. springboot 使用webflux响应式开发教程(二)

    本篇是对springboot 使用webflux响应式开发教程(一)的进一步学习. 分三个部分: 数据库操作 webservice websocket 创建项目,artifactId = tradin ...

最新文章

  1. 3、vue-router之什么是动态路由
  2. python为什么那么难学_Python入门很难吗? 为什么越来越多的人都学Python?
  3. C++ Primer 5th笔记(chap 19 特殊工具与技术)两种不可移植的特性之“volatile”
  4. 【超清视频】CCNA系列课程之二:IP地址介绍及VLSM子网划分
  5. SAP UI5 ConnectionManager
  6. [导入]关于阶乘的两个常见算法及一个相关面试题
  7. PTVS 安装操作指南
  8. python安装email模块,python 3.4.0电子邮件包安装:ImportError:没有名为'cStringIO'的模块...
  9. 剑指offer【书】之简历抒写
  10. MySQL 如何删除有外键约束的表数据
  11. mysql数据库字符集实践详解_mysql数据库 详解 之 自学成才1
  12. 中秋节快乐ooooo
  13. [转帖]龙芯下一代处理器微结构GS464E细节曝光
  14. 物联网技术练习题(二)——多选题与简答题
  15. [语义分割]SPP、空洞卷积与ASPP总结
  16. 《数据清洗》——kettle基本工具的使用
  17. 亚马逊云科技中国峰会,一起探路未来
  18. Onvif/RTSP摄像头直播中云台控制
  19. 作品展示 - 讯超科技项CMS目生基础成框架
  20. 临床医生求职简历模板范文--带详细内容

热门文章

  1. centos7.5 下LNMP搭建
  2. 使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件
  3. 用Emacs进行Java开发
  4. 山寨今日头条的标题title效果
  5. 【转载】Asp.Net中基于Forms验证的角色验证授权
  6. 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况
  7. C/C++中函数参数传递
  8. 如何在C++中调用C程序?
  9. excel匹配_Excel中的数据匹配和查找
  10. 遍历同辈节电的方法_JQuery遍历DOM节点的方法