模块化编程

devtools/2024/9/22 16:34:12/

文章目录

  • 模块化编程
    • CommonJS
    • ES6 模块编程

模块化编程

JavaScript的模块化编程主要是为了解决大型代码项目的复杂性问题,让代码更易于维护和调试。

模块化可以将代码分割成多个独立的部分,每个部分都有其特定的功能,可以单独测试和使用。

CommonJS

CommonJS是Node.js采用的模块化规范,它使用require()来加载模块,使用module.exports来输出模块接口。

案例:编写 functions.js , 该文件有函数,变量, 常量, 对象。要求在 use.js , 可以使用到 function.js 中定义的 函数/变量/常量/对象

javascript">//function.js
//定义对象,变量,常量, 函数
const sum = function (a, b) {return parseInt(a) + parseInt(b);
}
const sub = function (a, b) {return parseInt(a) - parseInt(b);
}
let name = "lxg";
const PI = 3.14;
const monster = {name: "牛魔王", age: 500, hi() {console.log("hi 你好 牛魔王");}
}
//导出
/*
1. module.exports 导出模块
2. 把你需要导出的数据, 写入到 {}中即可
3. 可以全部导出,也可以部分导出
4. 理解:相当于把我们导出的数据,当做一个对象
5. 如果属性名和函数/变量/对象..名字相同,可以简写
6. 有些前端, 简写 module.exports={} 成 exports={}
*/
exports = {sum, sub, name, PI
}
javascript">//use.js
//导入
//1. 在 es5 中, 我们通过 require 就包 对应.js 中的数据/对象,引入
//2. 我们使用的时候,通过 m.属性 就可以使用
//3. 如果我们导入时,不需要所有的,可以导入部分数据
const m = require("./function.js");
const {sub} = require("./function.js");//使用
console.log(m.sub("100","200"));
console.log(m.sum(10,90));
console.log(m.name)
console.log(m.PI);
console.log(sub(19,8));

ES6 模块编程

ES6三种导出模块方式:

  • export {名称/对象/函数/变量/常量}
  • export 定义 =
  • export default {}

导入模块方式:

  • import {} from “xx.js”
  • import 名称 form “xx.js”

1)案例一:使用第一种方式导出模块

javascript">const sum = function (a, b) {return parseInt(a) + parseInt(b);
}
const sub = function (a, b) {return parseInt(a) - parseInt(b);
}
let name = "lxg";
const PI = 3.14;
const monster = {name: "牛魔王",age: 500,hi() {console.log("hi 你好 牛魔王");}
}// 第一种方式导出
exports = {sum, sub, name, PI
}
javascript">//导入
import { sum, sub, name, PI} from "./function"
//使用
console.log(sub("100", "200"));
console.log(sum(10, 90));
console.log(name)
console.log(PI);

2)案例二:使用第二种方式导出模块

javascript">// 直接导出属性
export const sum = function (a, b) {return parseInt(a) + parseInt(b);
}
export let name = "lxg";
javascript">//导入
import {sum,  name} from "./function"
//使用
console.log(sub("100", "200"));
console.log(name)

3)案例三:使用第三种方式导出模块

javascript">默认导出,将所有属性当成一个对象导出
export default {sum (a, b) {return parseInt(a) + parseInt(b);},sub (a, b) {return parseInt(a) - parseInt(b);},name : "lxg",PI : 3.14,monster : {name: "牛魔王",age: 500,hi() {console.log("hi 你好 牛魔王");}}
}
javascript">//导入,m相当于被导出的对象
import m from "./function"
//使用
console.log(m.sub("100", "200"));
console.log(m.name);
console.log(m.monster);

http://www.ppmy.cn/devtools/4914.html

相关文章

IIC总线读取温度湿度传感器数据实验

iic.c #include "iic.h"extern void printf(const char* fmt, ...); /** 函数名 : delay_us* 函数功能:延时函数* 函数参数:无* 函数返回值:无* */ void delay_us(void) //微秒级延时 {unsigned int i 2000;while(i-…

javaEE初阶——多线程(五)

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享关于多线程的文章第五篇关于 多线程代码案例二 阻塞队列 如果有不足的或者错误的请您指出! 目录 2.阻塞队列2.1常见队列2.2 生产者消费者模型有利于进行解耦合程序进行削峰填谷…

第六十五回 时迁火烧翠云楼 吴用智取大名府-羊驼大模型的部署应用:llama.cpp和llama.c纯c编译安装部署 以及Ollama一键部署

吴用献计说,初春元宵节的时候,大名府每年都例行张灯,咱们里应外和就能破城。鼓上蚤石迁自告奋勇去城里放火策应。 大名府里梁中书最后决定还是照常张灯放火。石迁翻墙入城,城里客店却不收单身的客人,晚上就到东岳庙神…

Docker(九):MySQL主从复制搭建

一:master 1.1 /mydata/mysql-master/conf/my.conf [mysqld] #同一局域网需要唯一 server_id101 # 不需要同步的数据库 binlog-ignore-dbmysql # 开启二进制日志 log-binmall-mysql-bin # 二进制日志使用内存大小 binlog_cache_size1M # 二进制日志格式 binlog_fo…

XiaodiSec day008 Learn Note 小迪渗透学习笔记

XiaodiSec day008 Learn Note 小迪渗透学习笔记 记录得比较凌乱,不尽详细 获取目标的服务厂商 获得目标的网络架构 外网内网 访问外网ip, 交换机将数据交给内网 映射反向代理 应用协议&内网资源 同一网段的ip也可能是目标的资产 扫外网ip,扫不…

javaWeb项目-智能仓储系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、JSP技术 JSP(Jav…

【InternLM 实战营第二期笔记】LMDeploy 量化部署 LLMVLM实战

Huggingface与TurboMind介绍 Huggingface HuggingFace是一个高速发展的社区,包括Meta、Google、Microsoft、Amazon在内的超过5000家组织机构在为HuggingFace开源社区贡献代码、数据集和模型。可以认为是一个针对深度学习模型和数据集的在线托管社区,如…

系统分析与设计(2)

电子商务(e-commerce) 电子业务(e-business) 数据(Data) 信息(Information) 知识(Knowledge) 知识产权管理(knowledge Asset Management&#xff…