首页 > 编程语言 >JavaScript 模块

JavaScript 模块

时间:2023-07-09 10:55:22浏览次数:39  
标签:Set JavaScript 空间 collections 模块 sets 命名

JavaScript 模块

  •  一般来讲, 模块是一个独立的JavaScript文件
    •  模块文件可以包含一个类定义、 一组相关的类、 一个实用函数库或者是一些待执行的代码
    •  以模块的形式编写代码,任何符合模块编码形式JavaScript代码段,都可当做一个模块
    • JavaScript中未定义支持模块的语言结构, 所以在JavaScript中编写模块化的代码,其实是遵循某一种编码约定
  • 模块化支持大规模的程序开发, 处理分散源中代码的组装,确保代码正确运行, 即便其中包含不期望出现的模块代码, 也可正确执行
  •  不同的模块,应避免修改全局执行上下文
    • 已使后续模块应当在其所期望运行的原始(或接近原始)上下文中执行
    • 模块应当尽可能少地定义全局标识,理想状况是,所有模块都不应当定义超过一个全局标识

1 用做命名空间的对象

  • 在模块创建过程中避免污染全局变量的一种方法是使用一个对象作为命名空间
    • 它将函数和值作为命名空间对象属性存储起来(可以通过全局变量引用)
    • 不定义全局函数和变量
  • 使用对象作为命名空间,常用做法是在对象空间内创建类
//定义sets对象作为空间命名对象
//将Set类的构造函数、成员等作为其属性
var sets = {
    Set:function(){};
    Set.prototype:{
        constructor:Set,
        m1:function(){},
        m2:function(){}
    }    
};
//使用时,需要通过命名空间来调用所需的构造函数
var S = new sets.Set();
//如果频繁使用,也可先导入Set类到全局空间
var Ss = sets.Set;
var SS = new Ss();//不在使用前缀
  • 多重命名空间嵌套,如果sets模块是另外一个组更大的模块集合,命名空间是collections.sets,模块代码写法示例
//sets模块开始写法推荐:
var collections;//声明(或重新声明)这个全局变量
if (!collections){
    collections={};//如果它原本不存在,则创建一个顶层的命名空间对象
}
collections.sets= {}//将sets命名空间创建在它的内部
collections.sets.AbstractSet = function(){}//在collections.sets内定义set类
  • 最顶层的命名空间往往用来标识创建模块的作者或组织,并避免命名空间的命名冲突。推荐方法时常用互联网域名组成部分反转来命名
    • 这样创建的命名空间前缀是全局唯一的,一般不会被其他模块作者采用
    • 比如网站myweb.com,命名空间就是com.myweb.collections.sets
  • 使用很长的命名空间来导入模块的方式非常重要,一般应将整个模块导入全局命名空间,而不是导入(命名空间中的某个)单独的类
    • var sets = com.myweb.collections.sets;
  • 按照约定,模块的文件名应当和命名空间匹配
    • sets模块应当保存在文件sets.js中
    • 如模块使用命名空间collections.sets,sets.js文件应当保存在目录collections/下(这个目录还应当包含另一个文件maps.js)
    • 使用命名空间com.myweb.collections.sets的模块应当在文件com/myweb/collections/sets.js中

2 作为私有命名空间的函数

标签:Set,JavaScript,空间,collections,模块,sets,命名
From: https://www.cnblogs.com/cqycb720930/p/17537881.html

相关文章

  • 2012 javascript
    javascript  学习列表   BodyButtonCanvasEvent                                                                 02/07FormFrameFramesetIFrameImage                     ......
  • 常用的注意力机制模块(SE、CBAM)
     【深度学习】总目录SE论文:《Squeeze-and-ExcitationNetworks》将重点放在了通道(channel)关系上,并提出了一种新的结构单元SEblock。将SEblock堆叠在一起,就形成了SENet。SE块略微增加计算成本但显著地提升了性能,并且即插即用。SENet获得了最后一届ImageNet2017竞赛分类任务的......
  • JavaScript必会基础知识
    本手册的目标是快速向您介绍JavaScript的基础知识,以便您可以开始编写应用程序。我不会涵盖JavaScript的所有理论和概念,而是只教您该语言最重要的构建块。我们将介绍变量、数据类型、函数、对象、数组和类等内容。您还将学习如何将它们全部混合起来构建一个小而可靠的程序。......
  • 深度剖析之由浅入深揭秘JavaScript类型转换(最全总结篇)
    前言系列首发于公众号『前端进阶圈』,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。深度剖析之由浅入深揭秘JavaScript类型转换(最全总结篇)值类型转换将值从一种类型转换为另一种类型通常称为类型转换,分为隐式强制类型转换和显示强制类型转换。两者的区别在于......
  • ,软件运行监听地址 ,扫码登录,爬虫介绍,requests模块介绍和快速使用,get请求携带参数,编码
    补充#软件运行,监听地址127.0.0.1 只能访问127.0.0.1localhost不能用本机ip地址访问,外部所有人都不能访问你0.0.0.0 127.0.0.1localhost本机ip地址访问同一个局域网内,都可以通过ip地址访问#本地host解析 输入网址---》www.baidu.com---->找本地host文......
  • JavaScript-Day01
    1、JavaScript:是与网页交互的脚本语言。2、组成部分:{ ECMAScript,文档对象模型(DOM),浏览器对象模型(BOM)}    2.1 ECMAScript(核心):由ECMA-262定义并提供核心功能。<!--宿主环境-->        1.基本层面定义:语法、类型、语句、关键、保留字、操作符、全局对象。   ......
  • Python | glob模块使用
    glob模块简介glob模块可以查找符合特定规则的文件路径名,用来查找文件目录和文件,并将搜索的到的结果返回到一个列表中。常见的两个方法有glob.glob()和glob.iglob(),类似windows下的文件搜索。glob支持*?[]这三种通配符。glob模块的使用导入方法:importglob #导入整个glob模......
  • 【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块3
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块2
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(136)---0.91寸OLED液晶屏模块5
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......