当前位置: 首页 > article >正文

AMD模块

AMD 与 CommonJS

在介绍 AMD 之前,我们需要了解 CommonJS 规范。CommonJS 是服务器端 JavaScript(如Node.js)的模块化标准,它使用同步方式加载模块。然而,这种方式并不适用于浏览器环境,因为 JavaScript 文件需要从服务器异步加载。AMD 规范应运而生,AMD 全称 Asynchronous module definition,意为异步的模块定义 ,不同于 CommonJS 规范的同步加载,AMD 正如其名所有模块默认都是异步加载,它允许模块异步加载,不会阻塞浏览器的其他操作。这使得 AMD 规范非常适合浏览器端的 JavaScript 模块化编程。

AMD的核心概念

AMD 规范的核心是 definerequire 两个函数。

  • define

    用于定义模块,它接受一个模块数组和一个工厂函数。

  • require

    用于加载模块,它接受一个模块数组和一个回调函数。

AMD 使用

首先我们需要引入 require.js 文件和一个入口文件 main.js 。main.js 中配置require.config()并规定项目中用到的基础模块。

<!-- 网页中引入require.js及main.js -->
<script src="js/require.js" data-main="js/main"></script>
/** main.js 入口文件/主模块 **/
// 首先用 config() 指定各模块路径和引用名
require.config({
    baseUrl: "js/lib",
    paths: {
        "jquery": "jquery.min",  //实际路径为js/lib/jquery.min.js
        "underscore": "underscore.min",
    }
});
// 执行基本操作
require(["jquery","underscore"],function($,_){
    // some code here
});

引用模块的时候,我们将模块名放在[]中作为reqiure()的第一参数;如果我们定义的模块本身也依赖其他模块,那就需要将它们放在[]中作为define()的第一参数。

// 定义math.js模块
define(function () {
    var basicNum = 0;
    var add = function (x, y) {
        return x + y;
    };
    return {
        add: add,
        basicNum :basicNum
    };
});

// 定义一个依赖underscore.js的模块
define(['underscore'],function(_){
    var classify = function(list){
        _.countBy(list,function(num){
            return num > 30 ? 'old' : 'young';
        })
    };
    return {
        classify :classify
    };
})

// 引用模块,将模块放在[]内
require(['jquery', 'math'],function($, math){
    var sum = math.add(10,20);
    $("#sum").html(sum);
});

http://www.kler.cn/a/531222.html

相关文章:

  • 深度解读 Docker Swarm
  • 深度学习 Pytorch 基础网络手动搭建与快速实现
  • 构建一个数据分析Agent:提升分析效率的实践
  • C语言 --- 分支
  • GWO优化LSBooST回归预测matlab
  • [免费]微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)【论文+源码+SQL脚本】
  • 25.2.3 【洛谷】作为栈的复习不错(学习记录)
  • opencv图像处理框架
  • 【Rust自学】19.4. 宏(macro)
  • Javascript代码库-jQuery入门
  • 读算法简史:从美索不达米亚到人工智能时代05天气预报
  • Apache Iceberg数据湖技术在海量实时数据处理、实时特征工程和模型训练的应用技术方案和具体实施步骤及代码
  • 爱普生L3153打印机无线连接配置流程
  • 【C++】B2120 单词的长度
  • C++11 多线程 锁与条件变量:mutex、lock_guard、unique_lock 和 condition_variable
  • 电控三周速成计划参考
  • 51c嵌入式~电路~合集25
  • GRE阅读双线阅读 --青山学堂GRE全程班 包括 阅读、数学、写作、填空、背单词
  • Math数字类
  • CH340G上传程序到ESP8266-01(S)模块
  • 大模型领域的Scaling Law的含义及作用
  • 7-4 西安距离
  • SAP HCM 回溯分析
  • 民法学学习笔记(个人向) Part.2
  • 元音字母(模拟)
  • 网络工程师 (16)侵权判断