首页 > 其他分享 >js-模块化AMD vs CMD

js-模块化AMD vs CMD

时间:2024-02-22 20:44:29浏览次数:28  
标签:function require CMD AMD js add vs var math

1. AMD和require.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);
});

 

2. CMD和sea.js

/** AMD写法 **/
define(["a", "b", "c", "d", "e", "f"], function(a, b, c, d, e, f) { 
     // 等于在最前面声明并初始化了要用到的所有模块
    a.doSomething();
    if (false) {
        // 即便没用到某个模块 b,但 b 还是提前执行了
        b.doSomething()
    } 
});

/** CMD写法 **/
define(function(require, exports, module) {
    var a = require('./a'); //在需要时申明
    a.doSomething();
    if (false) {
        var b = require('./b');
        b.doSomething();
    }
});

/** sea.js **/
// 定义模块 math.js
define(function(require, exports, module) {
    var $ = require('jquery.js');
    var add = function(a,b){
        return a+b;
    }
    exports.add = add;
});

// 加载模块
seajs.use(['math.js'], function(math){
    var sum = math.add(1+2);
});

 

总结:AMD推崇依赖前置、提前执行,CMD推崇依赖就近、延迟执行

 

1. ES6的模块不是对象,import命令会被 JavaScript 引擎静态分析,在编译时就引入模块代码,而不是在代码运行时加载,所以无法实现条件加载。也正因为这个,使得静态分析成为可能。

 

 

参考:https://www.cnblogs.com/chenwenhao/p/12153332.html

 

标签:function,require,CMD,AMD,js,add,vs,var,math
From: https://www.cnblogs.com/monkey-K/p/18028103

相关文章

  • 文心一言 VS 讯飞星火 VS chatgpt (199)-- 算法导论15.2 1题
    一、用go语言,对矩阵规模序列(5,10,3,12,5,50,6),求矩阵链最优括号化方案。文心一言,代码正常运行:在Go语言中,为了找到矩阵链乘法的最优括号化方案,我们通常会使用动态规划(DynamicProgramming,DP)的方法。矩阵链乘法的问题是要确定计算矩阵乘积的最有效顺序,以最小化乘法操作的次数。这里......
  • Go - Data races vs. race conditions
         ......
  • vscode配置cpplint
    cpplint是Google开发的一个用于检查C++代码风格的工具。它可以自动扫描C++源代码,并提供有关代码规范、风格和错误的反馈。cpplint基于Google的C++编码规范,但也可以配置为符合其他的代码风格指南。注意,cpplint不依赖于vscode存在,可以单独在命令行中使用。安装cpplint:pipinsta......
  • vs2010 编译问题
       1.更改设置1.1  project->properties->configurationproperties->C/C++->General->AddtionalIncludeDirectories->放dll文件的路径1.2 project->properties->configurationproperties->Linker->General->AddtionalLibraryDirectories......
  • linux ftp服务选择与ftp(vsftpd,Pure-FTPd)服务安装使用教程(转载)
    一linuxftp常用的服务软件在Linux系统中,最常用的ftp有vsftpd,Pure-FTPd,ProFTPd,Wu-FTPd,glftpd,他们的特性优缺点如下对比图:常用的5款linuxftp对比图:软件 特性 优点 缺点vsftpd 轻量级、安全、易于配置 安全性高、性能好、易于配置 功能较为简单Pure-FTPd 安全、可扩展、......
  • vscode cuda编程环境配置
    我使用的是RemoteSSH连接远程服务器需要确保vscodec/c++插件安装正确包括客户端插件和服务器插件,之前安装过c/c++插件,然后后面又删除过服务器上的vscodeserver,没注意到服务器上的c/c++插件没有安装,导致后面编辑.cu文件时出现各种问题(不提示代码补全)创建c++配置文件先创......
  • Android无线调试--VSCode也能用
    只针对android11版本及以上版本官方文档https://developer.android.google.cn/studio/run/device?hl=zh-cn#wireless官方文档讲的是使用AndroidStudio开发工具进行开发时的无线连接如下: 点进去之后会有两个选项,一个是扫码,一个是使用配对码 拿出手机,打开开发者选项--》......
  • qt vs 引用第三方lib
    项目目录,plug是资源文件,ZL.Main是根目录(发布后需要把plug复制在debug中exe同目录 一:该目录填include目录,可以相对路径可以绝对路径 二:该目录填lib目录,可以相对路径可以绝对路径 三:该项填lib文件名,有几个填写几个 第四:配置平台管理器 ......
  • 掌握云容器网络:何为ipvs
    本文分享自华为云社区《【理解云容器网络】2-基础篇-ipvs介绍》,作者:可以交个朋友。IPVS简介ipvs是工作在Linux内核态的4层负载均衡;和用户态的负载均衡软件(如nginx、haproxy)功能类似:作为客户端访问的统一入口并将访问请求根据调度算法转给后端真实的服务器。相比于用户态负载......
  • vscode+.md文件生成pdf简历
     前提:vscode下载安装插件:MarkdownPreviewEnhanced,用来预览md文件的效果 操作:1.编辑md文件,文件的格式基本同html标签的使用一样。2.点击如图位置,预览md文件的效果:3.在md预览界面鼠标右键-点击选择在浏览器打开4.在浏览器页面->鼠标右键->打印,生成pdf即可。 ......