首页
学习
活动
专区
工具
TVP
发布

AMD规范演化

对于web项目来说,打交道不仅仅有后台,前台页面也是少不了,而前台页面js也常常是我们后台程序员必须要使用语言, 今天说下项目中js组织方式。...上面的方法解决方法被覆盖问题,但没有解决模块化依赖问题,这个问题解决就要靠我们下面要说AMD规范。...AMD模块开发规范 上面模块话开发虽然解决js方法覆盖问题,但js依赖问题仍然存在,解决这个问题终极方案就是AMD规范。...AMD规范就是其中比较著名一个,全称是Asynchronous Module Definition,即异步模块加载机制。...从它规范描述页面看,AMD很短也很简单,但它却完整描述了模块定义,依赖关系,引用关系以及加载机制。

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

详解AMD规范

AMD规范只定义了一个函数 "define",它是全局变量。模块通过 define 函数定义在闭包中,格式如下: define(id?: String, dependencies?...如果提供了该参数,模块名必须是“顶级”和绝对(不允许相对名字)。 模块名格式:模块名用来唯一标识定义中模块,它们同样在依赖数组中使用。AMD模块名规范是CommonJS模块名规范超集。...引用如下: 模块名是由一个或多个单词以正斜杠为分隔符拼接成字符串 单词须为驼峰形式,或者".",".." 模块名不允许文件扩展名形式,如".js" 模块名可以为 "相对" 或 "顶级"。...换句话来说,相对名解析为相对于模块名字,并非相对于寻找该模块名字路径。 AMD规范定义了三种特殊依赖关键字。...require模块依赖就是该js文件名字

1.1K20

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

提示 由于CommonJS和AMD都十分流行,但似乎缺少一个统一规范。于是,UMD(通用模块规范)出现了,它可以同时支持这两种风格。...虽然这个模式写法比较难看,但是,它同时兼容了AMD和CommonJS,而且还支持老式全局变量规范。 什么是JS模块化 先想一想,为什么模块很重要?...因此,浏览器端模块,不能采用"同步加载"(synchronous),只能采用"异步加载"(asynchronous)。这就是AMD规范诞生背景。...目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。本系列第三部分,将通过介绍require.js,进一步讲解AMD用法,以及如何将模块化编程投入实战。...jquery.js,相当于默认配置了; 依赖非AMD规范模块如果没用define(...)

2.2K10

关于 CommonJS AMD CMD UMD 规范差异总结

二、AMD (Asynchromous Module Definition) AMD 是 RequireJS 在推广过程中对模块定义规范化产出 AMD异步加载模块。...它模块支持对象 函数 构造器 字符串 JSON等各种类型模块。 适用AMD规范适用define方法定义模块。...Sea.js 则专注于 Web 浏览器端,同时通过 Node 扩展方式可以很方便跑在 Node 环境中。 遵循规范不同。...RequireJS 遵循 AMD(异步模块定义)规范,Sea.js 遵循 CMD (通用模块定义)规范规范不同,导致了两者 API 不同。...UMD先判断是否支持Node.js模块(exports)是否存在,存在则使用Node.js模块模式。 在判断是否支持AMD(define是否存在),存在则使用AMD方式加载模块。

1.4K10

使用requireJS加载不符合AMD规范js文件:shim使用方式和实现原理

一、加载underscore、backbone 理论上,require.js加载模块,必须是按照AMD规范、用define()函数定义模块。,require.js是否能够加载非规范模块呢?...回答是可以。这样模块在用require()加载之前,要先用require.config()方法,定义它们一些特征。...举例来说,underscore和backbone这两个库,都没有采用AMD规范编写。如果要加载它们的话,必须先定义它们特征。shim属性,专门用来配置不兼容模块。...如果暴露出多个全局变量,那么exports可以指定其中任何一个,作为模块返回结果。建议只使用一个全局变量,已减少冲突可能性。...> 控制台中会打出结果 注意,在本地运行需要一个静态服务器(下述为简单Node静态服务器) /* node-static-server.js

1.7K51

js命名规范

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

2.3K30

js代码规范

前言 在js代码开发中,我简单总结出了以下规则,后面会陆续补充并且对规范进行分类。...js代码建议保存到后缀名.js文件中 js代码不建议放在html中,原因有:不能被缓存,会增大网页文件大小,可维护性不高,会影响页面的加载。...js吧任何表达式都当一条简单语句,会导致一些隐性错误。如果自己没加分号,那么js解释器会自动添加分号,按照自己能读懂断句。 9.2 复合语句 也称为语句块,被包在大括号内部。...比如对象 var obj={} ;var arr=[] eval eval是最容易混乱使用js函数,他可以执行内部入参js函数或者表达式,可以直接解析变量。不建议使用 。...判断是否相等时候 采用=== 判断包括类型相等 21. 尽量使用语法严格模式 消除代码之中不友好;代码运行更快 ;保证运行安全 ;为新版本js做好铺垫。 22.

8.8K30

JS规范注释

命令名描述 @param @argument 指定参数名和说明来描述一个函数参数 @returns 描述函数返回值 @author 指示代码作者 @deprecated 指示一个函数已经废弃,...而且在将来代码版本中将彻底删除。...要避免使用这段代码 @see 创建一个HTML链接,指向指定类描述 @version 指定发布版本 @requires 创建一个HTML链接,指向这个类所需指定类 @throws @exception...描述函数可能抛出异常类型 {@link} 创建一个HTML链接,指向指定类。...如果在文件第一个文档块中使用这个标记,则指定该文档块余下部分将用来提供这个文件概述 @class 提供类有关信息,用在构造函数文档中 @constructor 明确一个函数是某个类构造函数

3.3K20

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

考虑到Javascript模块现在还没有官方规范,这一点就更重要了。 目前,通行Javascript模块规范共有两种:CommonJS和AMD。我主要介绍AMD,但是要先从CommonJS讲起。...node.js模块系统,就是参照CommonJS规范实现。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。   ...因此,浏览器端模块,不能采用"同步加载"(synchronous),只能采用"异步加载"(asynchronous)。这就是AMD规范诞生背景。...所以很显然,AMD比较适合浏览器环境。 目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。...本系列第三部分,将通过介绍require.js,进一步讲解AMD用法,以及如何将模块化编程投入实战。 (完)

1.1K60

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

考虑到Javascript模块现在还没有官方规范,这一点就更重要了。 目前,通行Javascript模块规范共有两种:CommonJS和AMD。...node.js模块系统,就是参照CommonJS规范实现。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。   ...因此,浏览器端模块,不能采用"同步加载"(synchronous),只能采用"异步加载"(asynchronous)。这就是AMD规范诞生背景。...所以很显然,AMD比较适合浏览器环境。 目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。...本系列第三部分,将通过介绍require.js,进一步讲解AMD用法,以及如何将模块化编程投入实战。 (完)

1.1K80

前端JS规范

,eslint: quote-props 原因:因为通常来说我们认为这样主观上会更容易阅读,这样会带来代码高亮上提升,同时也更容易被主流 JS 引擎优化 // bad const bad = {...别忘记要显式命名表达式,而不用管名字是否是从包含变量(通常出现在现代浏览器中或者使用 Babel 编译器时候)中推断。这样会消除错误调用堆栈中任何假设。...bar.css' // good import fooSass from 'foo.scss' import barCss from 'bar.css' 迭代器 建议使用 JS 更高优先级函数代替...' 时等于 false, 否则是 true if ([0] && []) { // true // 数组(即使是空数组)也是对象,对象等于true } 分号 Standard 规范是不使用分号...,我建议统一使用分号,代码更加清晰 关于应不应该使用分号讨论有很多,好 JS 程序员应该清楚场景下是一定要加分号,相信你也是名好开发者。

5.2K10

前端开发规范之命名规范、html规范、css规范js规范

本文作者:IMWeb 我饿了 原文出处:IMWeb社区 未经同意,禁止转载 在学习编程时候,每次看到那些整齐规范代码,心里顿时对这个程序员表示点点好感,有时,比如看到自己和朋友写代码时,...那阅读起来就是苦不堪言,所以,一些基本开发规范是必须,是为了自己方便阅读代码,也方便他人阅读修改代码。...文档规范 HTML5文档类型声明:那么,那么就等同于开启了标准模式。浏览器会按照W3C标准解析渲染页面。 脚本加载 说到js和css位置,大家应该都知道js放在下面,css放在上面。...'valid' : 'invalid' ---- JSHint 在js规范中,有很多规范都是样式上规范而不是逻辑上规范,比如尽量使用=== 而不是==,我们可以使用JSHint或者JSLint,Javascript

6.3K10

前端JS代码规范

前言 下面这几点将工作中所踩一些坑简单整理了一下,团队几个人开发,一些默契就比较重要,可以提高开发效率和代码可读性 命名,编码和注释 命名 A.文件夹命名:文件夹、文件命名与命名空间应能代表代码功能...C.Js代码注释console.log和debugger再提交 D.重要函数或者类等都要添加头描述 ? 字符串拼接 应使用数组保存字符串片段,使用时调用join方法。...避免使用+或+=方式拼接较长字符串,每个字符串都会使用一个小内存片段,过多内存片段会影响性能 例一: ? 例二:会影响性能 ?...C.箭头函数使用注意问题: This指向定义者,内部无arguments对象,不能new(因为箭头函数this就是指向定义本身),函数里面不要有太多return D.函数形参不超过7个,超过用数组...Flag为false If,for…in,for…of和使用 A.能用三元运算符就用,减少if嵌套,第一个花括号位于一行结束 ?

5.1K10
领券