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

想品客老师的第十一天:模块化开发

模块化概念

模块化开发可以提高代码的可维护性、可读性和复用性,同时降低开发和调试的复杂性,把业务根据功能分开写,解决变量命名的冲突,可以开放部分接口给类(例如调用模块里的一个函数)也更适合团队协作

模块化的开发方式可以提供代码复用率,方便进行代码的管理。通常来说,一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前流行的js模块化规范有CommonJS、AMD、CMD以及ES6的模块系统。

开发一个模块管理工具

在这里我们自己写一个,可以更好的理解模块管理

实现模块的添加、定义、依赖,使用容器管理模块

其他想说的都在代码里了:

   let module = (function () {
            const moduleList = {}//存储模块
            function define(name, modules, action) {
                modules.map((m, i) => {
                    modules[i] = moduleList[m]
                })//map方法的参数,m是模块,i是编号,从容器里拿出来
                moduleList[name] = action.apply(null, modules)//在模块容器里放一个模块,初始化的时候会执行
                //console.log(moduleList)
            }
            return { define }
        })()//一个立即执行函数
        //module.define(name, modules, function (){})是在定义模块,name是模块的名字,modules表示依赖哪个模块,function表示模块的具体动作
        module.define('count', [], function () {//[]表示不依赖别的模块
            return {
                first(arr) {//返回第一个元素的功能
                    return arr[0]
                },
                max(arr, key) {//返回最大元素的功能
                    return arr.sort((a, b) => b[key] - a[key])[0]
                }
            }//return,导出
        })//count模块,对外输出了两个函数
        module.define('lesson', ['count'], function (result) {//['count']是在导入,result是count的结果
            let data = [
                { name: 'js', price: 199 }, { name: 'mysql', price: 78 }
            ]
            console.log(result.max(data, 'price'))//{name: 'js', price: 199}
        })


        //我是一条分割线,下面的是有模块依赖的使用
        module.define('User', [], function () {
            return {
                site: '我是初始值',
                url: '我是初始url'
            }
        })
        module.define('change', ['User'], function (User) {
            User.site = '初始值在change模块被改变了'
        })//模块的改变是全局的
        module.define('show', ['User'], function (User) {
            console.log('我是show模块', User)
        })

模块的基本使用

我和草,能不能张口就是我没学过的东西

先发再写


http://www.kler.cn/a/532095.html

相关文章:

  • SpringAI 人工智能
  • Kotlin 使用 Springboot 反射执行方法并自动传参
  • AI智慧社区--Excel表的导入导出
  • XCCL、NCCL、HCCL通信库
  • QT交叉编译环境搭建(Cmake和qmake)
  • DeepSeek超越ChatGPT的能力及部分核心原理
  • Java线程创建与管理:继承、实现、Callable与线程池
  • 【Java知识】使用Java实现地址逆向解析到区划信息
  • sql字符串函数及字符拼接函数
  • kubernetes 核心技术-集群安全机制 RBAC
  • 流式学习(简易版)
  • 刷题笔记 哈希表-1 哈希表理论基础
  • AI 编程工具—Cursor进阶使用 Agent模式
  • 【棋弈云端】网页五子棋项目测试报告
  • 趣味Python100例初学者练习01
  • Chapter 6 -Fine-tuning for classification
  • 解析Python装饰器高级用法6项
  • 算法随笔_38: 最多能完成排序的块
  • 蓝桥杯真题 - 子串简写 - 题解
  • 开源 CSS 框架 Tailwind CSS
  • upload-labs安装与配置
  • SQL Server中DENSE_RANK()函数:简洁处理连续排名
  • 数据结构:树和二叉树概念_堆篇
  • apikey存储方案探秘(deepseek-R1对话)
  • 九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)
  • RabbitMQ深度探索:死信队列