接着上一篇“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. spring框架内置笔记本

    ◆基本介绍 目的:解决企业应用开发的复杂性 特征:使用主JavaBean更换EJB,它提供了许多其他的企业应用 范围:随你Java应用 Spring 框架是一个分层架构.由 7 个定义良好的模块组成. ...

  2. OBIEE SampleAppv406 自己主动启动配置

    SampleApp 一个简短的引论: SampleApp这是一个一站式服务,几乎证明OBIEE不管顶的特征可想而知. 它安装了大量的应用(数据库,OBIEE,的Endeca.TimesTen的.Ess ...

  3. 【C++】智能指针auto_ptr简单的实现

    //[C++]智能指针auto_ptr简单的实现 #include <iostream> using namespace std; template <class _Ty> c ...

  4. 我的MYSQL学习心得(二)

    原文:我的MYSQL学习心得(二) 我的MYSQL学习心得(二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL ...

  5. OWIN轻量型框架介绍

    OWIN轻量型框架介绍 阅读目录 引言 框架的特色 如何启动 各项功能 静态路由的3种写法 伪静态路由的支持 处理Form表单提交的文件 流式处理Post请求的数据 多种请求类型自动识别 响应处理 请 ...

  6. Eclipse UML小工具AmaterasUML的配置和使用

    AmaterasUML是个人认为最好用的Eclipse UML插件,能够通过拖拽Java源文件,轻松生成类图结构.同一时候支持活动图.时序图和用例图. 它的官方下载地址是:http://sourcef ...

  7. 两种计算和输出n内5要么9除尽互惠

    #include<stdio.h> int main() { int i=0,n=0; float fSum=0; scanf("%d", &n); for ( ...

  8. iOS开发分析&quot;秘密&quot;App内容页面的效果(两)

    @我前几天写的"秘密"的Cell制品的效果,想要的效果还是有差距,并且扩展性非常不好,于是重写封装,把总体视图都放到scrollView中,基本是和secret app 一模一样的 ...

  9. opengl微开发之1-从零開始

    对OpenGL有一点了解之后,如今開始真正编写代码. 今天的内容: 使用FreeGLUT创建OpenGL的上下文环境 初始化GLEW 创建一个OpenGL的的模板范例 第一步: 一个OpenGL的上下 ...

  10. CSDN博客频道维护公告

    各位亲爱的用户:        为了给大家提供更稳定的使用环境,2014年4月23日23点至04月24日1点(本周四凌晨)博客频道server将进行维护,维护期间不能正常訪问.给大家带来不便,敬请广大 ...