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

对于前端模块化的理解与总结(很全乎)

目录

模块化的好处

模块化的commonJS导入导出

暴露(导出)模块:module.exports = value或exports.xxx = value

 导入模块——使用

es6模块化

方法一逐个导出

 方法二默认导出

方法三

方法四

方法五 export 和import 同时存在

多个文件导出到一个文件后在相关文件 导入使用


一、模块化的好处

● 避免命名冲突(减少命名空间污染);

● 更好的分离, 按需加载;

● 更高复用性;

● 高可维护性;

二、模块化的commonJS导入导出

  • 暴露(导出)模块:

  • module.exports = value或exports.xxx = value

  • SM4Util.js文件下
// let base64js = require('./base64js')//不引入本地
var base64js = require('base64-js');//引入node_module里的依赖
let Hex = require('./hex')
let SM4 = require('./sm4')function SM4Util(){}/*** sm4 ecb 加密* @param utf8Str* @param utf8Key*/
SM4Util.sm4ECBEncrypt = function (utf8Str, utf8Key) {if (!utf8Key) {utf8Key = 'zzfh!@#$QazxWsxc'}let sm4 = new SM4();let keyBytes = Hex.utf8StrToBytes(utf8Key)let contentBytes = Hex.utf8StrToBytes(utf8Str)let cipher = sm4.encrypt_ecb(keyBytes, contentBytes);return base64js.fromByteArray(cipher)
}/*** sm4 ecb 解密* @param utf8Str* @param utf8Key*/
SM4Util.sm4ECBDecrypt = function (base64Str, utf8Key) {if (!utf8Key) {utf8Key = 'zzfh!@#$QazxWsxc'}let sm4 = new SM4();let keyBytes = Hex.utf8StrToBytes(utf8Key)let contentBytes = base64js.toByteArray(base64Str)let plain = sm4.decrypt_ecb(keyBytes, contentBytes);return Hex.bytesToUtf8Str(plain)
}module.exports = SM4Util
// module.exports.SM4Util = SM4Util;
// module.exports = {};

 导入模块——使用

main.js文件下

import Vue from "vue";const SM4Util = require("@/js/SM4Util.js");
// const sm4CBCEncrypt= require("@/js/SM4Util.js").sm4CBCEncrypt;
// sm4——cbc加密(需要加密的字符串, 密钥,密钥)
const cbcEncrypt =(word)=>{return SM4Util.sm4CBCEncrypt(word, 'abcdefgabcdefg12','abcdefgabcdefg12')};
Vue.prototype.cbcEncrypt=cbcEncrypt;
// 解密// const cbcDecrypt =(text)=>{return SM4Util.sm4CBCDecrypt(text, 'abcdefgabcdefg12','abcdefgabcdefg12')};

三、es6模块化

方法一逐个导出

导出

 SM4Util.js

export const SM4Util =SM4Util;
// export {a,b,c};

 导入

main.js

import {SM4Util} from "@/js/SM4Util.js";

 方法二默认导出

export default SM4Util;
import SM4Util from "@/js/SM4Util.js";

方法三

 在第一种方法的基础上,增加中间页,导入数据并导出

import * as sm4Util from './sm4Util.js';//全部导入并重命名为sm4Util,使用时sm4Util.方法名
export const sm4Util =sm4Util;

 事实上,commonjs的导出可以结合es6的import导入使用,而es6的导出却不能跟commonjs的require一起使用,因为require只能识别commonjs的module.export的导出方法

方法四

当方法一与方法二两个导出一起使用 ,那么导入时

import SM4Util,{a,b,c} from "@/js/SM4Util.js";

方法五 export 和import 同时存在


有时想在一个模块中导入某个接口,然后导出同样的接口名称属于同一个模块时,可以合并操作

import { val, bar } from 'a.js';
export { val, bar };

等同于 

export { val, bar } from 'a.js';

四、多个文件导出到一个文件后在相关文件 导入使用

 

 

 听懂掌声

http://www.lryc.cn/news/145713.html

相关文章:

  • NewStarCTF 2022 web方向题解 wp
  • WebGL矩阵变换库
  • block层:8. deadline调度器
  • DTO,VO,PO的意义与他们之间的转换
  • Java 集合框架2
  • 2024王道408数据结构P144 T16
  • 【ARM Coresight 系列文章 22 -- linux frace 与 trace-cmd】
  • MyBatis的一级缓存和二级缓存是怎么样的?
  • 下载的文件被Windows 11 安全中心自动删除
  • 【Java List与数组】List<T>数组和数组List<T>的区别(124)
  • Nuxt 菜鸟入门学习笔记四:静态资源
  • C语言 - 结构体、结构体数组、结构体指针和结构体嵌套
  • python安装playwright问题记录
  • 关于gRPC微服务利弊之谈
  • 【Terraform学习】使用 Terraform创建Lambda函数启动EC2(Terraform-AWS最佳实战学习)
  • Mac软件删除方法?如何删除不会有残留
  • 编程之道:【性能优化】提高软件效率的实际建议和避免常见陷阱
  • VGG的结构:视觉几何组(Visual Geometry Group)
  • VBA:按照Excel工作表中的名称列自动汇总多个工作薄中对应sheet中所需要的数据
  • Mybatis1.9 批量删除
  • CUDA小白 - NPP(2) -图像处理-算数和逻辑操作(2)
  • python+redis实现布隆过滤器(含redis5.0版本以上和5.0以下版本的两份代码)
  • SpringBoot Thymeleaf iText7 生成 PDF(2023/08/29)
  • 【核磁共振成像】并行采集MRI
  • 深度图相关评测网站
  • 本地部署 CodeLlama 并在 VSCode 中使用 CodeLlama
  • Agilent33220A任意波形发生器
  • springboot第37集:kafka,mqtt,Netty,nginx,CentOS,Webpack
  • NVIDIA DLI 深度学习基础 答案 领取证书
  • axios模拟表单提交