知识大全 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模块化编程经典实战教程(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 前言
Struts模块化编程经典实战教程(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! STRU
Javascript面向对象编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Javascri
如何快速掌握JavaScript面向对象编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JavaScript异步编程的4种方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你可能知道
JavaScript对象化编程基本对象分析[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JavaScript对象化编程基本对象分析[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JavaScript对象化编程基本对象分析[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!