接着上一篇“Javascript模块化编程之Why”说起,Javascript担子重了之后程序也就复杂了。在大把语言都模块化编程的形势下,Javascript也不可能袖手旁观啊,毕竟这是一条经过实践检验的道路。C++有namespace,Java有包,但Javascript有什么呢?

现在满大街都是Javascript模块化编程相关的文章,一方面说明Javascript的春天到了,另一方面则充分说明Javascript模块化编程不是那么容易的事,不信你看看C++和Java等语言模块化编程的文章就知道了。难道没有namespace和包这些机制就真的这么困难吗?如果仅仅是没有这些,还真没有那么困难。

相信很多人学习编程都是从C语言开始的,但实际工作中,只有少数人使用C语言,更多的是使用C++,Java等面向对象的语言。个人没有对语言做深入的分析,只是实际工作中用面向对象貌似更容易解决复杂问题。相信大家也差不多这样的感觉。在尝到面向对象的甜头后,你会爱上它的。不幸的是Javascript语言同C语言一样,在语言层面上,没有真正的类,要不然也不会出现prototype.js这类基础库了。

没有真正的类意味着什么呢?最直接的就是无法在语言层面控制哪些是私有的,哪些是公有的。对于所有的外部模块而言,都是公有的。因为这个原因你会看到在很多Javascript的代码中,存在许多以"_"开始的变量名,这表示什么意思呢?这是一种命名规范所要求的,私有变量名前面加"_"前缀,这类变量不能被外部模块访问。虽然这种限制不怎么靠谱,但也只能这样了。没有可见性限制,会让模块的独立性遇到很大的挑战。而要处理这些问题,就不那么简单了。

连真正的类都不存在,更不用说其他方面了,更进一步说,模块化编程困难的原因主要归根于Javascript语言的抽象层次太低了,这样必然会导致重复利用率不高。对于模块化编程而言,这自然不是什么好事。虽然面临各种各样的困难,但也难不住高智商的人类啊,办法总是有的。C语言不一样可以玩出面向对象,玩出操作系统嘛!对C语言这方面有兴趣的请前往google,我这暂且只说Javascript,怎么把它玩出对象,玩出模块化呢?

欲知后事如何,请看下次分解!

Javascript模块化编程之难处的更多相关文章

  1. Javascript模块化编程(三):require.js的用法

    Javascript模块化编程(三):require.js的用法 原文地址:http://www.ruanyifeng.com/blog/2012/11/require_js.html 作者: 阮一峰 ...

  2. Javascript模块化编程(二):AMD规范

    Javascript模块化编程(二):AMD规范   作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_d ...

  3. Javascript模块化编程(一):模块的写法

    Javascript模块化编程(一):模块的写法 作者: 阮一峰 原文链接:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html ...

  4. Javascript模块化编程(二):AMD规范(转)

    这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要 ...

  5. Javascript模块化编程(一):模块的写法(转)

    随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...

  6. Javascript模块化编程(二):AMD规范 作者: 阮一峰

    声明:转载自阮一峰的网络日志 这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可 ...

  7. Javascript模块化编程(一):模块的写法 作者: 阮一峰

    声明:转载自阮一峰的网络日志 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理. ...

  8. Javascript模块化编程之路——(require.js)

    转自:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html Javascript模块化编程(一):模块的写法 随着网站逐渐变成&q ...

  9. Javascript模块化编程(一):模块的写法 (转载 学习中。。。。)

    转载地址:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html 阮一峰 大神:http://www.ruanyifeng.com/ ...

随机推荐

  1. BestCoder-Round#33

    写在前面 这是我第一次做BestCoder, 熟悉的外观BestCoder模式. BC上不仅能看到英文, 背部Chinese view是中文题目 交的次数是会影响得分的. 所以有了把握再交. 至少例子 ...

  2. Asp.Net超时问题汇总

    在数据库或者请求操作时,如果选择的时间段过短或操作数据量过大,就会遇到"请求超时"的的问题,网络上提供很多解决方案,但普遍不完善,根据个人经验及参考网络解决方案,先将其汇总如下: ...

  3. 你知道OneNote的OCR功能吗?office lens为其增大威力,中文也识别

    原文:[原创]你知道OneNote的OCR功能吗?office lens为其增大威力,中文也识别 OneNote提供了强大的从图片中取出文字的功能,大家只要装上了桌面版OneNote(本人用的2013 ...

  4. 【百度地图API】小学生找哥哥——小学生没钱打车,所以此为公交查询功能

    原文:[百度地图API]小学生找哥哥--小学生没钱打车,所以此为公交查询功能 任务描述: 有位在魏公村附近上小学的小朋友,要去北京邮电大学找哥哥.他身上钱很少,只够坐公交的.所以,百度地图API快帮帮 ...

  5. Redis源代码分析(二十七)--- rio制I/O包裹

    I/O每个操作系统,它的一个组成部分.和I/O业务质量,在一定程度上也影响了系统的效率. 今天,我在了解了Redis中间I/O的,相同的,Redis在他自己的系统中.也封装了一个I/O层.简称RIO. ...

  6. PHP的MySQL扩张:MySQL数据库概述

    资源:http://www.ido321.com/1023.html 一.SQL:结构化查询语言 SQL(Structured Query Language)是高级的非过程化变成语言.专门用于查询和改 ...

  7. pyqt学习总结

    一.学习来由: 近期一段时间,应朋友的须要,完毕一款抓取软件.一般而言,python是我比較熟悉的语言,又有丰富的抓取和解析模块,所以果断选择之. 而这远远不是重点,后台程序在工作做常常写,所以比較熟 ...

  8. Javascript规范

    本文地址: http://www.hicss.net/evolve-your-javascript-code/ 方才在程序里看到一段JS代码,写法极为高明,私心想着若是其按照规范来写,定可培养对这门语 ...

  9. (C语言)共用体union的使用方法举例

    曾经在学校学习C语言的时候一直搞不懂那个共用体union有什么用的.工作之后才发现它的一些妙用,现举比例如以下: 1. 为了方便看懂代码. 比方说想写一个3 * 3的矩阵,能够这样写: [ 注:以下用 ...

  10. MonkenRunner通过HierarchyViewer定位控件的方法和建议(Appium/UIAutomator/Robotium姊妹篇)

    1. 背景 在使用MonkeyRunner的时候我们经常会用到Chimchat下面的HierarchyViewer模块来获取目标控件的一些信息来辅助我们测试,但在MonkeyRunner的官网上是没有 ...