电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Javascript模块化编程

18页
  • 卖家[上传人]:鲁**
  • 文档编号:473275638
  • 上传时间:2023-01-08
  • 文档格式:DOC
  • 文档大小:99.51KB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Javascript模块化编程(一):模块的写法作者: 阮一峰日期: 2012年10月26日随着网站逐渐变成互联网应用程序,嵌入网页的Javascript代码越来越庞大,越来越复杂。网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等等.开发者不得不使用软件工程的方法,管理网页的业务逻辑。Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。但是,Javascript不是一种模块化编程语言,它不支持类(class),更遑论模块(module)了。(正在制定中的ECMAScript标准第六版,将正式支持类和模块,但还需要很长时间才能投入实用。)Javascript社区做了很多努力,在现有的运行环境中,实现模块的效果。本文总结了当前Javascript模块化编程的最佳实践,说明如何投入实用。虽然这不是初级教程,但是只要稍稍了解Javascript的基本语法,就能看懂。一、原始写法模块就是实现特定功能的一组方法。只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。function m

      2、1()/.function m2()/.上面的函数m1()和m2(),组成一个模块。使用的时候,直接调用就行了。这种做法的缺点很明显:污染了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。二、对象写法为了解决上面的缺点,可以把模块写成一个对象,所有的模块成员都放到这个对象里面。var module1 = new Object(_count : 0,m1 : function ()/.,m2 : function ()/.);上面的函数m1()和m2(),都封装在module1对象里。使用的时候,就是调用这个对象的属性。module1.m1();但是,这样的写法会暴露所有模块成员,内部状态可以被外部改写。比如,外部代码可以直接改变内部计数器的值。module1._count = 5;三、立即执行函数写法使用立即执行函数(Immediately-Invoked Function Expression,IIFE),可以达到不暴露私有成员的目的。var module1 = (function()var _count = 0;var m1 = function()/

      3、.;var m2 = function()/.;return m1 : m1,m2 : m2;)();使用上面的写法,外部代码无法读取内部的_count变量。console.info(module1._count); /undefinedmodule1就是Javascript模块的基本写法。下面,再对这种写法进行加工。四、放大模式如果一个模块很大,必须分成几个部分,或者一个模块需要继承另一个模块,这时就有必要采用放大模式(augmentation)。var module1 = (function (mod)mod.m3 = function () /.;return mod;)(module1);上面的代码为module1模块添加了一个新方法m3(),然后返回新的module1模块。五、宽放大模式(Loose augmentation)在浏览器环境中,模块的各个部分通常都是从网上获取的,有时无法知道哪个部分会先加载。如果采用上一节的写法,第一个执行的部分有可能加载一个不存在空对象,这时就要采用宽放大模式。var module1 = ( function (mod)/.return mo

      4、d;)(window.module1 | );与放大模式相比,宽放大模式就是立即执行函数的参数可以是空对象。六、输入全局变量独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。为了在模块内部调用全局变量,必须显式地将其他变量输入模块。var module1 = (function ($, YAHOO) /.)(jQuery, YAHOO);上面的module1模块需要使用jQuery库和YUI库,就把这两个库(其实是两个模块)当作参数输入module1。这样做除了保证模块的独立性,还使得模块之间的依赖关系变得明显。这方面更多的讨论,参见Ben Cherry的著名文章JavaScript Module Pattern: In-Depth。这个系列的第二部分,将讨论如何在浏览器环境组织不同的模块、管理模块之间的依赖性。(完)文档信息 版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 原文网址: 最后修改时间:2012年11月29日 19:37相关文章 2013.01.14: Javascript 严格模式详解 一、概述

      5、 除了正常运行模式,ECMAscript 5添加了第二种运行模式:严格模式(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 2013.01.02: 反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux 一、自由软件基金会的呼吁 功能链接 前一篇: 贝叶斯推断及其互联网应用(三):拼写检查 后一篇:Javascript模块化编程(二):AMD规范 更多内容请访问:首页 档案 IT技术 窗体顶端站内搜索: 窗体底端 Feed订阅: 留言(22条)greatghoul 说: 很简单的简单,很容易就看懂了,谢谢好文。2012年10月26日 09:19 | 档案 | 引用 CJ 说: 赶紧写下一篇。JavaScript AMD : https:/ : 还有SeaJS : http:/seajs.org/2012年10月26日 10:44 | 档案 | 引用 dulao5 说: 建议写写 Common JavaScript , 以及玉伯的 SeaJS : http:/seajs.org/2012年10月26日 13:10 | 档

      6、案 | 引用 nakseuksa 说: 三,四,五,六的括号是不是错了?2012年10月26日 14:14 | 档案 | 引用 nakseuksa 说: 上面链接里的例子如下:(function () / . all vars and functions are in this scope only/ still maintains access to all globals();和一峰给的代码的“()”的用法不一样。请问这两种写法有什么区别咧?2012年10月26日 14:26 | 档案 | 引用 nakseuksa 说: 打开jQuery源码,首先你会看到这样的代码结构:(function( window, undefined ) / jquery code)(window);1. 这是一个自调用匿名函数。什么东东呢?在第一个括号内,创建一个匿名函数;第二个括号,立即执行2. 为什么要创建这样一个“自调用匿名函数”呢?通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个JS框架必须支持的功 能,jQuery被应用在

      7、成千上万的JavaScript程序中,必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。3. 匿名函数从语法上叫函数直接量,JavaScript语法需要包围匿名函数的括号,事实上自调用匿名函数有两种写法:(function() console.info( this );console.info( arguments );( window ) );-(function() console.info( this );console.info( arguments );)( window );2012年10月26日 14:30 | 档案 | 引用 liveM 说: 想了解一下 AMD module2012年10月26日 22:10 | 档案 | 引用 xiaotaostory 说: 大爱阮兄的js文章!果断分享之!2012年10月27日 08:41 | 档案 | 引用 王虎 说: 思路清晰,简单易懂。2012年10月28日 11:24 | 档案 | 引用 Z. 说: 那个,我觉得现在的javascript挺好的。也可以实现模块、类啊。就像汇编也可以做出来各种样式一样。20

      8、12年10月28日 18:52 | 档案 | 引用 ctx2002 说: 想问一问阮兄,javascript 适合编写长时间运行的程序吗?我以前写过一个javascript的长时间运行的程序,但用户反应,程序运行几个小时后,系统内存会不够。我查了task manager,发现长时间在浏览器中运行javascript程序会导致内存泄漏。不知阮兄遇到过这样的问题没有。根据我上网搜查的结果显示,这可能是浏览器的问题。我一直没有找到原因,不知道现在怎么样了。还有,在你编写大型的javascript程序,会出现内存泄漏的情况吗?2012年10月29日 08:55 | 档案 | 引用 王金平 说: 简洁、清晰、透彻2012年10月29日 09:34 | 档案 | 引用 welpher.yu 说: 嗯,已经用了很长时间了2012年10月29日 11:30 | 档案 | 引用 陈三石 说: 你好我是一个菜鸟 为什么第三步 使用立即执行函数写法 可以保护私有变量不被改变2012年10月31日 11:22 | 档案 | 引用 jz 说: 在放大模式中,可以通过给传入的module进行扩展,从而实现“继承”,如果想扩展module的私有方法呢?2012年10月31日 14:00 | 档案 | 引用 artwl 说: 通俗易懂,不错2012年10月31日 20:53 | 档案 | 引用 踏雪无痕 说: 这个不错,收藏了2012年11月 1日 21:48 | 档案 | 引用 張旭 说: 如果使用 coffee-script 是不是就不用管這些了?2012年11月 8日 15:15 | 档案 | 引用 lds 说: 引用張旭的发言:如果使用 coffee-script 是不是就不用管這些了?一样的2012

      《Javascript模块化编程》由会员鲁**分享,可在线阅读,更多相关《Javascript模块化编程》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.