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

【模块化】CommonJS,AMD规范,CMD规范,ES6模块化

1. CommonJS

Node.js基于CommonJS规范应运而生

1.1 commonjs规范语法导出模块

module.exports = { a, b }

1.2 commonjs规范语法引入模块

const mod = require('./导出模块name')

2. AMD 规范

RequireJS 是AMD规范的实现。是js文件和模块的加载器。
在没有单页应用(angular.js,vue.js,react.js),基于路由的形式,一个 index.html主文件,切换路由展示(SPA形式)的环境下使用。
依赖全加载完再执行js,保证依赖没有问题。
有很多自己的语法。
宏观的,先把需要的依赖都加载好,加载费时,开发效率高。

2.1 本地下载并引入第三方库 require.js

// 新建lib文件用来存放第三方下载库,lib/require.js
<script data-main = 'js/main' src = 'lib/require.js' ></script>
// data-main 入口文件

2.2 添加 require.js 配置

require.confing({// 当前模块化解析的基本路径baseUrl: 'js',// 模块的映射paths: {jquery: '../lib/jquery.min', //never includes a '.js' extension since lodash: '../lib/lodash'}
})

2.3 使用ADM规范,定义一个requireJS语法的模块

define(['jquery', 'lodash'], function($,_){// 这里就是RequireJS解决的问题,等【】依赖全加载完,再执行js
})

2.4 使用ADM规范,加载入口requireJS语法的模块

require(['./index'])

3. CMD规范

Sea.js 遵循CMD规范。
可以像Node.js一般书写模块代码,不用记语法。
官网五分钟上手。
微观的,随用随加载,分散开发效率,但不需要加载耗时。

3.1 本地下载并引入第三方库 sea.js
3.2 添加 sea.js 配置
3.3 使用CMD规范,定义一个seajs语法的模块

define(function(require, exports, module){// 通过require引入依赖const $ = reauire('jquery')// 通过 exports 对外提供接口exports.doSomething = ...// 或通过module.exports 提供整个接口module.exports = ...
})

3.4 使用CMD规范,加载入口seajs语法的模块

seajs.use('../js/main')

4. ES6 模块化规范

使用 babel 的插件 babel-cli 把es6转换成浏览器可编译的 es5

4.1 es6 俩种导出模块

// 单独模块导出
export function sum(a,b) {return a+b;
}
export function sub(a,b) {return a-b;
}
// 默认整体导出
const user = {name: 'lisi',age: 18,say: function() {console.log('My name is' + this.name)}
}
export default user

4.1 es6 俩种导入模块

// 单独模块导入
import {sum, sub} from "./math"
// 整体模块导入
import user from "./user"
http://www.lryc.cn/news/422983.html

相关文章:

  • 3.js - 顶点着色器、片元着色器的联系
  • kotlin简介
  • Mintegral出海系列:解锁全球应用商店新增长路径
  • Qt 哈希加密之 QCryptographicHash
  • 渗透第二次作业
  • 42.【C语言】冒泡排序
  • Linux安全与高级应用(七)深入Linux Shell脚本编程:循环与分支结构的高级应用
  • python爬虫滑块验证及各种加密函数(基于ddddocr进行的一层封装)
  • pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
  • 说一下Android中的IdleHandler
  • Flake8 和 Autopep8 使用指南
  • OpenHarmony(数据)通信协议、数据存储—protobuf
  • vue3 依赖注入 vueRouter vuex
  • 在Windows上用Visual Studio编译OpenCV
  • 详解2024年最值得推荐的5款CRM软件:如何选择适合企业需求的CRM系统?
  • 2024靠谱的网站建设公司推荐
  • 第一天:Java基础与环境搭建
  • 动画魔法秀:JavaScript前端动画实战指南
  • 实训日记day26
  • 自定义实现一个 Redis 客户端
  • sql注入——sqlilabs16-26
  • 数据加载工具pg_bulkload插件的介绍
  • Windows禁止应用联网
  • zabbix邮件告警配置
  • 代码随想录算法训练营第 35 天 | LeetCode 416. 分割等和子集
  • 伪国企是指的什么?
  • Transformer在量化投资中的应用
  • a++ 和 ++a
  • Python配置文件格式——INI、JSON、YAML、XML、TOML
  • The First项目报告:Web3人生模拟器,DegenReborn带你重开币圈