模块概述

随着一个网站越来越大,html页面文件越来越多,由<script src='xxx.js'></script>引入的js文件越来越多,我们的单个js文件很大,上几万行时,我们就需要按照功能拆分成多个单一通用的文件,我们称之为模块。

模块的演变过程

最原始写法:

简单又粗暴,一些变量,一些方法,解决一些功能,就是一个模块文件

     var v1=1;var v2=2;function fun1(){ return ; } function fun2(){ return ; } 

如此可以直接用,比如在控制台中缺点:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系

对象写法:

var module=new Object({v1:1, v2:2, fun1:function(){ return v1; }, fun2:function(){ return v2; } }) 

将功能模块的变量,方法写到对象里,解决模块独立,单一问题,,通过对象调用建立方法属于模块的联系

缺点:这样的写法会暴露所有模块成员,内部状态(变量,方法)可以被外部改写 ,外部代码可以直接改变内部变量的值,甚至重定义方法,比如哪天一个邪恶分子这样:

module.v1="i am you baba";
module.fun1=function(){ delete module.v2; } 

这就很恐怖了,自己写的模块,肯定不希望别人更改,是吧 *.*

立即执行函数写法:(闭包)

针对以上的问题,聪明的童鞋,会马上想到,闭包!!! 使用"(立即执行的)函数表达式"(Immediately-Invoked Function Expression,IIFE),可以达到不暴露私有成员的目的,于是便有了以下常用的模块方法,相当于类

var module2=(function(){var v1=1; var fun1=function(){ console.log("fun1:"+v1); }; var fun2=function(){ alert("fun2:"); }; var fun3=function(arg){ v1=arg; } return {write:fun1,show:fun2,setV1:fun3} })(); 

这样,我们便可以控制模块接口的暴露,结合function 对象原型链(prototype)模式,可以构建很强大的模块到此处,开发一般公司的项目,基本也够用了

本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: 2019/02/28 21:02

转载于:https://www.cnblogs.com/telwanggs/p/11289479.html

javasript模块化相关推荐

  1. JavaSript模块化 AMD CMD 详解.....

    模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理.模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式.可以想象一个巨大 ...

  2. JavaSript模块规范 - AMD规范与CMD规范介绍[转]

    原文地址:http://blog.chinaunix.net/uid-26672038-id-4112229.html JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什 ...

  3. 模块化 AMD与CMD 规范

    JavaSript模块规范 - AMD规范与CMD规范介绍 2014-02-19 13:12:01 分类: JavaScript JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单 ...

  4. CommonJs, AMD/RequireJs,CMD/seajs

    JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解 ...

  5. openstack租户管理_openstack 租户、用户管理

    创建domain [root@cc01 ~]# openstack domain create --description "Default Domain" default +-- ...

  6. oracle 完整恢复数据库,oracle完全恢复数据库

    完全恢复数据文件 rman target/ list backup summary; 查看是否有备份,如果没有备份,先进行全备份(应该是backup database吧) 现在模拟删除oracle数据 ...

  7. 如何理解JavaScript模块化?

    1.模块化是什么 模块化简单来说就是将一个完整的长篇代码文件根据功能进行划分成几个文件,这些文件各自负责一个独立的功能,各个文件组合起来实现一个完整的大功能,这就是模块化,每个负责独立功能的文件就是模 ...

  8. android 提供服务,GitHub - FamliarMan/AndroidServiceProvider: 为模块化提供的一个服务发现库...

    AndroidServiceProvider是为了解决模块化过程中各模块服务统一获取的难题而产生的,具体情况请参照这篇文章 Android模块化中的服务发现机制 注意混淆 这里特别强调,所有注册的类都 ...

  9. C:模块化程序设计 以及数组

    模块化: 举例: 继续细化上述模块,猜完一个数字之后,继续再猜: 再细化计算机生成数字: 数据类型前边都加入了一个const,把他声明为整形常量的原因,当你这个参数被声明为const的时候就可以起到保 ...

最新文章

  1. (转载)你所知晓的dt.jar
  2. Windows 技巧篇-设置我的漂亮桌面
  3. Andrew Ng机器学习编程作业:K-means Clustering and Principal Component Analysis
  4. 空调万能手机遥控器android版,手机空调万能遥控器
  5. 博世 40 亿欧元押注自动驾驶,Waymo 准备接招吧
  6. java数组查找文本_基于数组的二叉查找树 Binary Search Tree (Java实现)
  7. 将相同值的行内容进行合并操作--Sql2005
  8. .NET(C#)代码性能优化
  9. 抖音几个赞才能上热门 视频去水印
  10. Channel 用法
  11. Linux下的man指令
  12. 搭建一个socks5代理 解决狗东对ip限制nolanjdc无法获取短信问题(搬运工unke原创)
  13. (转)Android屏幕适配全攻略(最权威的官方适配指导)
  14. JavaScript知识点复习总结
  15. Synthetic QA Corpora Generation with Roundtrip Consistency
  16. 解决:python爬取豆瓣电影遇到的KeyError: 'subject_collection_items'错误
  17. LaTeX - 毕业答辩Beamer
  18. 中国互联网出现数学家的科普乐园
  19. 使用计算机需要准备硬件和什么,当个人计算机需要使用ADSL访问Internet时,所需的基本硬件设施是什么?...
  20. Adobe国际认证|3D产品可视化:赢得内容竞赛的关键

热门文章

  1. window.opener方法的使用 刷新父页面
  2. vtk鼠标不交互_Axure RP 9.0 交互原型设计工具
  3. java极光推送ios设置通知标题,iOS_极光推送的UNNotificationServiceExtension实现富文本...
  4. linux java执行_linux下运行java
  5. dpdk开发快速入门
  6. 网络协议:TCP可靠传输
  7. curl http_code 状态码 意义及信息
  8. (77)译码器与编码器(八三编码器)
  9. (71)FPGA面试题-使用不同的代码实现2-4译码器?使用case语句
  10. (17)Verilog时钟与复位激励-基本语法(五)(第4天)