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

news2024/12/26 0:08:23

目录

模块化的好处

模块化的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.coloradmin.cn/o/947807.html

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

相关文章

解决 quill Cannot import modules/imageResize. Are you sure it was registered?

这个插件是在富文本编辑器中调整图片大小的,发现拉下来的依赖会报错,于是替换了nodejs版本,没有解决,但是用同时之前拉下来的,莫名其妙正常,后来经过尝试,发现删除demo和node_modules文件夹后正常. 删除后,不报错,正常了

python遍历文件夹下的所有子文件夹,并将指定的文件复制到指定目录

python遍历文件夹下的所有子文件夹,并将指定的文件复制到指定目录 需求复制单个文件夹遍历所有子文件夹中的文件,并复制代码封装 需求 在1文件夹中有1,2两个文件夹 将这两个文件夹中的文件复制到 after_copy中 复制单个文件夹 # coding: ut…

电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。

一、TPS63070RNMR,降压升压 开关稳压器 IC 正 可调式 2.5V 1 输出 3.6A(开关) 15-PowerVFQFN 1、概述 TPS63070高输入电压降压-升压转换器是一款高效的低静态电流降压-升压转换器。这些器件适用于输入电压高于或低于输出电压的应用。升压模式…

Java-day12(泛型)

泛型 解决元素存储的安全性问题 解决获取数据元素时,需要类型强转的问题 核心思想:把一个集合中的内容限制为一个特定的数据类型 静态方法中不能使用类的泛型 不能在catch中使用泛型 如果泛型类是一个接口或抽象类,则不可创建泛型类的对…

Docker技术--Docker镜像管理

1.Docker镜像特性 ①.镜像创建容器的特点 Docker在创建容器的时候需要指定镜像,每一个镜像都有唯一的标识:image_id,也可也使用镜像名称和版本号做唯一的标识,如果不指定版本号,那么默认使用的是最新的版本标签(laster)。 ②.镜像分层机制 Docker镜像是分层构建的,并通过…

Springboot集成Docker并将镜像推送linux服务器

案例使用springboot项目,在IDEA 中集成Docker生成镜像,并将镜像发布到linux服务器 具体步骤如下: 1、Centos7安装Docker 更新系统的软件包列表 sudo yum update安装Docker所需的软件包和依赖项: sudo yum install docker完成…

vue3中右侧26个英文字母排列,点击字母,平滑到响应内容

效果图如下&#xff1a; 右侧悬浮 <!-- 右侧悬浮组件 --><div class"right-sort"><div v-for"(item, index) in list" :key"index" class"sort-item" :class"index activeIndex ? sort-item-active : " c…

大众汽车ceo施文韬到访中国,与中国团队会面,加速推出纯电产品

根据大众汽车官方公众号8月30日的消息透露&#xff0c;大众汽车乘用车品牌首席执行官施文韬和董事会成员上周到访了中国大众汽车总部V-SPACE。这次访问不仅与大众汽车中国团队和合资公司伙伴会面&#xff0c;还会见了经销商&#xff0c;并与中国核心媒体进行了沟通见面会。 中国…

固定式无线农业气象综合监测站

固定式无线农业气象综合监测站采用无线传输的方式&#xff0c;适合长距离之间的数据传输&#xff0c;用户可以在手机或者电脑登录并查看固定式无线农业气象综合监测站监测到的气象数据&#xff0c;稳定可靠。 技术特点&#xff1a; ①具有一路 ModBus-RTU 主站接口可接入485变…

运营商云强势崛起,互联网云开始艰难“守擂台”

大数据产业创新服务媒体 ——聚焦数据 改变商业 随着云计算的兴起&#xff0c;大佬纷纷入局赛道&#xff0c;阿里巴巴2009年正式成立阿里云&#xff0c;腾讯、百度、华为等企业也在2016年前后加速布局云计算产业。除此之外&#xff0c;中国电信、移动、联通等玩家也各有动作&a…

基于机器学习的fNIRS信号质量控制方法

摘要 尽管功能性近红外光谱(fNIRS)在神经系统研究中的应用越来越广泛&#xff0c;但fNIRS信号处理仍未标准化&#xff0c;并且受到经验和手动操作的高度影响。在任何信号处理过程的开始阶段&#xff0c;信号质量控制(SQC)对于防止错误和不可靠结果至关重要。在fNIRS分析中&…

DNS 协议都没听过?你配做开发?

一、什么是DNS协议&#xff1f; DNS协议是一种用于将域名转换为IP地址的分布式命名系统。它通过将用户提供的域名映射到相应的IP地址&#xff0c;实现了互联网上资源的定位和访问。DNS协议采用了层次化的域名结构&#xff0c;使得域名之间可以建立逻辑上的关联。 二、DNS解析过…

vs2019 ,c++的STD库全局函数 _Pocma 与 _Swap_adl 的思考

&#xff08;1&#xff09;在阅读vs2019上的 STL库的 map 源码时&#xff0c;遇到了这个函数&#xff0c;之前&#xff0c;在别的源码中也经常出现这个函数。那么这个函数起什么作用呢&#xff1f; 在1880行&#xff0c;有对该函数的调用。其定义如下图&#xff1a;&#xff0…

Redis 7 第二讲 数据类型 基础篇

&#x1f339; 引导 Commands | Redishttps://redis.io/commands/Redis命令中心&#xff08;Redis commands&#xff09; -- Redis中国用户组&#xff08;CRUG&#xff09;Redis命令大全&#xff0c;显示全部已知的redis命令&#xff0c;redis集群相关命令&#xff0c;近期也会…

竟大规模放弃复试!你未战先怯,别跑!

一、学校及专业介绍 长沙理工大学简称长沙理工&#xff08;CSUST&#xff09;&#xff0c;位于湖南省长沙市&#xff0c;国家交通运输部和湖南省人民政府共建高校&#xff0c;湖南省“双一流”建设高校&#xff0c;学校由原国家交通部所属的长沙交通学院和原国家电力公司&…

高频面试题:如何分别用三种姿势实现三个线程交替打印0到100

最近面试遇到的一道题&#xff0c;需要三个线程交替打印0-100&#xff0c;当时对多线程并不是很熟悉因此没怎么写出来&#xff0c;网上搜了之后得到现 synchronized wait/notifyAll 实现思路&#xff1a;判断当前打印数字和线程数的取余&#xff0c;不等于当前线程则处于等待…

前端:横向滚动条,拖动进行左右滚动(含隐藏滚动条)

效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, i…

【算法系列篇】位运算

文章目录 前言什么是位运算算法1.判断字符是否唯一1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 丢失的数字2.1 题目要求2.2 做题思路2.3 Java代码实现 3. 两数之和3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 只出现一次的数字4.1 题目要求4.2 做题思路4.3 Java代码实现 5.…

数据库范式以及drop、delete 与 truncate区别

数据库范式了解吗? 我们从一个数据库设计的初始化阶段开始, 但是并没有规范化设计的背景知识 而要求我们设计一个员工管理系统, 可能得到表结构如下: 数据异常 首先这个表有如下问题: 1. 数据冗余: 我们可以看到部门名称相同时, 部门地址也是重复的 因此会重复存储数据 …