CMD规范

基本使用

CMD英文全称 Common Module Definition(通用模块定义);

NodeJS就是CMD规范的

CMD规范的实现:commonjs 、seajs、nodejs

我们以seajs举例实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./js/sea.js"></script>
    <script>
        seajs.use("./js/main.js")
    </script>
</body>
</html>

上面是引入sea.js文件后向外暴露一个seajs的方法,内部的参数是引导文件路径

main.js文件

define(function (require, exprots, module) {
    var yuan = require("../outer/yuan.js");
    var ju = require("../outer/ju.js");
    alert(yuan.mianji(1))
    alert(ju.mianji(1,2))
  });
  

ju.js文件

define(function (require, exprots, module) {
  function mianji(a,b) {
    return a * b;
  }
  exprots.mianji = mianji
});

yuan.js文件

define(function (require, exprots, module) {
  function mianji(r) {
    return 3.14 * r * r;
  }
  exprots.mianji = mianji
});

 

 define这个外壳就是CMD规范的外壳,我们之前学习的NodeJS是可以不带外壳的CMD规范,所以就知道了require、exports、module都是从何而来的了,都是从CMD规范封装的方法中来的

 CMD和AMD规范的区别

AMD规范是中的require方法异步的,依赖模块是没有加载顺序之分的,所有的模块加载完毕后执行回调函数

require(['yuan', 'ju'], function (yuan, ju) {
    alert(yuan.mianji(1))
    alert(ju.mianji(1,2))
  })
 alert("0000")

 

 此时会发现0000先输出

require里面的语句是异步语句,把依赖项目都加载完毕后才执行回调函数,这个就是异步的由来

CMD规范中的require方法是同步的

define(function (require, exprots, module) {
    var yuan = require("./yuan");
    var ju = require("./ju");
    alert(yuan.mianji(1))
    alert(ju.mianji(1, 2))
    alert("0000")
  });
  

 

 目前主要使用cmd规范

posted @ 2021-10-26 18:00  keyeking  阅读(101)  评论(0编辑  收藏  举报