在JavaScript模块到底是什么,能用代码具体展现一下吗?
其实上一篇已经写了一段事件模块代码
event = function() {
// do more
return {
bind: function() {},
unbind: function() {},
trigger: function() {}
};
}();
这能代表“模块”吗?这就是一个JS对象啊。原来概念就是这么喊出来的,以为有多么深奥。
是的,JavaScript中模块多数时候被实现为一个对象。这么看来,多数时候我们都写过“模块”(但没有在整个项目中应用模块化思想)。或许每个人写模块的方式(风格)还不同。比如上面的事件模块是一个匿名函数执行,匿名函数中封装了很多代码,最后通过return返回给event变量,这个event就是事件模块的接口。
再比如jQuery,它也是一个匿名函数执行,但它并不返回接口对象。而是将自己暴露给window对象。
(function(window){
// ..
// exports
window.jQuery = window.$ = jQuery;
})(window);
又如SeaJS,它一开始就将接口公开了
/**
* Base namespace for the framework.
*/
this.seajs = { _seajs: this.seajs };
后续就是很多的匿名函数执行给seajs添加很多工具方法。注意,这里的this在浏览器环境指window对象,如果是定位在浏览器中,这个this也可以去掉。就象Ext。
Ext = {
/**
* The version of the framework
* @type String
*/
version : '3.1.0'
};
呃,我们已经看到了四种方式写模块(把jQuery,SeaJS,Ext看成模块,呃很大的模块)。
哪一种更好呢? 哪一种更适合在浏览器端呢?
纯从代码风格上说,是萝卜白菜各有所爱。只要我们运用了“模块化”的思想来开发就行了。
但如果有统一的语法格式来写模块岂不是更好,就不会出现各用各的风格来写模块而使代码乱糟糟。
这就是目前的现状,开发者强烈需要一种统一的方式来写模块(最好是语言内置了)。这时一些组织出现了,最具代表的如CommonJS
,AMD
。此外ECMAScript
也开始着手模块的标准化写法。
无论它们提供什么样的写法,我们需要的仅仅是
1,将一些零散代码封装成一个有用的单元(encapsulate)
2,导出模块的接口API(exports)
3,方便友好引用其它模块(dependency)
下一篇:JavaScript在服务器端的模块化
分享到:
相关推荐
模块开发的不同写法反映了JavaScript模块化演进的过程: 1. **原始写法**:最简单的模块形式,即将一组相关的函数定义在一起。但这种方法容易导致全局命名空间的污染,且模块成员之间的关系不明显。 ```...
Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。 但是,Javascript不是一种模块化编程语言,它不支持”类”(class),更遑论”...
JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的、解释型的编程语言,主要用于增强网页的交互性。这份“JavaScript手册—中文文档”提供了一个全面的JavaScript学习资源,涵盖了从基础语法到高级特性的...
《MooCSS:模块化面向对象的CSS写法详解》 在现代Web开发中,CSS已经从简单的样式语言发展为复杂、高效的样式管理系统。MooCSS(Module-Oriented Object CSS)是一种基于模块化和面向对象思想的CSS编写方式,旨在...
在Node.js中,模块是代码组织的基本单位,它允许我们将应用程序的不同部分封装起来,以便于重用、管理和维护。Node.js的模块系统是基于CommonJS规范实现的,它提供了加载和导出模块的功能。让我们深入了解一下如何在...
#### JavaScript模块的写法 1. **原始写法** - 这种写法简单,将功能相关的函数和变量放在一起,但其缺点是容易造成全局变量污染,无法保证不与其他模块冲突。 2. **对象写法** - 把函数和变量封装在一个对象...
### JavaScript模块化编程库Require.js的使用方法 #### 引言 随着Web应用的日益复杂,传统的JavaScript开发方式已无法满足高效开发与维护的需求。在这样的背景下,Require.js作为一种先进的JavaScript模块加载器,...
然而,在淘宝SDK(Software Development Kit)的早期版本中,实现一个模板支持多个风格往往需要采取非模块化的写法。本篇文章将深入探讨这种“淘宝SDK一个模板多个风格-模块化前的写法”,并分析其工作原理。 首先...
《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...
然而,在大型项目中,随着应用模块的增多,Vuex的状态管理可能会变得复杂且难以维护。为了优化这种情况,开发者通常会采用按需加载策略,以减少不必要的代码体积和提升应用性能。"优化vuex的状态流写法按需加载每个...
在JavaScript中,`(function(){})()` 这种写法被称为**立即执行函数表达式**(Immediately Invoked Function Expression,简称IIFE)。它是一种特殊的函数调用方式,其特点是在定义一个函数的同时立即执行该函数。 ...
本文详细介绍了JavaScript中函数的写法,并通过具体的实例代码,帮助读者理解函数的定义、参数的使用以及函数的返回值等核心概念。以下是对本文内容的知识点详细阐述: 1. JavaScript函数的基本写法 JavaScript函数...
本篇详解将介绍几种JavaScript的另类写法,涵盖了匿名函数、取整技巧、条件判断、字符串拼接、模块定义和继承机制等方面。这些技巧可以帮助开发者优化代码,并在团队中形成统一的代码规范。 首先,JavaScript中的...
模块化编程是大型项目中必不可少的,JavaScript提供了CommonJS和ES6的模块系统,以更清晰的方式组织代码和管理依赖。 面向对象编程(OOP)在JavaScript中通过构造函数、原型链和类来实现。构造函数用于创建具有特定...
最后,现代JavaScript开发中广泛使用模块化编程。ES6引入了import和export关键字,允许开发者进行模块化编程。例如: ```javascript // someModule.js export const a = 1; export function b() { // ... } // ...
最后,在介绍自定义模块的写法时,有必要强调Node.js社区推崇的“约定优于配置”的原则,例如按照惯例创建一个`index.js`作为模块的入口文件,或者在`package.json`文件中指定模块的入口文件。这些约定简化了模块的...
Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。 但是,Javascript不是一种模块化编程语言,它不支持"类"(class),更遑论...
JavaScript支持函数表达式(匿名函数和具名函数)以及箭头函数的写法。 4. **数组和对象**:数组是有序的数据集合,可以存储不同类型的元素。对象是键值对的集合,键通常是字符串,值可以是任意类型。JavaScript还...
此外,函数式编程的思想和实践在JavaScript中也有着重要的地位,书中的内容可能会涉及这方面的知识。 面向对象编程在JavaScript中占据着重要位置。虽然JavaScript不是一种传统的面向对象语言,但它提供了原型继承和...