AMD模块写法

news/2024/11/29 8:54:15/

AMD模块的写法

require.js加载的模块,采用AMD规范。也就是说,模块必须按照AMD的规定来写。

具体来说,就是模块必须采用特定的define()函数来定义。如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中。

假定现在有一个math.js文件,它定义了一个math模块。那么,math.js就要这样写:

  // math.js

  define(function (){

    var add = function (x,y){

      return x+y;

    };

    return {

      add: add
    };

  });

加载方法如下:

  // main.js

  require(['math'], function (math){

    alert(math.add(1,1));

  });

如果这个模块还依赖其他模块,那么define()函数的第一个参数,必须是一个数组,指明该模块的依赖性。

  define(['myLib'], function(myLib){

    function foo(){

      myLib.doSomething();

    }

    return {

      foo : foo

    };

  });

当require()函数加载上面这个模块的时候,就会先加载myLib.js文件。


六、加载非规范的模块

理论上,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。但是实际上,虽然已经有一部分流行的函数库(比如jQuery)符合AMD规范,更多的库并不符合。那么,require.js是否能够加载非规范的模块呢?

回答是可以的。

这样的模块在用require()加载之前,要先用require.config()方法,定义它们的一些特征。

举例来说,underscore和backbone这两个库,都没有采用AMD规范编写。如果要加载它们的话,必须先定义它们的特征。

  require.config({

    shim: {

      'underscore':{
        exports: '_'
      },

      'backbone': {
        deps: ['underscore', 'jquery'],
        exports: 'Backbone'
      }

    }

  });

require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。

比如,jQuery的插件可以这样定义:

  shim: {

    'jquery.scroll': {

      deps: ['jquery'],

      exports: 'jQuery.fn.scroll'

    }

  }



http://www.ppmy.cn/news/749332.html

相关文章

amd模块化

一、amd定义及规范说明 AMD(Asynchronous Module Definition):异步模块加载机制,是一个在浏览器端模块化开发的规范。什么是异步模块加载机制:JavaScript在浏览器中被解析和执行时具有阻塞的特性,当JavaScript代码执行时&#xf…

区分计算机和服务器的内存条,AMD专用内存是什么意思 AMD专用内存和普通内存条的区别及真相...

相信一些用户在网上在购买内存的时候找到一些低价位的内存,看描述上写有“AMD专用内存”,AMD专用内存是什么意思?那么对于这种称为AMD专用内存的不难理解,肯定intel平台是使用不了的,而只有AMD平台能够使用,今天装机之家来给大家说说AMD专用内存和普通内存条的区别及真相…

amd支持服务器内存,amd专用内存和普通的内存有什么区别?

相信大家都知道内存对于电脑来说是一个非常重要的作用,不知道大家有没有听说过amd专用内存条?对这方面不太熟悉的朋友不妨进来看看,为了防止以后给一些不良的商家欺骗,赶紧进来学习一下吧。 AMD专用内存简介 AMD专用内存是指那些采用服务器内存标准,或者干脆直接从废旧服务…

amd支持服务器内存,AMD专用内存和普通内存的区别是什么?

AMD专用内存和普通内存的区别是什么?很多伙伴在购买内存的时候,可能会看到“AMD专用内存”字样,那么AMD专用内存是什么意思呢?当然就是只有AMD平台能够使用,对于intel平台是使用不了的。由于很多伙伴都在疑惑AMD专用内存和普通内存有什么区别,下面小编就给大家说说吧! 一…

AMD规范

在读某第三方的源代码时,发现一个define()方法,随即开始了AMD语法的学习,随将学习成果分享如下: 一,ADM规范背景调查 前端技术在不断的发展之中,很多公司会开发自己的框架来用。开发一个自己会用的框架并…

SpringMVC JDK17 SpringFramework6x Tomcat10遇到的找不到资源404问题以及SercletException

发生资源找不到异常 本人使用Tomcat9 与 jdk17 时无任何冲突可以随便使用 Springframework6x系列 对应的应该时tomcat10版本 在使用过程中遇到两个问题 1.依赖问题 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</a…

【浏览器篇】记录下浏览器保存PDF文件不同方式的小区别

【浏览器篇】记录下浏览器保存PDF文件不同方式的小区别 以前不太注意这些&#xff0c;最近搞文档比较多才发现为何保存的一部分PDF文件里面字体可以复制可以搜索&#xff0c;一部分保存的PDF里面的字体却无法复制、无法搜索等&#xff0c;发现是不同保存方式得到的文档权限不一…

鼠标禁用光标,禁用鼠标样式

鼠标禁用光标,禁用鼠标样式 是一个红圈加斜杠的鼠标光标 cursor: not-allowed;