模块化开发

面向对象模块和包 1.1 模块 参考链接: 【Python 面向对象】模块和包 来源:优快云 Python面向对象——模块和包 来源:优快云 概念: 每一个以py为拓展名的python源文件都是一个模块,模块类似于一个工具包,在模块中定义的全局变量、函数、类都是提供给外界的工具,若要使用该包中的工具,则先导入此模块 模块化: 模块化是指将一个完整的程序分解为一个一个模块,完整的程序由多个模块组成 模块化优点: 方便开发、维护 模块具有复用性 1.2 模块的使用 模块的导入: 方法一:一次性把模块中的所用变量 阅读详情

模块化开发

requirejs

RequireJS的目标是鼓励代码的模块化,它使用在js中加载js文件的方式代替传统的script加载步骤。可以用它来加速、优化代码,但其主要目的还是为了代码的模块化。

requirejs的出现主要解决两个问题:

1. 实现js文件的异步加载,避免网页失去响应;

2. 管理模块之间的依赖性,便于代码的编写和维护。

1使用

按照requireJS当中的规范要求,你只需加载一个文件就可以而,并指定页面主模块main.js,由于requirejs默认的文件后缀名是js,所以可以把main.js简写成main。

   <script src ="require.js" data-main ="main"></script>

1.1data-main

data-main属性的作用是,指定网页程序的主模块,main.js文件如下:

    //main.js-----

    requirejs(['common','moduleA','moduleB','moduleC'],function(jq){

        //这里的代码等common,moduleA,moduleB,moduleC模块都加载完成后执行

        //但不保证以上模块的加载顺序

    });

1.2 baseUrl

基础路径baseUrl,任何文件的加载都是基于此路径。

1. 默认值是加载require.js的HTML文件所在的路径;

2. 但如果用了data-main属性,则主模块所在的目录就变成baseUrl。

1.3常用方法

1. 配置参数:requirejs.config/require.config

2. 加载模块:requirejs/require

3. 定义模块:define

1.4配置config

这个require.js你可以从官网下载,这个config.js你必须自己完成。不用担心,它写起来非常简单:

   //config.js-----

    requirejs.config({

        baseUrl : "js",

        paths : {

             "jquery": "lib/jquery.1.11.3"

        }

    });

1.4.1 baseUrl

指定基础路径。

1.4.2 paths

path映射那些不直接放置于baseUrl下的模块名。设置path时起始位置是相对于baseUrl的。

例如:以上配置路径 “jquery”: “lib/jquery.1.11.3”
冒号左边jquery模块名称,右边则是文件路径,注意文件没有后缀名,因为在require看来所有的模块都是JS文件。真实路径为:js/lib/jquery.1.11.3.js

1.4.3 shim配置

严格意义上来说,requirejs必须加载由define()函数定义的模块,但有一些插件,本身未return任何对象或函数,只是对某个框架的扩展,例如 jquery.scroll.js 该怎么实现模块化加载,答案是shim配置。

    requirejs.config({

         baseUrl: "js",

         paths: {

             "jquery" :  "lib/jquery.1.11.3",

             "jquery.scroll" : "lib/jquery.scroll"

         },

         shim: {

             "jquery.scroll": {

                 deps: ["jquery"],//设置依赖

                 exports: "jQuery.fn.scroll"

             }

        }

    });

1.5加载模块

以上配置好后,就可以加载模块了,如加载jquery只需如下代码:

    requirejs(['jquery'],function(jq){

        //这里的jq就是jquery,原理请看模块的定义

    });

1.6定义模块define

1.6.1使用defined方法的规范要求

使用defined方法定义模块必须符合require的规范要求,格式如下:

//把commonjs定义成模块

//在引入模块时,回调函数中得到什么取决于定义模块时返回了什么

define(function(){

     return {

          getStyle : function(){ ........ },

          randomColor : function(){ ......... }

     }

});

1.6.2预加载

如果定义的模块需依赖其他模块,格式如下,这种模块加载方式称为:预加载

    //本模块依赖jquery

    //第一个参数为依赖模块,可以是多个,这里的路径同样基于baseUrl或path

    define(["jquery"],function(jq){

        return {

            start: function(){

                jq("#box").show(1000);

                console.log("模块提供的start方法");

            }

        }

    });

1.6.3延迟加载

如果需要在define内部依赖其他模块,则写法如下,这种模块加载方式称为:延迟加载。

    define(["require","jquery"],function(require){

        var a = require('./js/a');

    });

2模块开发的优点

1.避免命名冲突
你有没有发现,整个项目当中,再也没有出现一个全局变量?即使两个框架名字冲突了也没关系。

2.更好的依赖处理
你有没有发现,你再也没有考虑过加载顺序的问题?

3.按需加载
更好的代码组织方式,而且你肯定没有发现,所有的JS文件的加载过程,已经变成了异步。

4.面向对象编程
最后,你还发现,用了requireJS,你的代码想不写成面相对象都难。

3模块化规范与框架

1.commonJS:通用的模块规范(同步);
模块化框架:nodejs

2.AMD:异步模块定义规范(预加载);
模块化框架:requirejs

3.CMD:通用模块定义规范(延迟加载)。
模块化框架:seajs

用于前端模块化使用的jq 专用jq是经过打包的jq,可以用于前端模块化使用,根据实际使用引入,减少资源加载。 立即下载

相关推荐

关于卷积过程中通道数如何变化问题

对卷积操作前后通道数问题进行解释,输出通道数=卷积核的个数。

你好,明天,,的博客 4316

jquery模块化 (简单的选项卡)

简单的选项卡,利用index()与eq()的对应 &lt;div&gt; &lt;ul class="tab"&gt; &lt;li class="select"&gt;页面一&lt;/li&gt; &lt;li&gt;页面二&lt;/li&gt; &lt;li&gt;页面三&lt;/li&

Lisunlight的博客 1143

Windows本地部署Qwen3-14B实战指南:Ollama+Open WebUI零Docker方案

大语言模型本地部署是AI工程化落地的关键环节,其核心在于推理框架兼容性、硬件加速适配性与端到端稳定性。Ollama作为轻量级模型运行时,原生支持Windows DirectML与CUDA,规避了Docker/WSL2虚拟化开销和llama.cpp编译风险;Qwen3-14B则凭借128K上下文、Tool Calling原生支持及中文长文本结构化能力,成为政务、金融等场景首选。本文聚焦Windows平台真实约束——显存阈值、驱动版本匹配、路径编码兼容、离线知识库集成(RAG)等工程细节,提供经63台Windo

weixin_32136203的博客 413

前端性能优化四十二:模块化加载方案

【代码】前端性能优化四十二:模块化加载方案。

wanmeijuhao的博客 471

华为校招实习机试&华为社招机试20240619-2.排列组合的回文字符串[200分]( Java | Python3 | C++ | C语言 | JsNode | Go)实现100%通过率

如果一个字符串和它反转后的字符串相同,我们称这个字符串为回文字符串,如"aba"是一个回文字符串,"abb"不是一个回文字符串(长度为1的字符串也是回文字符串)。现给定一个字符串,其长度范围为:[1,1000),返回其通过重新排列组合后所有可能的回文字符串的个数(需要去除重复的组合)。返回其通过重新排列组合后所有可能的回文字符串的个数,去除重复的组合后的回文字符串是"abba","baab",因此返回2。解释:排列组合后的回文字符串是"abba" , "baab",因此结果为2。

算法算法算法!!! 831

ArcMap|时空地理加权回归(GTWR)

ArcGIS的GTWR插件下载地址:https://www.researchgate.net/publication/329518786_GTWR_ADDIN_Valid_till_Dec_31_2022 更详细的操作参考: https://www.bilibili.com/video/BV1fR4y1M7xB?spm_id_from=333.999.0.0 https://blog.youkuaiyun.com/weixin_40008135/article/details/112693520 双击“GTWR_Be

个人学习笔记 1万+

模块化开发简述

模块化开发简述 都说模块化开发为前端发展带来了巨大的进步,然而不熟悉的人看着也是两眼一懵,那其实这到底是什么?好处在哪?我来说说自己的见解吧。 1. 模块化和传统开发的区别 实话讲,其实在我看来,两者的开发是一样的,除了方式不一样,达到的效果并没两样。 看着扯淡,但实际可以想一下,现流行的模块化开发主要有两种方式: 依赖加载。这种方式是最广泛的,像requirejs,sea....

陈荣亮的博客 1万+

K8s-K8s部署Zookeeper+Kafka+ELFK+持久化数据

K8s环境下容器化部署`Zookeeper+Kafka+ELFK`日志收集系统

✅ 专注企业级 Linux/DevOps 运维的实战派 ✅ 已输出上百篇可落地方案 ✅ Shell 脚本开箱即用 ✅ K8s/YAML 环境验证 ✅ 故障排查链路完整复现 1916

Java 模块化开发

Java模块化开发

功不唐捐,玉汝于成 2879

R语言机器学习算法实战系列(四)随机森林算法分类器+SHAP值 (Random Forest)

本文介绍了如何使用R语言实现随机森林算法,用于构建乳腺癌分类器。随机森林通过多棵决策树投票判断标签,具有避免偏差和提升模型效果的优势。文章详细讲解了数据下载、R包加载、数据预处理、特征选择、模型构建与评估等步骤。数据集包含569份恶性和良性肿瘤样本的32类指标,通过随机森林模型进行特征选择和分类。最终,文章提供了完整的代码和可视化结果,帮助读者理解并实现随机森林算法。

专注生信领域 3322

数据分享|1961-2017年中国0.25°×0.25° 逐日地表水文数据集(VIC-CN05.1)

其中,全球径流中心(University of New Hampshire and Global Runoff Data Centre, UNH/GRDC)的复合产流场集成了观测的河道径流和水量平衡模式模拟的地表和地下径流,常被用来评估模拟的径流。在长白山、海北灌丛和千烟洲通量站,模拟与观测的逐月潜热通量的平均NSE为0.61。VIC-CN05.1受益于较准确的大气驱动场、先进的地表水文参数化方案以及更真实丰富的土壤信息,可作为中国水文气象研究的参照数据,用于陆面模式的评估和长期的趋势分析等。

J_Giser的博客 1834

前端模块化开发

一、模块化概述 1.概念 随着前端应用日趋复杂,项目代码也大量膨胀,模块化就是一种最主流的代码组织方式 一个模块就是一个实现特定功能的文件,它通过把我们的复杂代码按照功能的不同,划分为不同的模块单独维护的这种方式,去提高我们的开发效率,降低维护成本。要用什么功能就加载什么模块 模块化开发是当下最重要的前端开发范式之一,其只是思想,不包含具体实现 2.模块化开发的好处 避免变量污染、命名冲突等 提高代码复用率 提高维护性 依赖关系的管理 3.模块化演变过程 (1)文件划分方式 将每个功能和相关的一些

whisper49的博客 2018

基于Simulink实现电动汽车制动能量回收系统的仿真

通过上述步骤,我们成功实现了基于Simulink的电动汽车制动能量回收系统的仿真研究。该系统能够全面评估制动能量回收系统的性能,验证控制策略的有效性,并通过优化设计提高能量回收效率和制动安全性。引入智能预测:结合人工智能技术,实现更智能的能量回收控制策略。扩展功能:增加对多种车型和制动场景的支持,提升系统通用性。实验验证:将仿真模型应用于实际硬件,进行实验验证,评估其在实际工况下的表现。

xiaoheshang_123的博客 336

什么叫做前端模块化开发

1.将单独一个功能封装到一个模块(文件)当中,实现功能之间的相互隔离,2.但又向外提供特定的接口公开模块内部的成员,3. 在模块内部也能引入别的模块功能的操作能实现以上三个功能操作就是 模块化。可以看出它能有效地解决传统开发的两大问题。

weixin_42228984的博客 928

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

什么是模块化,模块化开发如何实现?

相信广大前端朋友们都遇到过这么一个问题?  什么是模块化,模块化开发如何实现? 那么什么是模块化呢,时下流行的库与框架又有哪些在利用模块化进行开发呢? 今天我从以下两个方向来进行描述,如果描述不够准确,还请各位多多指正。 1.什么是模块化?    模块化就是讲js文件按照功能分离,根据需求引入不同的文件中。源于服务器端。 在前段开发中,最先出现在node.js中,commne.js中

A_one2010的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android 模块化开发

概述 单独开发每个模块,用集成的方式把他们组合起来,拼出一个app。如通用的模块,自动更新的模块,反馈模块,推送模块都可以单独以模块来开发,最后进行集成。我们可以通过一个壳来包含很多个模块。 好处 可以单独升级模块。耦合度低。同时,也很好地解决了“牵一发而动全身”的问题。方便分工。与其他团队合作时,如外包的团队,可以很好的地将核心代码与外包部分隔离开,不用和他们分享核心代码,让他们去做独立的功能,...

weixin_40763897的博客 3988

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

js 模块化开发

原文链接 什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得前端开发得到重视,也使得前端项目越来越复杂,然而,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念,更不用说模块(module)

只是作为自己的技术记录博客 6319
上一篇: jQuery
下一篇: Git
Hyperyou
博客等级 码龄9年 8粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值