模块化开发

面向对象模块和包 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,可以用于前端模块化使用,根据实际使用引入,减少资源加载。 立即下载

相关推荐

dreamerv3复现教程

由于dreamerv3存在很多版本冲突问题,所以很难直接使用和复现。

无人机飞啊飞啊飞 2837

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

Langfuse实战:从评估打分到问题解决的完整指南

本文详细介绍了如何利用开源LLM工程平台Langfuse对AI应用进行系统性评估与优化。从创建评估数据集、设计自动化评分函数,到深入排查常见问题并关联Trace进行精准打分,提供了完整的实战指南。最后,探讨了如何利用评估结果驱动提示词迭代与A/B测试,并给出了生产环境部署与性能优化的关键考量,帮助开发者构建可测量、可分析、可改进的LLM应用。

backprop5master的博客 651

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

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

wanmeijuhao的博客 471

片上眼图(Eye-opening monitor)

当它们值不同的时候error counter +1,通过统计RX到的码元个数、error counter,可以获得offset sampler上下左右不停的调整位置时的一个误码率(BER),通过这个误码率去描绘出眼图。如上图所示,eye-scan RX端 offset sampler独立且并行的和使用CDR sample的采样电路一起跑,offset-sampler可以任意调整水平(time)和垂直(voltage)方向的偏移(如下图所示),在一个UI内产生一个全新的sample点。

沈土豪的书屋 4419

comfyui从入门到精通二:提示词规则详解

《AI绘画提示词使用全指南》摘要: 本文系统解析AI绘画提示词的核心规则与实用技巧。关键点包括:1) 空格与下划线的本质差异,webui会自动转换但comfyui保留原格式;2) 数字与单词表达(如1girl/one girl)会导致风格变化;3) 三种权重控制方式(数值标注、括号嵌套、位置效应),其中数值标注最直观有效;4) 位置衰减公式揭示提示词排序对效果的影响权重。同时指出当前AI绘画仍存在角色一致性等更复杂的技术瓶颈。全文通过多组对比实验,为创作者提供从基础语法到高阶控制的完整解决方案。

ScottePerk的博客 1936

模块化开发简述

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

陈荣亮的博客 1万+

Ubuntu22.04实战:基于VLLM高效部署Qwen3系列模型并构建Dify智能体

本文详细介绍了在Ubuntu22.04系统上使用VLLM高效部署Qwen3系列模型并集成Dify平台的实战指南。从环境配置、Conda管理到VLLM优化部署,再到Dify智能体构建,提供了全面的技术方案和性能调优建议,帮助开发者快速实现AI模型的高效部署与应用。

weixin_28323057的博客 161

Java 模块化开发

Java模块化开发

功不唐捐,玉汝于成 2879

详解如何用爬虫工具批量采集阿里巴巴批发网商品数据

本文主要介绍如何使用后羿采集器的智能模式,免费采集阿里巴巴批发网商品的批发价格、发货时间、是否代发等信息。 采集字段: 商品标题、商品链接、图片链接、标签1、标签2、标签3、价格、30天成交数、 评价、店铺 功能点目录: 如何对采集字段进行配置 如何采集列表+详情页类型网页 采集结果预览: 下面我们来详细介绍一下如何免费采集1688批发网的商品数据,我们以“羽绒服女”为例,具体步骤如下: 步骤一...

weixin_43777427的博客 1万+

海思Hi3061M MCU:为高速吹风筒市场注入智能动力

此外,海思还提供了丰富的软件开发工具和生态环境组件,帮助开发者快速实现复杂功能。高速吹风筒因其高效的风力和快速的干燥效果,近年来在市场上越来越受欢迎。然而,传统的高速吹风筒在性能、噪音和使用寿命等方面仍有改进的空间。凭借其高性能、低功耗、低噪声和易用的开发工具,为高速吹风筒市场带来了全新的解决方案。这不仅提高了用户的使用体验,还延长了电机的使用寿命。这不仅减少了电机的电磁噪声,还提高了电机的运行效率。还支持风机顺逆风启动适配多种电阻范围的电机,进一步提高了吹风筒的适用性和灵活性。

2401_83448585的博客 2016

前端模块化开发

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

whisper49的博客 2018

基于全局和局部接受性因果特征的广义学习模型,用于在线增量机械故障诊断

本文提出了一种**因果广义学习模型(CBLM)**,用于在线增量机械故障诊断。该模型结合了**全局因果特征**(时域、频域、故障特征频率均值)和**多尺度局部因果特征**(通过扩张卷积提取),构建了一个具有**增量学习能力**的广泛学习系统(BLS)。CBLM支持**结构增量学习**(增加增强节点)和**样本增量学习**(动态更新权重),无需重新训练整个模型,显著提高了计算效率和诊断精度。在两个滚动轴承数据集上的实验表明,CBLM在诊断准确性和训练时间上均优于传统深度学习模型,适用于在线实时故障诊断。

huanghm88的专栏 388

什么叫做前端模块化开发

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

weixin_42228984的博客 928

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

A_one2010的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android 模块化开发

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

weixin_40763897的博客 3988

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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、付费专栏及课程。

余额充值