首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS模块化编程规范1——require.js

概述 require.js是各种网络APP中非常常见JS依赖库,它其实不仅仅是个模块加载器那么简单。它背后蕴含了一个非常重要设计,也就是JS模块化编程。...模块化是任何一个编程语言都会支持设计,通过模块化能够将一个重要问题拆分成一个个小问题,并且模块与模块之间不关联(或者弱关联),减小程序开发难度。...这样,如果大家都约定使用同样模块化规范设计,从一个框架到另外一个框架就没有成本,并且可以互相加载引入。 这里通过一个计算幂运算例子,详细论述require.js使用。 2....详论 AMD模块规范听起来很高大上,但实际上并不是很复杂。模块化设计就是为了方便模块之间交互性,那么接口必然是统一而简约,我们只要按照约定规则来使用它即可。 2.1....参考 【第67期】ES6 系列之模块加载方案 Javascript模块化编程(三):require.js用法 JavaScript模块化编程

3.2K10

JS模块化编程以及AMD、CMD规范、Webpack

提示 由于CommonJS和AMD都十分流行,但似乎缺少一个统一规范。于是,UMD(通用模块规范)出现了,它可以同时支持这两种风格。...虽然这个模式写法比较难看,但是,它同时兼容了AMD和CommonJS,而且还支持老式全局变量规范。 什么是JS模块化 先想一想,为什么模块很重要?...目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。本系列第三部分,将通过介绍require.js,进一步讲解AMD用法,以及如何将模块化编程投入实战。...参考:http://www.ruanyifeng.com/blog/2012/11/require_js.html ES6模块化 import、</script...jquery.js,相当于默认配置了; 依赖非AMD规范模块如果没用define(...)

2.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

JS模块化规范总结(面试必备良药)

简介 规范JavaScript模块定义和加载机制,降低了学习和使用各种框架门槛,能够以一种统一方式去定义和使用模块,提高开发效率,降低了应用维护成本。...模块化解决问题: 命名冲突 文件依赖 commonJS 1、模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。...2、模块加载会阻塞接下来代码执行,需要等到模块加载完成才能继续执行——同步加载。 适用场景:服务器环境,nodejs模块规范是参照commonJS实现。.../a.js'], function (moduleA){ console.log(moduleA.a); // 打印出:hello world }); CMD 1、CMD是在AMD基础上改进一种规范...适用场景:浏览器环境,seajs是参照CMD规范实现,requireJS最新几个版本也是部分参照了CMD规范实现。

1.7K20

前端模块化规范

为什么需要模块化模块化规范 模块化可以解决代码之间变量、函数、对象等命名冲突/污染问题,良好模块化设计可以降低代码之间耦合关系,提高代码可维护性、可扩展性以及复用性。...模块化规范作用是为了规范 JavaScript 模块定义和加载机制,以统一方式导出和加载模块,降低学习使用成本,提高开发效率。 2....各种模块化规范细节 2.1 CommonJS CommonJS 主要是 Node.js 使用,通过 require 同步加载模块,exports 导出内容。...在 CommonJS 规范下,每一个 JS 文件都是独立模块,每个模块都有独立作用域,模块里本地变量都是私有的。...模块化与工程化:webpack webpack 同时支持 CommonJS、AMD 和 ESM 三种模块化规范打包。根据不同规范 webpack 会将模块处理成不同产物。

69711

常见JavaScript 模块化规范

一、 常见JavaScript 模块化规范有3种,CommonJS、AMD(异步模块定义)、CMD(公共模块定义) 服务端 :NodeJS 服务:CommonJS规范,新版本Node也可以启用ES6...Module功能 浏览器端:主要使用是AMD规范和CMD规范,现在已经逐步被ES6 Module取代 二、 模块化规范使用 1....CommonJS规范 (1) 每一个文件都是一个模块,每一个模块都有一个独立作用域,文件内变量,函数都是私有的,其他文件不可使用(除非赋值到 global上) (2)每个模块内部,module变量代表当前模块...AMD(Asynchromous Module Definition - 异步模块定义) AMD 是 RequireJS 在推广过程中对模块定义规范化产出 使用 定义模块 define(id?...UMD(AMD和CommonJS糅合) UMD先判断是否支持Node.js模块(exports)是否存在,存在则使用Node.js模块模式。

54120

前端模块化-总结_前端模块化规范

模块化有利于代码拆分和架构上解耦,模块化在服务端领域已经早已成熟,nodejs 也已经支持模块化。 而在浏览器上,js 脚本是异步载入,脚本按照编码顺序依次执行,依赖关系只能按照编码顺序来控制。...object 对象,可是在 index.js 中导出 object 对象并没有发生改变,所以可见 commonjs 规范下模块导出是深克隆。...AMD-require.js 和 CMD-sea.js 聊到 AMD 和 CMD 这两个规范都离不开 require.js 和 sea.js,这是早些年,为了解决浏览器异步加载模块而诞生方案。...AMD规范模块化:用 require.config()指定引用路径等,用define()定义模块,用require()加载模块。...CMD规范模块化:用define()定义模块, seajs.use 引用模块。

56020

模块化服务规范——OSGI

规范和核心部分是一个框架 ,其中定义了应用程序生命周期模式和服务注册。...现在OSGi规范已经用于从移动电话到开源Eclipse(其中包括了与IBMOSGi框架SMF兼容开源版本)。...您可以通过这些容器,把您应用程序劈分为多个模块单元,这样,您就可以更容易地管 理这些模块单元之间交叉依赖关系。 OSGi主要职责就是为了让开发者能够建动态化、模块化Java系统。...因为企业应用模块化程度不高,即Java EE模块化更多地是停留在逻辑概念层面。通常,我们会将企业应用以单个WAR包形式存在,其中内置了当前应用所有的内容,包括.class、.jsp、.js等资源。...5、开发不具备模块化特性,一般企业中项目往往是放到一个工程中,这样造成后果是模块化能力不强,难于维护,越大越不容易维护。

1.5K30

Node基础-CommonJS模块化规范

[安装在全局特点] 1.所有的项目都可以使用这个模块 ->容易导致版本冲突 ->安装在全局模块,不能基于CommonJS模块规范调取使用(也就是不能在JS中通过REQUIRE调取使用) [安装在本地特点...(执行脚本)执行 ->执行脚本时候,会到本地node_modules中bin文件加查找,没有的话,在向NPM安装全局目录下查找 3.NODE入门 NODE本身是基于CommonJS模块规范设计...,所以模块是NODE组成 内置模块:NODE天生提供给JS调取使用 第三方模块:别人写好,我们可以基于NPM安装使用 自定义模块:自己创建一些模块 CommonJS模块化设计思想(AMD/CMD.../ES6 MODULE都是模块设计思想) 1.CommonJS规定,每一个JS都是一个单独模块(模块是私有的:里面涉及值和变量以及函数等都是私有的,和其它JS文件中内容是不冲突) 2....(为了保证性能,减少模块代码重复执行次数) 3. 模块加载顺序,按照其在代码中出现顺序。CommonJS规范加载模块是同步,也就是说,只有加载完成,才能执行后面的操作。

61320

js 模块化发展

1 引言 如今,Javascript 模块化规范非常方便、自然,但这个新规范仅执行了2年,就在 4 年前,js 模块化还停留在运行时支持,10 年前,通过后端模版定义、注释定义模块依赖。...对经历过来的人来说,历史模块化方式还停留在脑海中,反而新上手同学会更快接受现代模块化规范。 但为什么要了解 Javascript 模块化发展历史呢?...原生支持模块化,解决 html 与 css 模块化问题正是以后方向。 再回到 JS 模块化这个主题,开头也说到是为了构建 scope,实则提供了业务规范标准输入输出方式。...Http 2.0 对 js 模块化推动 js 模块化定义再美好,浏览器端支持粒度永远是瓶颈,http 2.0 正是考虑到了这个因素,大力支持了 ES 2015 模块化规范。...目前 html 有自立门户苗头(htmlModules),而 css 迟迟没有改变,社区出现 styled-component 已经用 js 将 css 模块化得很好了,最新 css 规范也支持了与

2.1K20

JS模块化开发价值

模块化方式开发痛苦 (1)命名冲突 起初,我们定义了一个通用功能JS文件,例如 utils.js(其中有一个 each 函数),谁需要谁调用即可 但随着项目和团队越来越大,就会出现问题 小杨在自己...a.js 中也定义了一个 each 函数,这时有人同时引用了 utils.js 和 a.js,冲突就出现了,小杨只好把自己 each函数名改为别的,再通知别人改名了,之后,不同开发人员之间不断出现这类问题...utils.js 其中函数,在文档中明确指出使用 dialog.js时必须要先引入 utils.js 有一个 b.js,使用了 dialog.js,页面中就必须引入多个文件,并且顺序不能错 <script...1)开发人员常忘记引用被依赖文件 2)要使用某个功能时,要引入多个其他文件,最后页面中引用可能会非常多 模块化开发好处 现在已经有了多个JS模块化开发规范和相应具体实现,我们只要选择其中一种,...按照约定来开发,就可以完全避免命名冲突和文件依赖问题 只需关心当前模块本身功能开发,需要其他模块支持时,在模块内调用目标模块即可 模块化开发示例 CMD是比较常用模块化规范,下面就使用CMD方式作为示例

1.6K40

模块化】:JS 模块化极简史

传统模块化阶段 这一阶段,WEB 开发人员主要是利用 JS 语言闭包、原型、函数作用域等特性,减少对全局命名空间污染;方式方法各有不同,但结果都差不多,比较混乱... 3.1....CommonJS Node.js诞生,使JavaScript扩展到了服务器端, 为了让JavaScript在服务器端能跟Java、Phyton一样编写大型程序,于是有了CommonJS模块化规范;...CommonJS是针对服务器端(非浏览器环境)JavaScript开发,是Node.js默认模块化规范; (2)....CommonJS是一种只适用于JavaScript静态模块化规范; 注:只适用于JavaScript,意味着它无法把CSS等前端资源纳入模块化管理范围,但显然CSS也是组成前端模块重要部分; 注:静态模块化规范...:Node.js让JavaScript延伸到“服务端”领域,促使针对“服务端”JavaScript静态模块化规范CommonJS诞生,但此规范“同步阻塞式”模块加载策略不适用于浏览器端环境; AMD

1.8K10

js命名规范

撇开缓存无效不谈,这确实很困难,每当俺找不到正确名称时,这个臭名昭著引用就会在俺脑海中萦绕。...当有人需要快速理解代码时,清晰命名提供了重要上下文,无论他们是在编码、调试还是协助队友——俺不需要问别人用户意思,但俺必须问数据意思。...虽然俺不经常找到最好名字,但俺试图通过遵循一些基本规则来优化俺代码。 使用有意义前缀 虽然这些前缀不是通用,但它们对于在您团队中建立一种共享语言是很好。...使用有意义单词 例如,开发人员通常在默认情况下将变量命名为data,但是让我们检查一下它几个定义: 作为推理、讨论或计算基础事实信息(如测量或统计) 可传输或处理数字形式信息 这些定义可以引用我们处理任何变量...总结 这些规则目标是让我们为未来读者编写代码尽可能有意义。找到适合您上下文规则,如果一个规则弊大于利,就更改或放弃它。

2.4K30

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

这个系列第一部分介绍了Javascript模块基本写法,今天介绍如何规范地使用模块。 (接上文) 七、模块规范 先想一想,为什么模块很重要?...八、CommonJS 2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程。 这标志"Javascript模块化编程"正式诞生。...node.js模块系统,就是参照CommonJS规范实现。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。   ...目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。...本系列第三部分,将通过介绍require.js,进一步讲解AMD用法,以及如何将模块化编程投入实战。 (完)

1.1K80

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

这个系列第一部分介绍了Javascript模块基本写法,今天介绍如何规范地使用模块。 (接上文) 七、模块规范 先想一想,为什么模块很重要?...考虑到Javascript模块现在还没有官方规范,这一点就更重要了。 目前,通行Javascript模块规范共有两种:CommonJS和AMD。我主要介绍AMD,但是要先从CommonJS讲起。...八、CommonJS 2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程。 这标志"Javascript模块化编程"正式诞生。...node.js模块系统,就是参照CommonJS规范实现。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。   ...目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。本系列第三部分,将通过介绍require.js,进一步讲解AMD用法,以及如何将模块化编程投入实战。

1.1K60
领券