简单的说一下AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。

require.js作用

  • 实现js文件的异步加载,避免网页失去响应;
  • 管理模块之间的依赖性,便于代码的编写和维护。

首先引入requireJS文件,并在script标签上指定入口文件(主模块):

<head><meta charset="UTF-8"><title>javascript模块化编程</title>
</head>
<body>
<script type="text/javascript" src="https://cdn.bootcss.com/require.js/2.3.5/require.js" defer async data-main="js/main.js"></script>
</body>

接下来需要对main.js进行一些配置:

// 模块加载的配置
require.config({// 基目录 如果每个模块不在一个基目录// 不使用baseUrl直接在paths中具体指定baseUrl: "lib",paths: {'jquery': 'jquery','vue': 'vue.min','pagination': 'my-pager'},// shim属性 专门用来配置不兼容的模块 每个模块要定义:// (1) exports值(输出的变量名)表明这个模块外部调用时的名称// (2) deps数组 表明该模块的依赖性// 比如jq的插件可以这样定义shim: {'jquery.scroll': {deps: ['jquery'],exports: 'jQuery.fn.scroll'}}// requireJS还有一系列插件 不再赘述// [Plugins](https://github.com/requirejs/requirejs/wiki/Plugins)
});
// 主模块依赖于其它模块,这时就需要使用AMD规范定义的require()函数
// require([modules], function (modules) { });
require(['jquery', 'vue', 'pagination'], function ($, Vue, pagination) {console.log($);console.log(Vue);console.log(pagination);
});

关于自己定义符合AMD规范的模块,比如上面例子中的pagination:

(function (factory) {if (typeof exports === 'object') {// Node/CommonJSfactory(require('document'), require('window'));} else if (typeof define === 'function' && define.amd) {// AMDdefine(factory(document, window));} else {// Browser globalsfactory(document, window);}
}(function (document, window) {var Test = {a: 1}if (typeof module != 'undefined' && module.exports) {module.exports = Test;} else if (typeof define == 'function' && define.amd) {define(function () { return Test; });} else {window.Test = Test;}
}));

原文地址:https://segmentfault.com/a/1190000016913752

转载于:https://www.cnblogs.com/lalalagq/p/9940603.html

JavaScript模块化编程之AMD相关推荐

  1. js模块化编程之CommonJS和AMD/CMD

    一.CommonJS 1.CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白.它的终极目标是提供一个类似Python,Ruby和Java标准库.这样的 ...

  2. JavaScript模块化 --- Commonjs、AMD、CMD、es6 modules

    随着前端js代码复杂度的提高,JavaScript模块化这个概念便被提出来,前端社区也不断地实现前端模块化,直到es6对其进行了规范,下面就介绍JavaScript模块化. 这篇文章还是希望能给大家一 ...

  3. Javascript模块化编程:AMD规范

    一.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块. 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写 ...

  4. 树莓派模块化编程之TM1637驱动四位数码管

    一.驱动TM1637的时序图 二.代码实现 #encoding:utf-8 import RPi.GPIO as GPIO import time GPIO.setwarnings(False) GP ...

  5. 【实战篇】模块化编程之LCD驱动框架详解

    ID:嵌入式云IOT技术圈 作者:杨源鑫 传送门:[架构篇]嵌入式编程中如何给代码的结构分层 废话不多说,理论讲太多没啥感觉,这些条条框框本质就是基于面对对象的设计模式相关的一些理论,设计模式就是前人 ...

  6. javascript模块化之CommonJS、AMD、CMD、UMD、ES6

    javascript模块化之CommonJS.AMD.CMD.UMD.ES6 一.总结 一句话总结: CommonJS是同步加载模块,用在服务端:AMD是异步加载模块,用于浏览器端 1.为什么服务器端 ...

  7. JavaScript 模块化编程(二):AMD规范

    这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要 ...

  8. Javascript模块化编程系列二: 模块化的标准化(CommonJS AMD)

    前言 Javascript模块化编程系列一: 模块化的驱动 在前一篇介绍了为什么要进行Javascript模块化编程.至于如何实现模块化,不同的开发组织和个人具体的实现方式肯定是不一样.如何统一一个规 ...

  9. 无法找到模块“mint-ui”的声明文件_[搬运] JavaScript 模块化:CommonJS vs AMD vs ES6...

    本文主体部分 翻译+搬运 自外网著名技术博客网站 medium.com 的一篇点赞数 2.7k 的文章 (文章链接在结尾处) 什么是 JavaScript 模块 JavaScript 模块指的是一段可 ...

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

    Javascript模块化编程(二):AMD规范 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块. 但是,这样做有一个前提, ...

最新文章

  1. mysql开启binlog
  2. HIve分组查询返回每组的一条记录
  3. 主分支和'起源/主人'有分歧,如何'疏远'分支'?
  4. 腾讯offer是什么样子_记一次腾讯社招前端面试(已拿到offer入职)
  5. 大话设计模式(八 用“策略模式”是一种好策略)
  6. java jdbc标签jsp_jsp+servlet+javabean+jdbc实现增删改查和分页功能 案例源码
  7. 没有人会告诉您乘坐飞机时的几个事实 但是您一定要知道
  8. 某小型校园网规划与设计要点(课程报告)
  9. spring IOC容器 Bean 管理——基于注解方式
  10. dj鲜生-37-order应用-模型类创建
  11. python之设计模式的装饰器9步学习
  12. 台式电脑打不开计算机c盘,电脑c盘打不开进不了系统怎么办
  13. 计算机应用新教程,计算机应用基础教学教程(新).doc
  14. 计算机无法选择字体,电脑系统字体缺失怎么办
  15. rational rose mysql_用Rational Rose来建立数据库表
  16. cf两边黑屏怎么解决win10_电脑黑屏怎么解决
  17. 庄帅:托管分销与物流集成战略雏形
  18. 2022全国高职院校教师真实薪酬数据汇总
  19. 量产国产服务器cpu芯片,中国第一!百度自研芯片量产:配国产CPU
  20. python import变灰_python--pycharm中import导入包呈现灰色问题之解决~很实用

热门文章

  1. mybatis plugins_[Mybatis]-[基础支持层]-插件-多个插件执行顺序
  2. 协同过滤算法_一文带你了解协同过滤的前世今生
  3. 组态王通过串口服务器通讯smart200_实例讲解通过代码调试串口通讯的方法
  4. idea中mapper.xml的头文件配置
  5. 【渝粤教育】国家开放大学2018年春季 7392-21TMatlab语言及其应用 参考试题
  6. [渝粤教育] 广东-国家-开放大学 21秋期末考试标准的研制与编制★10003k1
  7. 操作系统原理(四)死锁和进程调度
  8. Hutool工具里,POST方法,body中传参的几种调用方法
  9. [转]word 转换成pdf
  10. [转]vs2003,安装程序检测到另一个程序要求计算机重新启动