工具链和其他-异步模块加载

news2024/12/28 19:49:00

目录

CMD/AMD

Asynchronous Module Definition(AMD异步模块定义,语法风格)

Common Module Definition

ES6/CommonJS

CommonJS

ES6 Module

加载器示例

总结


cmd和amd的区别

现在有哪些异步加载方式

整体结构

编程:commonjs es6 module (有可能解析不了,需要传输层)

传输:cmd/amd(早期是异步加载模块用的,不是一个中间层;现在是一个加载模块,不把程序写在里面)

执行:require.js webpack模块加载器......(异步加载器)

CMD/AMD

Asynchronous Module Definition(AMD异步模块定义,语法风格)

amd不是一个很好的设计

// 模块创建
// a.js
define(['functions/foo'], (foo) => { // 数组:依赖foo——文件在functions/foo
    console.log(foo())
})
// 模块使用
// a.js
//         数组代表所有依赖                函数接收所有依赖
require(['jquery', 'a.js'], ($, printFoo) => {
    $("#foo").click(()=> {
        printFoo()    
    })
})

Common Module Definition

// 模块使用
// a.js
define((require, exports) => {
    function printFoo() {
        const foo = require('./foo') // 声明后置
        console.log(foo())    
    }
    exports = printFoo // 声明后置 用到在声明
})
// 模块使用
// a.js
use((require) => {
    const $ = require('jquery') // 同步模型,异步的话可以用asyns await,promise
    const printFoo = require('./a.js')
    $("#foo").click(() => {
        printFoo()    
    })
})

ES6/CommonJS

CommonJS

node支持

浏览器访问转义为浏览器可解读的cmd

// 模块使用
// a.js
function A(){...}
module.exports = A
// 模块引用
const A = require("./a.js")
A()

ES6 Module

// 模块使用
// a.js
function A(){...}
export default A
// 模块引用
import A from './a.js'
A()

加载器示例

const express = require('express')
const app = express() 
const path = require('path')
app.use(express.static(path.resolve(__dirname, 'lib')))
app.get('/', (req, res) => {
  res.send(`
  <html>
    <body>
    <script src='/require.js' ></script>
    <script>
      require.path = '/'
      require(['add', 'mult'], (add, mult) => {
        console.log(add(3, 5))
        console.log(mult(3, 5))
      })
    </script>
    </body>
  </html>
  `)
})
app.listen(3000)
// add.js
define('add', (a, b) => {
  return a + b
})
// mult.js
define('mult', (a, b) => {
  return a * b
})

总结

  • CMD/AMD:底层建设 (浏览器用的)
  • CommonJS/ES6 Module: 书写规范

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/458611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32和oneNET云平台的数据采集系统(MQTT协议)

文章目录 前言一、onenet云平台产品创建二、硬件选择三、设计理念四、实战编程1. 传感器部分2. ESP82663. 定时器4. 串口5. MQTT 五、进阶练习 前言 该篇为基于stm32esp8266通过mqtt协议连接onenet物联网云平台&#xff0c;单片机部分将采集到的数据(温湿度、光照强度、压强等…

DX云音乐(安卓)

首先&#xff0c;软件安装好不用注册登录就可以直接使用&#xff0c;在首页这里有很多推荐的热门歌单&#xff0c;比如&#xff0c;有年度热门的DJ歌曲&#xff0c;有抖音热门DJ&#xff0c;有各种跨年晚会&#xff0c;有运动必备的DGM&#xff0c;有90后的经典旋律等等。 还有…

php+vue 校友交流平台

1.普通用户功能分析 &#xff08;1&#xff09;用户注册&#xff1a;用于注册校友录用户。 &#xff08;2&#xff09;用户登录&#xff1a;供校友录用户登录。 &#xff08;3&#xff09;资料修改&#xff1a;修改当前登录使用者信息。 &#xff08;4&#xff09;…

MQTT 5协议中的基础更改(一)

01 协议的基础性变化 MQTT 5是对现有协议规范的重大更新&#xff0c;新版本协议具有以下特征&#xff1a;轻量级、易用性、极强的可扩展性、对移动网络的适用性以及通信参与者的解耦。 02 MQTT仍然是MQTT 如果您熟悉MQTT3.1.1&#xff0c;那么您之前知道的关于MQTT的所有原则…

通用策略03丨RUMI魔改+krange自适应第3版

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 正 文 大家好&#xff0c;今天我们分享2023年度第3期策略——RUMI魔改krange自适应离场第3版迭代。 本期策略是2023年通用系列第3篇。本期主要内容有对RUMI原版的逻辑魔改&#xff0c;其次重点针对kra…

关于Open Shift(OKD) 中 用户认证、权限管理、SCC 管理的一些笔记

写在前面 因为参加考试&#xff0c;会陆续分享一些 OpenShift 的笔记博文内容为 openshift 用户认证和权限管理以及 scc 管理相关笔记学习环境为 openshift v3 的版本&#xff0c;有些旧这里如果专门学习 openshift &#xff0c;建议学习 v4 版本理解不足小伙伴帮忙指正 对每个…

数据库管理新定义:一款纯Web化免费SQL开发工具,免安装

SQL Studio是一款由麦聪软件研发的多数据库管理工具&#xff0c;提供Windows、Linux 和 MacOS三种版本的软件包&#xff0c;支持中英文两种语言。SQL Studio是用Java编写的&#xff0c;默认使用 JDK 8进行编译。 下载看这里: [SQLStudio] (http://www.maicongs.com/#/home/web)…

云HIS(二级医院,乡镇医院,民营医院,标准化HIS医院信息管理系统源码)

传统 HIS&#xff08;基于医院信息系统&#xff09; 和云 HIS&#xff08;基于云计算的医院信息系统&#xff09;各有优缺点&#xff0c;选择哪种系统需要根据具体情况进行权衡。 传统 HIS 系统通常由医院自行开发和维护&#xff0c;适用于医院内部信息化程度较高、数据安全性…

Sql 优化工具

1、背景 对于正在运行的mysql 性能如何&#xff1f;参数设置的是否合理&#xff1f;账号设置的是否存在安全隐患&#xff1f; 对于Sql执行效率又如何&#xff1f;如何了然于胸&#xff1f; show profile, explain&#xff0c;slow query log &#xff0c;索引优化&#xff0…

【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Qt实现滑动条平滑效果

效果图 基于QPropertyAnimation实现 代码部分 //设置滑动条动画 m_scrollAnimationnew QPropertyAnimation; m_scrollAnimation->setTargetObject(this); m_scrollAnimation->setPropertyName("value"); m_scrollAnimation->setEasingCurve(QEasingCurve:…

如何在已创建的SpringBoot项目基础上添加依赖

假设此时已经创建了一个SpringBoot项目&#xff0c;在使用的时候发现缺少 lombok 依赖&#xff0c;此时如何在不创建新项目的基础上添加该依赖&#xff1f;有两种方式&#xff1a; 通过Maven中央仓库导入依赖使用插件EditStarters导入依赖 1&#xff0c;通过Maven中央仓库导入依…

CVE-2023-21839 Weblogic远程代码执行漏洞复现

目录 0x01 声明&#xff1a; 0x02 简介&#xff1a; 0x03 漏洞概述&#xff1a; 0x04 影响版本&#xff1a; 0x05 环境搭建&#xff1a; Docker环境搭建&#xff1a; 漏洞环境搭建&#xff1a; 1、编辑docker-compose.yml 2、启动docker 3、访问页面&#xff1a; 0x…

PM不想做项目管理了,还能干点啥?

做项目经理太累了&#xff01; 那么 不做项目经理还能做什么呢&#xff1f; 01 铁锅批发商 毕竟 当项目经理的时候 已经囤积了成百上千口锅 十年背锅经验不是瞎吹 并且可现场演示铁锅烙饼 老板亲授&#xff0c;真实还原&#xff0c;充饥必备 02 Office优化师 当项目…

Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)

常用的两款AI可视化交互应用比较&#xff1a; Gradio Gradio的优势在于易用性&#xff0c;代码结构相比Streamlit简单&#xff0c;只需简单定义输入和输出接口即可快速构建简单的交互页面&#xff0c;更轻松部署模型。适合场景相对简单&#xff0c;想要快速部署应用的开发者。 …

43岁程序员,投了上万份简历都已读不回,只好把年龄改成40岁,这才有了面试机会,拿到了offer!...

40多岁找工作有多难&#xff1f; 一位43岁的程序员讲述了自己找工作的经历&#xff1a; 80年&#xff0c;大专&#xff0c;目前没到43周岁&#xff0c;年前被裁&#xff0c;简历上的年龄是42岁&#xff0c;两个多月投了上万份简历&#xff0c;99.5%是已读未回。后来改变策略把简…

阿里最新研究:当ChatGPT 遇上推荐系统,遭遇滑铁卢

文 |小戏 在 GPT-4 屠榜了 NLP&#xff0c;SAM 零样本分割一切让 CV 消失后&#xff0c;不知道大家会不会有好奇 AI 三大现实应用的另一边岁月静好的推荐系统有没有感受到来自遥远大模型带来的巨大压力。 尽管 ChatGPT 的训练过程似乎没有对推荐系统太多的兼容&#xff0c;但是…

[2020.3.13]通过Android反编译找出问题根因

反编译软件推荐如下: (1)JEB.android.decompiler (2)jadx-0.7.1 问题&#xff1a;喜马拉雅初次进入直播功能时显示无网络连接&#xff1b;播放音频时&#xff0c;播放界面下方内容无法加载&#xff0c;显示网络未连接 1 初次进入直播功能时显示无网络连接 2 左滑切换直播间…

Stability AI,新人工智能背景下的开源先锋

今天跟大家聊聊一家总部设在伦敦的AI公司&#xff0c;虽然小&#xff0c;但对这一波AI浪潮的贡献不可谓不小&#xff0c;好产品好公司都值得推荐给大家。 开源生成式绘画 Stable Diffusion 提起Stability AI&#xff0c;多少有些陌生&#xff0c;但提起Stable Diffusion&#x…