CommonJS 模块编程(新思路方便复习笔记)

简介: CommonJS 模块编程(新思路方便复习笔记)

CommonJS 模块编程(新思路方便复习笔记)

基本介绍


1 传统非模块化开发有如下的缺点:(1)命名冲突 (2)文件依赖[代码演示]


2 Javascript 代码越来越庞大,Javascript 引入模块化编程,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块


3 Javascript 使用"模 块"(module)的概念来实现模块化编程, 解决非模块化编程问题


4 模块化 也是 ES6 的新特性

模块化编程原理示意图

模块化编程分类

  1. CommonJS 模块化规范/ES5 的写法
  2. ES6 模块化规范

CommonJS 模块编程

介绍


1. 每个 js 文件就是一个模块,有自己的作用域。在文件中定义的变量、函数、类/对象,都是私有的,对其他 js 文件不可见


2. CommonJS 使用 module.exports={} / exports={} 导出 模块 , 使用 let/const 名称 =require("xx.js") 导入模块

应用实例

1. 需求说明


1) 编写 functions.js , 该文件有函数,变量, 常量, 对象, 数组。。。


2) 要求在 use.js , 可以使用到 function.js 中定义的 函数/变量/常量/对象


3) 请使用模块化编程的方式完成, 将各种写法都写一下

2. 思路分析/图解

3. 代码实现

创建 function.js


定义对象,变量,常量, 函数


导出解读


1. module.exports 导出模块


2. 把你需要导出的数据, 写入到 {}中即可


3. 可以全部导出,也可以部分导出


4. 理解:相当于把我们导出的数据,当做一个对象


5. 如果属性名和函数/变量/对象..名字相同,可以简写


6. 有些前端, 简写 module.exports={} 成 exports={}

//定义对象,变量,常量, 函数
const sum = function (a, b) {
    return parseInt(a) + parseInt(b);
}
const sub = function (a, b) {
    return parseInt(a) - parseInt(b);
}
let name = "xxxx";
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
}
// module.exports = {
//     sum,
//     sub,
//     name,
//     PI
// }
// module.exports = {
//     sum: sum,
//     sub: sub,
//     myname: name,
//     PI: PI
// }
创建use.html

在html文件中要使用js

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>use</title>
    <!--在html文件中要使用js-->
    <script type="text/javascript" src="./function.js"></script>
</head>
<body>
</body>
</html>
创建use.js

导入解读

1. 在es5中, 我们通过 require 就包 对应.js中的数据/对象,引入

2. 我们使用的时候,通过m.属性 就可以使用

3. 如果我们导入时,不需要所有的,可以导入部分数据

使用

说明: 只要这里idea可以识别变量/函数/对象, 说明OK

//导入
//解读
//1. 在es5中, 我们通过 require 就包 对应.js中的
//数据/对象,引入
//2. 我们使用的时候,通过m.属性 就可以使用
//3. 如果我们导入时,不需要所有的,可以导入部分数据
const m = require("./function.js");
const {sub} = require("./function.js");
//使用
//说明: 只要这里idea可以识别变量/函数/对象, 说明OK
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));

4. 要看运行效果,需要 Node 环境, node 环境这里为了简单, 只要 use.js 可以解析 sum 和 sub 说明是正确


目录
相关文章
|
C++
VS Code识别编辑规范,ESlint规则,VS Code保存去掉自动加分号、逗号、双引号
书写规范是非常重要的,除了统一,还要简洁。 1、VS Code识别编辑规范 在项目根目录新建.editorconfig文件,加入设置:
1225 0
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
|
编解码 前端开发 UED
如何巧妙利用CSS3,打造炫酷视觉效果
在使用CSS3打造炫酷视觉效果时,要注意适度使用,避免过度设计导致页面过于复杂和混乱,影响用户的阅读和浏览体验。同时,要确保所使用的效果在不同的浏览器和设备上具有良好的兼容性,以提供一致的视觉效果。
435 137
|
人工智能 数据可视化 TensorFlow
从Tensorflow模型文件中解析并显示网络结构图(CKPT模型篇)
从Tensorflow模型文件中解析并显示网络结构图(CKPT模型篇)
从Tensorflow模型文件中解析并显示网络结构图(CKPT模型篇)
|
图形学 Android开发 开发者
U3D游戏开发实战:有效策略缩小包体大小,提升加载速度
【7月更文第12天】随着移动设备的普及,Unity 3D(简称U3D)作为一款强大的跨平台游戏开发引擎,成为了众多独立开发者和游戏工作室的首选。然而,面对日益增长的用户需求与有限的设备存储空间,如何在保证游戏质量的同时,有效缩减游戏包体大小,成为了开发者面临的一大挑战。本文将探讨一系列实用技巧和最佳实践,帮助你在U3D开发小游戏时显著减小包体尺寸,从而提升玩家的下载体验与启动速度。
506 12
|
缓存 测试技术 Apache
ab 压测工具:评估你的服务器性能
ApacheBench (AB) 是一款用于 HTTP 性能测试的轻量级工具,可模拟多用户并发访问,评估应用在高负载下的表现。通过命令行参数 `-n` 和 `-c` 分别设置总请求数和并发数,例如 `ab -n 100 -c 2 http://larablog.test/`。
579 1
|
缓存 数据库
高并发场景下,到底先更新缓存还是先更新数据库?
高并发场景下,到底先更新缓存还是先更新数据库?
200 0
|
搜索推荐 测试技术 开发工具
NumPy 秘籍中文第二版:七、性能分析和调试
NumPy 秘籍中文第二版:七、性能分析和调试
261 0
|
存储 算法 算法框架/工具
【opencv】计算机视觉:实时目标追踪
【opencv】计算机视觉:实时目标追踪
372 0
|
算法 测试技术 开发工具
[软件工程导论(第六版)]第1章 软件工程学概述(复习笔记)
[软件工程导论(第六版)]第1章 软件工程学概述(复习笔记)

热门文章

最新文章