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

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

概述 require.js是各种网络APP中非常常见JS依赖库,它其实不仅仅是个模块加载器那么简单。它背后蕴含了一个非常重要设计,也就是JS模块化编程。...模块化是任何一个编程语言都会支持设计,通过模块化能够将一个重要问题拆分成一个个小问题,并且模块与模块之间不关联(或者弱关联),减小程序开发难度。...最开始时候,每个JS框架都会设计自己模块加载方案,每次使用不同JS框架就得理解不同模块加载方案。...这样,如果大家都约定使用同样模块化规范设计,从一个框架到另外一个框架就没有成本,并且可以互相加载引入。 这里通过一个计算幂运算例子,详细论述require.js使用。 2....参考 【第67期】ES6 系列之模块加载方案 Javascript模块化编程(三):require.js用法 JavaScript模块化编程

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

模块化编程之require.js

首先,加载时候,浏览器会停止网页渲染,加载文件越多,网页失去响应时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例1.js要在2.js前面),依赖性最大模块一定要放到最后加载...require.js诞生,就是为了解决这两个问题:   (1)实现js文件异步加载,避免网页失去响应;   (2)管理模块之间依赖性,便于代码编写和维护。...require.js加载: 使用require.js第一步,是先去官方网站下载最新版本。 下载后,假定把它放在js子目录下面,就可以加载了。...加载require.js以后,下一步就要加载我们自己代码了。假定我们自己代码文件是main.js,也放在js目录下面。...那么,只需要写成下面这样就行了: data-main属性作用是,指定网页程序主模块

1.6K10

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

这个系列第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战。 我采用是一个非常流行库require.js。 一、为什么要用require.js?...首先,加载时候,浏览器会停止网页渲染,加载文件越多,网页失去响应时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例1.js要在2.js前面),依赖性最大模块一定要放到最后加载...require.js诞生,就是为了解决这两个问题:   (1)实现js文件异步加载,避免网页失去响应;   (2)管理模块之间依赖性,便于代码编写和维护。...二、require.js加载 使用require.js第一步,是先去官方网站下载最新版本。 下载后,假定把它放在js子目录下面,就可以加载了。   ...加载require.js以后,下一步就要加载我们自己代码了。假定我们自己代码文件是main.js,也放在js目录下面。

3K60

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

首先,加载时候,浏览器会停止网页渲染,加载文件越多,网页失去响应时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例1.js要在2.js前面),依赖性最大模块一定要放到最后加载...require.js诞生,就是为了解决这两个问题:   (1)实现js文件异步加载,避免网页失去响应;   (2)管理模块之间依赖性,便于代码编写和维护。...二、require.js加载 使用require.js第一步,是先去官方网站下载最新版本。 下载后,假定把它放在js子目录下面,就可以加载了。   ...加载require.js以后,下一步就要加载我们自己代码了。假定我们自己代码文件是main.js,也放在js目录下面。...三、主模块写法 上一节main.js,我把它称为"主模块",意思是整个网页入口代码。它有点像C语言main()函数,所有代码都从这儿开始运行。 下面就来看,怎么写main.js

2.1K90

模块化编程之require.js

首先,加载时候,浏览器会停止网页渲染,加载文件越多,网页失去响应时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例1.js要在2.js前面),依赖性最大模块一定要放到最后加载...require.js诞生,就是为了解决这两个问题:   (1)实现js文件异步加载,避免网页失去响应;   (2)管理模块之间依赖性,便于代码编写和维护。...require.js加载: 使用require.js第一步,是先去官方网站下载最新版本。 下载后,假定把它放在js子目录下面,就可以加载了。...加载require.js以后,下一步就要加载我们自己代码了。假定我们自己代码文件是main.js,也放在js目录下面。...那么,只需要写成下面这样就行了: data-main属性作用是,指定网页程序主模块

1.7K50

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

虽然这个模式写法比较难看,但是,它同时兼容了AMD和CommonJS,而且还支持老式全局变量规范。 什么是JS模块化 先想一想,为什么模块很重要?...目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。本系列第三部分,将通过介绍require.js,进一步讲解AMD用法,以及如何将模块化编程投入实战。...首先,加载时候,浏览器会停止网页渲染,加载文件越多,网页失去响应时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例1.js要在2.js前面),依赖性最大模块一定要放到最后加载...require.js加载 使用require.js第一步,是先去官方网站下载最新版本,下载后,假定把它放在js子目录下面,就可以加载了。...参考:http://www.ruanyifeng.com/blog/2012/11/require_js.html ES6模块化 import、</script

2.2K10

js模块化编程之彻底弄懂CommonJS和AMDCMD!(转)

JS模块规范(CommonJS,AMD,CMD),如果你听过js模块化这个东西,那么你就应该听过或CommonJS或AMD甚至是CMD这些规范咯,我也听过,但之前也真的是听听而已。 ...Titanium或Adobe AIR) 2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程。...这标志"Javascript模块化编程"正式诞生。...因为老实说,在浏览器环境下,没有模块也不是特别大问题,毕竟网页程序复杂性有限;但是在服务器端,一定要有模块,与操作系统和其他应用程序互动,否则根本没法编程。...加载require.js以后,下一步就要加载我们自己代码了。假定我们自己代码文件是main.js,也放在js目录下面。

1.6K30

js 模块化发展

但文章中 JS 模块化还不等于前端工程模块化,Web 界面是由 HTML、CSS 和 JS 三种语言实现,不论是 CommonJS 还是 AMD 包括之后方案都无法解决 CSS 与 HTML 模块化问题...Http 2.0 对 js 模块化推动 js 模块化定义再美好,浏览器端支持粒度永远是瓶颈,http 2.0 正是考虑到了这个因素,大力支持了 ES 2015 模块化规范。...说到这里,还想顺便提一下最近流行起来响应式编程(RxJS),响应式编程中有一个很核心概念就是 observable,也就是 Rx 中流(stream)。...js 模块化矛头已经对准了 css 与 html,这两位元老也该向前卫 js 学习学习了。...未来 css、html 模块化会自立门户,还是赋予 js 更强能力,让两者模块化依附于 js 能力呢?

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 模块化极简史

——《软件工程》 在模块化编程中,开发者将程序分解成离散功能块(discrete chunks of functionality),并称之为模块。...传统模块化阶段 这一阶段,WEB 开发人员主要是利用 JS 语言闭包、原型、函数作用域等特性,减少对全局命名空间污染;方式方法各有不同,但结果都差不多,比较混乱... 3.1....CommonJS是针对服务器端(非浏览器环境)JavaScript开发,是Node.js默认模块化规范; (2)....import): 总结一下 传统模块化手段:通过JS闭包、对象、自执行函数等语言特性,避免模块间命名冲突,提高模块内聚性,但无统一编程标准,也无法把模块间依赖关系描述清晰; CommonJS...:Node.js让JavaScript延伸到“服务端”领域,促使针对“服务端”JavaScript静态模块化规范CommonJS诞生,但此规范“同步阻塞式”模块加载策略不适用于浏览器端环境; AMD

1.8K10

Js模块化开发理解

Js模块化开发理解 模块化是一个语言发展必经之路,其能够帮助开发者拆分和组织代码,随着前端技术发展,前端编写代码量也越来越大,就需要对代码有很好管理,而模块化能够帮助开发者解决命名冲突、管理依赖...描述 模块化开发其实就是封装细节,提供使用接口,彼此之间互不影响,每个模块都是实现某一特定功能,同时也需要避免全局变量污染,最初通过函数实现模块,实际上是利用了函数局部作用域来形成模块。...,开发者通常使用Module设计模式来解决Js全局作用域污染问题。...CommonJs、AMD、CMD、ES6都是用于模块化定义中使用规范,其为了规范化模块引入与处理模块之间依赖关系以及解决命名冲突问题,并使用模块化方案来使复杂系统分解为代码结构更合理,可维护性更高可管理模块...--> CMD CMD通用模块定义,是SeaJS在推广过程中对模块定义规范化产出,也是浏览器端模块化异步解决方案,CMD和AMD区别主要在于: 对于依赖模块,AMD是提前执行(相对定义回调函数

2.1K60

js模块化例子

最近在看一本书,里面提到js模块化,觉得很有必要,所以记录下来 Game.js /** * This is the main class that handles the game life cycle..._canvas.height); }; ---- boardRenderer.js /** * 这个类负责绘制,棋盘,球 * @param context the 2d context to draw..._rows; }; ---- boardModel.js /** * 这个类是负责保存/验证/返回当前游戏状态 * 如当前玩家是谁、每个单元格放是什么球、 * 是不是谁赢了 * @param...this.reset(); } /** * 0代表单元格为空,1代表单元格有红色球,2代表单元格有绿色球 * 因为怕以后忘记这些数字代表什么,干脆把数字存到常量里,代码看起来易懂, * 但是这么多字,前端js...* ps.变量名全大写表示这是常量,这是一个js程序员之间约定,表达为 CAPITAL_CASED。

4.6K20

Python|模块化编程

引言 模块化编程具备很多优点,尤其在复杂项目上体现更为明显。 Python模块化编程有助于开发者统筹兼顾和分工协作,并提升代码灵活性和可维护性,是编程开发者不可或缺一项重要工具。...Python模块 在简单Python编程中,我们所保存以.py为后缀代码文件(如hello.py),称为源文件(source file)。...但是随着深入学习和项目变得复杂起来时,这种做法将无法满足你快速找到你定义函数(functions)或类(classes)具体位置,这时模块化编程思想就有了用武之地。...虽然上述内容是一个虚构项目(与实际网页应用开发有别),但它很好展示了模块化编程思想,把整个项目划分成了独立模块和包,有助于我们对模块化编程理解。...小结 模块化编程应用,有利于我们管理项目中需要变更或重建模块,无需过多修改项目代码,提升项目的可维护性和灵活性;有利于提升我们编程效率,避免重复造车轮尴尬;有利于优化我们项目代码结构,彰显项目的逻辑性

94020

Nim语言模块化编程

前言 Nim支持把一大段程序分成若干个模块 一个模块就是一个源代码文件 每个模块都拥有它自己名称空间 模块化可以起到封装(信息隐藏)和分步编译作用 一个模块可以通过import语句获得另一个模块符号...nim语言允许模块间循环引用, 只有用星号(*)标记顶级符号才会被导出给其他模块。...模块名和文件名相同,模块名命名方式和nim编程语言标识符命名方式相同 编译器编译模块规则如下: 按照import导入顺序,编译模块 如果存在循环引用,那么就只导入顶级符号(已解析符号)...import语句 可以通过import导入一个或多个模块 (导入多个模块的话,只要在import后面跟上模块名字即可,模块名字用逗号隔开) 可以用except排除一个或多个模块中符号 请看下面的示例代码...需要把一个文件拆分成多个文件时候include语句很有用 include fileA, fileB, fileC import语句中模块名 import语句中模块名可以设置别名 import strutils

1.2K70

Byzer 模块化编程

代码片段都难以复用,导致效率低下,难以协作 难以沉淀精细(比如case when片段)或者模块化(比如完整业务逻辑单元,类似一个jar包)业务资产 所以在当面对很复杂业务场景时,如何有效复用...Byzer 很好解决了这方面的问题。除了本篇模块化编程以外,相辅相成还有一个能力,就是模板编程能力: Byzer Man:Byzer 模板编程入门。...版本 Byzer Notebook ,还有 本地版本 Byzer-desktop (基于VsCode), 他们都是以 Notebook 形式提供了对 Byzer 语言支持,对于用户调试、管理和模块化...更多细节参考这篇专门文章: Byzer Man:Byzer 模板编程入门 宏函数使用 Byzer 也支持函数概念,这个函数和 SQL 中函数不同, Byzer 宏函数是对 SQL 代码进行复用...在脚本中引入 Git 托管 Byzer 代码 几乎所有的语言都有模块化管理代码能力,比如 Java jar, Python Pip, Rust crate 等。

94120

C模块化编程

模块化编程也一样,程序核心部分定义好接口,各个模块按照接口定义去实现功能,然后把各个模块挂载到程序上即可,这个有点像Java面向接口编程。如下图: ?...使用C进行模块化编程 用过C语言编程的人都知道C语言是没有接口,所以怎么使用C语言进行模块化编程呢?...从上面的结果可以看到,我们可以注册不同模块来提供不同服务,模块化编程就这样实现了。 Are you kidding me?...C模块化编程的确是这么简单,但是我们可以实现更强大功能:使用动态链接库来实现模块化。...总结 由于模块化编程灵活性和可扩展性非常好,所以很多流行软件也提供模块化特性,如:Nginx、PHP和Python等。而这些软件使用方法与本文介绍大致相同,有兴趣可以查看这些软件实现。

74330

JS 模块化历史简介

对于 JavaScript 来说,模块化是一个相对现代概念,这篇文章会带你在 JavaScript 世界里快速浏览模块化历史进程~ Script 标签和闭包 在早些年间,JavaScript 就是直接写在...这种明确地声明依赖写法让各个模块间依赖都非常清晰,并且反过来促进了模块化发展。 但是 RequireJS 并不是没有缺点。...Node.js 和 CommonJS CommonJS 模块系统是 Node.js 中众多革新一个,也叫 CJS。...诚然,npm 主要服务于 CommonJS 模块和 JavaScript 包,由于简单模块化语法和可复用性,大量 Node.js 和 web 浏览器包出现在 npm 上,npm 也成为世界上最大包管理器...ES6 规范中包含了一个原生模块化系统,一般称之为 ECMAScript Modules(ESM)。

2.2K20
领券