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

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模块化开发的理解

Js模块化开发的理解 模块化是一个语言发展的必经之路,其能够帮助开发者拆分和组织代码,随着前端技术的发展,前端编写的代码量也越来越大,就需要对代码有很好的管理,而模块化能够帮助开发者解决命名冲突、管理依赖...描述 模块化开发其实就是封装细节,提供使用接口,彼此之间互不影响,每个模块都是实现某一特定的功能,同时也需要避免全局变量的污染,最初通过函数实现模块,实际上是利用了函数的局部作用域来形成模块。...,开发者通常使用Module设计模式来解决Js全局作用域的污染问题。...CommonJs、AMD、CMD、ES6都是用于模块化定义中使用的规范,其为了规范化模块的引入与处理模块之间的依赖关系以及解决命名冲突问题,并使用模块化方案来使复杂系统分解为代码结构更合理,可维护性更高的可管理的模块..."; // 导入export import m1 from "./1.js"; // 不加{}即导入export default import {c} from "./1.js"; /

2.1K60

js 模块化发展

外部依赖定义 (2007): 这种定义方式在 cocos2d-js 开发中普遍使用,其核心思想是将依赖抽出单独文件定义,这种方式不利于项目管理,毕竟依赖抽到代码之外,我是不是得两头找呢?...依赖注入 (2009): 就是大家熟知的 angular1.0,依赖注入的思想现在已广泛运用在 react、vue 等流行框架中。但依赖注入和解决模块化问题还差得远。...正是这一步给前端开发无疑带来了诸多的不便,尤其是现在我们开发过程中经常为了优化这个工具带了很多额外的成本。 从 CommonJS 之前其实都只是封装,并没有一套模块化规范,这个就有些像类与包的概念。...有了 ES2015 Modules 之后,JS 开发者终于可以像 Java 开始者十年前一样使用一致的方式愉快的互相引用模块。...按照文中的说法,99 年也就是 4 年后开始出现了模块化的需求。如果只有几行代码用模块化是扯,初始的 web 开发业务逻辑都写在 server 端,js 的作用小之又小。

2.1K20

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

什么是模块化模块化开发就是封装细节,提供使用接口,彼此之间互不影响,每个模块都是实现某一特定的功能。...——《软件工程》 在模块化编程中,开发者将程序分解成离散功能块(discrete chunks of functionality),并称之为模块。...无模块化时代 最初,大家只是把项目中的功能,以文件为单位进行划分;这么干的结果是.....所有的变量、函数都暴露在全局作用域;多人协作开发时,极易出现命名冲突,也容易为了避免命名冲突,硬造一些稀奇古怪的名字...传统模块化阶段 这一阶段,WEB 开发人员主要是利用 JS 语言的闭包、原型、函数作用域等特性,减少对全局命名空间的污染;方式方法各有不同,但结果都差不多,比较混乱... 3.1....CommonJS是针对服务器端(非浏览器环境)的JavaScript开发,是Node.js的默认模块化规范; (2).

1.8K10

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

JS 模块化历史简介

对于 JavaScript 来说,模块化是一个相对现代的概念,这篇文章会带你在 JavaScript 的世界里快速浏览模块化的历史进程~ Script 标签和闭包 在早些年间,JavaScript 就是直接写在...,它让开发者可以将模块放在单独的文件中,并且不污染全局作用域。...当然 IIFE 也有缺点,它并没有一个明确的依赖树,这使得开发者只能自己确保 JS 文件的加载顺序。...诚然,npm 主要服务于 CommonJS 模块和 JavaScript 包,由于简单的模块化语法和可复用性,大量 Node.js 和 web 浏览器的包出现在 npm 上,npm 也成为世界上最大的包管理器...ES6 规范中包含了一个原生的模块化系统,一般称之为 ECMAScript Modules(ESM)。

2.2K20

面向对象思想总结 新手如何理解JS面向对象开发

一、面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别,作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应该分析这个问题里面有哪些类和对象...三、面向对象的设计思想 面向对象的基本思想是,从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式。...新手如何理解JS面向对象开发? 今天有时间讲讲我对面向对象的理解跟看法,尽量用通俗的语言来表达,多多指教!...如今前端开发已经越来越火了,对于前端开发的要求也是越来越高了,在面试中,经常有面试官会问:你对JS面向对象熟悉吗? 其实,也就是相当于在问你,在工作中有没有用过面向对象开发?...那么JS就给出了构造函数这个模式用来解决从原型对象去生成实例,使用了this变量,new运算符。 先不上例子,先说说为什么构造函数能解决这个问题。

1.8K20

模块化的核心思想──页面重构中的模块化设计(四)

模块化的核心思想──页面重构中的模块化设计(四) 由 Ghostzhang 发表于 2010-05-12 15:48 有不少同学觉得前面的内容过于简单了,对于 样式的作用域的分类 、 栏目级作用域...下面就一起进入这个系列真正的主题——“模块化”吧。 早在Qzone4.0的页面架构中已经在项目中开始摸索提高代码复用的方法,只不过当时并没有很清晰的认识到“模块化”这个思想。...首先来了解下页面重构中模块化的核心思想: 将HTML和CSS通过一定的规则进行分类、组合,以达到特定HTML、CSS在特定范围内最大程度的复用。...下面讲下我的方法,从前面我们学到的样式作用域及模块化的核心思想,我们可以把样式进行一个分类,像这样: .mode-a{/* 定义一个模块 */} .type-a{/* 模块中的差异化定义 */} .mode-name...效果展示 也有同学主张用ID去表示“模块名”,我认为这种方式扩展性比较差,而且很容易与开发的ID冲突,不过也不失为一个方法。

39540

JS模块化和使用

JS模块化和使用 很久以前就知道js模块化开发可以使用require.js和sea.js,就一直没去看看。...什么是模块化 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。...这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。...这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的。目前这些规范的实现都能达成浏览器端模块化开发的目的。...RequireJS 和 Sea.js 都是模块加载器,倡导模块化开发理念,核心价值是让 JavaScript 的模块化开发变得简单自然。

1.6K20

Js模块化导入导出

Js模块化导入导出 CommonJs、AMD、CMD、ES6都是用于模块化定义中使用的规范,其为了规范化模块的引入与处理模块之间的依赖关系以及解决命名冲突问题,并使用模块化方案来使复杂系统分解为代码结构更合理...// 1.js var a = 1; var b = function(){ console.log(a); } module.exports = { a: a, b: b...Module Definition规范,是浏览器端的模块化解决方案,CommonJS规范引入模块是同步加载的,这对服务端不是问题,因为其模块都存储在硬盘上,可以等待同步加载完成,但在浏览器中模块是通过网络加载的...--> CMD CMD通用模块定义,是SeaJS在推广过程中对模块定义的规范化产出,也是浏览器端的模块化异步解决方案,CMD和AMD的区别主要在于: 对于依赖的模块,AMD是提前执行(相对定义的回调函数..."; // 导入export import m1 from "./1.js"; // 不加{}即导入export default import {c} from "./1.js"; /

2.9K20

前端模块化开发--Node基础&&WebPack模块化开发

一、Node 开发 1、模块化开发 定义统一的方法:function.js javascript exports.sum = function sum(a, b) { return a + b;...registry.npm.taobao.org/ 全局下载 shell npm install xxx -g 运行工程 Code 如果我们想运行某个工程,则使用run命令 如果package.json中定义的脚本如下 dev是开发阶段测试运行...全局安装 shell npm install webpack ‐g npm install webpack‐cli ‐g 快速入门 1、js打包 创建src文件夹,创建bar.js javascript.../dist'), filename: 'bundle.js' } }; 以上代码的意思是:读取当前目录下src文件夹中的main.js(入口文件)内容,把对应的 js文件打包,...打包后的文件放入当前目录的dist文件夹下,打包后的js文件名为bundle.js 执行编译命令 Code webpack 创建index.html ,引用bundle.js html <html

86630
领券