知识大全 JavaScript模块编程之写法

Posted

篇首语:老板给了我份说炒就炒的鱿鱼,我给了板来了份说滚就滚的旅行。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JavaScript模块编程之写法相关的知识,希望对你有一定的参考价值。

JavaScript模块编程之写法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  随着网站逐渐变成 互联网应用程序 嵌入网页的Javascript代码越来越庞大 越来越复杂

  

  网页越来越像桌面程序 需要一个团队分工协作 进度管理 单元测试等等……开发者不得不使用软件工程的方法 管理网页的业务逻辑

  JavaScript模块化编程 已经成为一个迫切的需求 理想情况下 开发者只需要实现核心的业务逻辑 其他都可以加载别人已经写好的模块

  但是 JavaScript不是一种模块化编程语言 它不支持 类 (class) 更遑论 模块 (module)了 (正在制定中的ECMAScript标准第六版 将正式支持 类 和 模块 但还需要很长时间才能投入实用 )

  JavaScript社区做了很多努力 在现有的运行环境中 实现 模块 的效果 本文总结了当前 Javascript模块化编程 的最佳实践 说明如何投入实用 虽然这不是初级教程 但是只要稍稍了解Javascript的基本语法 就能看懂

  

  一 原始写法

  模块就是实现特定功能的一组方法

  只要把不同的函数(以及记录状态的变量)简单地放在一起 就算是一个模块

  function m ()

  //…

  function m ()

  //…

  

  上面的函数m ()和m () 组成一个模块 使用的时候 直接调用就行了

  这种做法的缺点很明显 污染 了全局变量 无法保证不与其他模块发生变量名冲突 而且模块成员之间看不出直接关系

  二 对象写法

  为了解决上面的缺点 可以把模块写成一个对象 所有的模块成员都放到这个对象里面

  var module = new Object(

  _count :

  m : function

  ()

   //…

  

  m : function

  ()

   //…

  

  

  )

  上面的函数m ()和m () 都封装在module 对象里 使用的时候 就是调用这个对象的属性

  module m ()

  但是 这样的写法会暴露所有模块成员 内部状态可以被外部改写 比如 外部代码可以直接改变内部计数器的值

  module _count = ;

  三 立即执行函数写法

  使用 立即执行函数 (Immediately Invoked Function Expression IIFE) 可以达到不暴露私有成员的目的

  var module = (function()

  var _count = ;

  var m = function()

  //… ;

  var m = function()

  //… ;

  return m : m m : m ;

  )

  ()

  使用上面的写法 外部代码无法读取内部的_count变量

  (module _count) //undefined

  module 就是Javascript模块的基本写法 下面 再对这种写法进行加工

  四 放大模式

  如果一个模块很大 必须分成几个部分 或者一个模块需要继承另一个模块 这时就有必要采用 放大模式 (augmentation)

  var module = (function (mod)

  mod m = function ()

  //… ;

  return mod;

  )

  (module )

  上面的代码为module 模块添加了一个新方法m () 然后返回新的module 模块

  五 宽放大模式(Loose augmentation)

  在浏览器环境中 模块的各个部分通常都是从网上获取的 有时无法知道哪个部分会先加载 如果采用上一节的写法 第一个执行的部分有可能加载一个不存在空对象 这时就要采用 宽放大模式

  var module = ( function (mod)

  //…

  return mod;

  )

  (window module || )

  与 放大模式 相比 宽放大模式 就是 立即执行函数 的参数可以是空对象

  六 输入全局变量

  独立性是模块的重要特点 模块内部最好不与程序的其他部分直接交互

  为了在模块内部调用全局变量 必须显式地将其他变量输入模块

  var module = (function ($ YAHOO)

  //… )

  (jQuery YAHOO)

cha138/Article/program/Java/JSP/201311/19185

相关参考

功能模块是可编程调节器中具有某种运算处理功能的子程序段,按作用分,有运算功能模块()

功能模块是可编程调节器中具有某种运算处理功能的子程序段,按作用分,有运算功能模块()A、SOE功能模块B、控制功能模块C、输入/输出功能模块D、顺序控制模块参考答案:BCD

功能模块是可编程调节器中具有某种运算处理功能的子程序段,按作用分,有运算功能模块()

功能模块是可编程调节器中具有某种运算处理功能的子程序段,按作用分,有运算功能模块()A、SOE功能模块B、控制功能模块C、输入/输出功能模块D、顺序控制模块参考答案:BCD

知识大全 Struts模块化编程经典实战教程(一)

Struts模块化编程经典实战教程(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前言  

知识大全 Struts模块化编程经典实战教程(二)

Struts模块化编程经典实战教程(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  STRU

知识大全 Javascript面向对象编程

Javascript面向对象编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Javascri

知识大全 如何快速掌握JavaScript面向对象编程

如何快速掌握JavaScript面向对象编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    

知识大全 JavaScript异步编程的4种方法

JavaScript异步编程的4种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  你可能知道

知识大全 JavaScript对象化编程基本对象分析[3]

JavaScript对象化编程基本对象分析[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 JavaScript对象化编程基本对象分析[2]

JavaScript对象化编程基本对象分析[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 JavaScript对象化编程基本对象分析[1]

JavaScript对象化编程基本对象分析[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!