国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

什么是模塊化?為什么要進(jìn)行模塊化開發(fā)?

這篇具有很好參考價(jià)值的文章主要介紹了什么是模塊化?為什么要進(jìn)行模塊化開發(fā)?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

模塊化是一種軟件開發(fā)的設(shè)計(jì)模式,它將一個(gè)大型的軟件系統(tǒng)劃分成多個(gè)獨(dú)立的模塊,每個(gè)模塊都有自己的功能和接口,并且能夠與其他模塊獨(dú)立地工作。

?先來(lái)一段八股文

模塊化開發(fā)可以帶來(lái)以下好處:

  • 提高代碼的復(fù)用性:模塊化可以將代碼劃分成可重用的部分,降低代碼的冗余和重復(fù),提高代碼的復(fù)用性。

  • 簡(jiǎn)化代碼的維護(hù)和調(diào)試:當(dāng)一個(gè)軟件系統(tǒng)變得越來(lái)越復(fù)雜時(shí),進(jìn)行模塊化開發(fā)可以使得每個(gè)模塊都相對(duì)獨(dú)立,這樣就可以方便地維護(hù)和調(diào)試每個(gè)模塊,而不必考慮整個(gè)系統(tǒng)的復(fù)雜性。

  • 提高代碼的可讀性:模塊化可以使得代碼更加結(jié)構(gòu)化,清晰明了,從而提高代碼的可讀性和可維護(hù)性。

  • 提高開發(fā)效率:模塊化開發(fā)可以使得團(tuán)隊(duì)成員在不同模塊上并行開發(fā),從而提高開發(fā)效率。

  • 降低項(xiàng)目的風(fēng)險(xiǎn):模塊化開發(fā)可以使得開發(fā)人員更加關(guān)注模塊之間的接口和依賴關(guān)系,從而降低項(xiàng)目的風(fēng)險(xiǎn)。

總之,模塊化開發(fā)是一種有效的軟件開發(fā)模式,可以提高軟件開發(fā)的質(zhì)量、效率和可維護(hù)性,特別是在大型軟件系統(tǒng)的開發(fā)中,模塊化更是必不可少的。

實(shí)際工作中如何使用

場(chǎng)景一:在前后端交互的ajax請(qǐng)求中,對(duì)不同的請(qǐng)求進(jìn)行分類,每一個(gè)種類的業(yè)務(wù)放到一個(gè)模塊中,有用戶相關(guān)的、商品列表相關(guān)的、訂單相關(guān)的各種,為了使業(yè)務(wù)邏輯更加清晰,更改相關(guān)代碼的時(shí)候,只需要找到對(duì)應(yīng)的文件,用戶相關(guān)的就去user.js修改,商品相關(guān)的就去goods.js修改等等,是不是清楚多了,這是不是好用多了?

來(lái)看看示例user.js

import axios from?'../utils/request'
import md5 from?'md5'

//?登錄
export?const login?=?async?(params)=>{
??let?{data}?=?await axios.post('users/login',{params})
??if(data.success){
????//?在瀏覽器緩存中存儲(chǔ)token
????sessionStorage.setItem('token',data.token)
??}
??return?data
}
//?修改密碼
export?const resetPwd?=?async?(params)=>{
??//?要對(duì)密碼加密
??let?{data}?=?await axios.post('users/resetPwd',params)
??return?data
}
//...other business

示例,goods.js

export?const getDetail?=?async?(id)=>?{
??let?{data}?=??axios.get(`/goods/detail/${id}`);
??return?data
}

export?const getCategory?=?async?()?=>{
??let?{data}?=??axios.get('/categories');
??return?data
}

export?const search?=?(params)?=>{
??let?{data}?=??axios.get('/search',?{?params?});
??return?data
}

每個(gè)js(模塊)都有自己的相關(guān)的代碼,代碼之間互不影響。

如下代碼所示,所有的請(qǐng)求都放到一個(gè)文件中,不分模塊

import axios from?'../utils/request'
import md5 from?'md5'

//?登錄
export?const login?=?async?(params)=>{
??let?{data}?=?await axios.post('users/login',{params})
??if(data.success){
????//?在瀏覽器緩存中存儲(chǔ)token
????sessionStorage.setItem('token',data.token)
??}
??return?data
}
//查詢商品
export?const search?=?(params)?=>{
??let?{data}?=??axios.get('/search',?{?params?});
??return?data
}

//?修改密碼
export?const resetPwd?=?async?(params)=>{
??//?要對(duì)密碼加密
??let?{data}?=?await axios.post('users/resetPwd',params)
??return?data
}
//商品詳情
export?const getDetail?=?async?(id)=>?{
??let?{data}?=??axios.get(`/goods/detail/${id}`);
??return?data
}
//獲取商品分類
export?const getCategory?=?async?()?=>{
??let?{data}?=??axios.get('/categories');
??return?data
}

//...other business

是不是很亂,這只是一點(diǎn)點(diǎn)業(yè)務(wù),如果大一點(diǎn)業(yè)務(wù)系統(tǒng),里面有百十個(gè)接口,如果不能按照模塊劃分,代碼就會(huì)是一座屎山,多人協(xié)作會(huì)出問(wèn)題、代碼維護(hù)無(wú)從下手

場(chǎng)景二:大家都知道單頁(yè)面應(yīng)用程序,他的最大優(yōu)勢(shì)就是不用切換頁(yè)面,對(duì)用戶體驗(yàn)極好。例如vue常見(jiàn)的頁(yè)面是頭、尾、菜單不動(dòng),只有內(nèi)容區(qū)域動(dòng),在dom中扣去一塊舊的,換一塊新的,這樣看來(lái),每一塊都應(yīng)該是獨(dú)立存在的,也就是咱們常見(jiàn)的.vue文件,使用webpack將.vue文件轉(zhuǎn)為.js文件,這個(gè)js就是一個(gè)模塊化的文件,通過(guò)路由把頁(yè)面和名字進(jìn)行關(guān)聯(lián),扣掉和換上新的都需要操作路由來(lái)完成

總結(jié)一下,模塊化其實(shí)就是分門別類。

?附加幾種模塊化語(yǔ)法

不管哪種語(yǔ)法,只是一種固定的寫法,重點(diǎn)了解兩個(gè)概念,一個(gè)導(dǎo)出(暴露當(dāng)前模塊),一個(gè)導(dǎo)入(用那個(gè)模塊)

1.?CommonJS

CommonJS 是一種用于服務(wù)器端 JavaScript 的模塊化規(guī)范,使用 require 和 module.exports 導(dǎo)出和引入模塊。例如:

//?math.js
const add?=?(a,?b)?=>?a?+?b;
const subtract?=?(a,?b)?=>?a?-?b;
const hello?=?()?=>?'千鋒,你好';

module.exports?=?{
??add,
??subtract,
??hello
};

//?app.js
const math?=?require('./math');

console.log(math.add(2,?3));?//?輸出?5
console.log(math.subtract(3,?2));?//?輸出?1
console.log(math.hello);?//?輸出千鋒,你好

2.?AMD

AMD(Asynchronous Module Definition,異步模塊定義)是用于瀏覽器端 JavaScript 的模塊化規(guī)范,使用 define 定義模塊,通過(guò) require 異步加載模塊。例如:

//?math.js
//define第一個(gè)參數(shù)表示當(dāng)前模塊所依賴的模塊,可以是一個(gè)字符串?dāng)?shù)組,也可以是一個(gè)函數(shù)
//?定義一個(gè)名為?"math"?的模塊,依賴于?"jquery"?和?"underscore"?兩個(gè)模塊
define(['jquery',?'underscore'],?function($,?_)?{
??//?定義模塊的功能
??const add?=?function(a,?b)?{
????return?a?+?b;
??};
??const multiply?=?function(a,?b)?{
????return?a?*?b;
??};
??const?test?=?()=>{
????var arr?=?['foo',?'bar',?'qfedu'];
????var arrUpper?=?_.map(arr,?function(str)?{
??????return?str.toUpperCase();
????});
????return??arrUpper;
??}
??
??//?導(dǎo)出模塊的功能
??return?{
????add:?add,
????multiply:?multiply,
????test:test
??};
});

//?app.js
require(['./math'],?function(math)?{
??console.log(math.add(2,?3));?//?輸出?5
??console.log(math.subtract(3,?2));?//?輸出?1
??console.log(math.test())//輸出?["FOO",?"BAR",?"QFEDU"]
});

3.?ES6 模塊

ES6 模塊是 JavaScript 的官方模塊化規(guī)范,使用 import 和 export 導(dǎo)入和導(dǎo)出模塊。例如:

//?math.js
export?const add?=?(a,?b)?=>?a?+?b;
export?const subtract?=?(a,?b)?=>?a?-?b;

//?app.js
import?{?add,?subtract?}?from?'./math';

console.log(add(2,?3));?//?輸出?5
console.log(subtract(3,?2));?//?輸出?1

4.?UMD

UMD(Universal Module Definition,通用模塊定義)是一種支持多種模塊化規(guī)范的通用模塊化方案,它既支持 CommonJS,又支持 AMD 和全局變量。例如:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-411559.html

(function?(root,?factory)?{
??if?(typeof define?===?'function'?&&?define.amd)?{
????define(['exports'],?factory);
??}?else?if?(typeof module?===?'object'?&&?module.exports)?{
????factory(module.exports);
??}?else?{
????factory((root.myModule?=?{}));
??}
}(typeof self?!==?'undefined'???self?:?this,?function?(exports)?{
??const add?=?(a,?b)?=>?a?+?b;
??const subtract?=?(a,?b)?=>?a?-?b;

??exports.add?=?add;
??exports.subtract?=?subtract;
}));

到了這里,關(guān)于什么是模塊化?為什么要進(jìn)行模塊化開發(fā)?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【FPGA/IC】什么是模塊化設(shè)計(jì)?

    【FPGA/IC】什么是模塊化設(shè)計(jì)?

    FPGA/IC設(shè)計(jì)中根據(jù)模塊層次的不同有兩種基本的設(shè)計(jì)方法: 自下而上 方法對(duì)設(shè)計(jì)進(jìn)行逐次劃分的過(guò)程是從基本單元出發(fā)的,設(shè)計(jì)樹最末枝上的單元是已經(jīng)設(shè)計(jì)好的基本單元,或者其他項(xiàng)目開發(fā)好的單元或者IP。該方法先對(duì)底層的功能塊進(jìn)行分析,然后使用這些模塊來(lái)搭建規(guī)模

    2024年03月19日
    瀏覽(30)
  • js模塊化開發(fā)

    js模塊化開發(fā)

    ? 到底什么是模塊化、模塊化開發(fā)呢? ? 事實(shí)上模塊化開發(fā)最終的目的是將程序劃分成一個(gè)個(gè)小的結(jié)構(gòu); ? 這個(gè)結(jié)構(gòu)中編寫屬于自己的邏輯代碼,有自己的作用域,定義變量名詞時(shí)不會(huì)影響到其他的結(jié)構(gòu); ? 這個(gè)結(jié)構(gòu)可以將自己希望暴露的變量、函數(shù)、對(duì)象等導(dǎo)出給其結(jié)

    2024年02月13日
    瀏覽(28)
  • 深入理解JavaScript模塊化開發(fā)

    深入理解JavaScript模塊化開發(fā)

    前言: 隨著JavaScript應(yīng)用程序的復(fù)雜性不斷增加,模塊化開發(fā)成為了一種必備的技術(shù)。通過(guò)將代碼劃分為模塊,我們可以提高代碼的可維護(hù)性、可重用性和可擴(kuò)展性。在本文中,我們將深入探討JavaScript模塊化開發(fā)的概念、優(yōu)勢(shì)和不同的模塊化方案。 模塊化開發(fā)是將一個(gè)大型應(yīng)

    2024年02月08日
    瀏覽(41)
  • Vue的模塊化開發(fā)初探

    Vue的模塊化開發(fā)初探

    Vue是一個(gè)漸進(jìn)式JavaScript框架,可以按需引入部分功能,而不必全量引入整個(gè)框架。 2.1 下載必須模塊 在瀏覽器輸入: https://unpkg.com/vue@3/dist/vue.esm-browser.js ,右鍵另存為,保存到demo.html文件同級(jí)目錄下。 2.2 安裝Live Server插件 在VSCode插件市場(chǎng)搜索Live Server并安裝,如下圖: 2.

    2024年04月10日
    瀏覽(26)
  • 前端基礎(chǔ)(Vue的模塊化開發(fā))

    前端基礎(chǔ)(Vue的模塊化開發(fā))

    ? 前言 :前面學(xué)習(xí)了前端HTML、CSS樣式、JavaScript以及Vue框架的簡(jiǎn)單適用,接下來(lái)運(yùn)用前端模塊化編程的思想,繼續(xù)學(xué)習(xí)Vue框架,完成自己項(xiàng)目項(xiàng)目的搭建。 目錄 響應(yīng)式基礎(chǔ) ref?reactive 學(xué)習(xí)成果展示 Vue項(xiàng)目搭建 搭建自己的vue項(xiàng)目 總結(jié)? 關(guān)于ref和reactive,官方解釋如下,另外一

    2024年02月12日
    瀏覽(27)
  • LabVIEW應(yīng)用開發(fā)——VI模塊化

    LabVIEW應(yīng)用開發(fā)——VI模塊化

    ? ? ? ? 我們?cè)趯慍語(yǔ)言的時(shí)候,一些模塊化的功能或者多次調(diào)用的功能,我們一般會(huì)用一個(gè)函數(shù)封裝起來(lái),方便使用并且讓代碼看起來(lái)更加的簡(jiǎn)潔。這種函數(shù)一般都會(huì)包含這幾個(gè)概念, 輸入?yún)?shù) 、 輸出參數(shù) 和 返回值 。而LabVIEW的VI就可以當(dāng)作是一個(gè)函數(shù), 輸入?yún)?shù) 就是

    2024年02月07日
    瀏覽(28)
  • Python面向?qū)ο缶幊蹋瑢?shí)現(xiàn)模塊化開發(fā)

    面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP)是一種編程范式,它將真實(shí)世界中的事物抽象成程序中的對(duì)象,并通過(guò)對(duì)象之間的相互作用來(lái)完成程序的邏輯。 封裝 (Encapsulation) 封裝是指把數(shù)據(jù)和行為結(jié)合成一個(gè)相對(duì)獨(dú)立的整體,防止程序中其他部分直接訪問(wèn)或修改這個(gè)整體,而

    2024年02月05日
    瀏覽(95)
  • 【Unity】程序集Assembly模塊化開發(fā)

    【Unity】程序集Assembly模塊化開發(fā)

    筆者按:使用Unity版本為2021.3LTS,與其他版本或有異同。請(qǐng)僅做參考 一、簡(jiǎn)述。 本文是筆者在學(xué)習(xí)使用Unity引擎的過(guò)程中,產(chǎn)學(xué)研的一個(gè)筆記。由筆者根據(jù)官方文檔Unity User Manual 2021.3 (LTS)/腳本/Unity 架構(gòu)/腳本編譯/程序集定義相關(guān)部分結(jié)合自身經(jīng)驗(yàn)所做,有不足之處,還請(qǐng)指正

    2024年02月15日
    瀏覽(91)
  • 第四章認(rèn)識(shí)Node.js模塊化開發(fā)

    Node.js系統(tǒng)模塊 續(xù)上一篇文章第三章認(rèn)識(shí)Node.js模塊化開發(fā)-CSDN博客,這次繼續(xù)來(lái)認(rèn)識(shí)和總結(jié)以下node的常用模塊開發(fā) Node.js系統(tǒng)模塊是指Node.js自帶的一些模塊,這些模塊可以直接在Node.js中使用,無(wú)需安裝其他包。以下是常用的Node.js系統(tǒng)模塊: fs模塊:用于處理文件系統(tǒng)。 htt

    2024年02月08日
    瀏覽(24)
  • 第三章認(rèn)識(shí)Node.js模塊化開發(fā)

    目錄 認(rèn)識(shí)Node.js 概述 作用 基本使用 Node.js的運(yùn)行 Node.js的組成 Node.js的語(yǔ)法 Node.js全局對(duì)象 認(rèn)識(shí)模塊化開發(fā) 概述 場(chǎng)景 特點(diǎn) 模塊成員的導(dǎo)入和導(dǎo)出 Node.js?模塊化語(yǔ)法 導(dǎo)入模塊 導(dǎo)出模塊 ES6 模塊化語(yǔ)法 導(dǎo)入模塊 導(dǎo)出模塊 項(xiàng)目 認(rèn)識(shí)Node.js 概述 Node.js是一個(gè) 開源的、跨平臺(tái) 的

    2024年02月06日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包