當前位置:首頁 » 網頁前端 » 前端項目模塊化
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端項目模塊化

發布時間: 2022-07-18 09:17:31

『壹』 前端為什麼要使用模塊化

當嚴謹古板的德國工程師用「積木游戲」來形容未來的造車理念時,全球汽車製造業的天空徹底「變色」了。在全世界范圍內品牌和車型的設計、采購、製造的靈活度都在不斷提升的今天,一套類似於樂高積木的高集成度模塊化生產方式出現了。沒有統一著裝、埋頭苦乾的工人師傅,也沒有煙塵漫天、氣味刺鼻的車間環境,取而代之的是科技含量愈來愈高的流水線,過程愈來愈簡單的操作和愈來愈少的人力成本,這些都是模塊化生產的優勢所在。
「當今,模塊化的概念不僅是經濟學、經營學專家之間最熱門的話題之一,而且它還有可能徹底改變現存產業、企業的結構,具有十分強大的沖擊力。」國際經濟學會主席、斯坦福大學經濟學教授青木昌彥如是說。
從19世紀末的福特T型車的流水線生產,到近代以日系企業豐田為代表的精益生產方式,再到最近被媒體炒得火熱但實際推進阻力重重的大眾MQB平台,汽車的生產模式一直圍繞著兩個根本目標:降低生產成本和使用成本。進入新世紀,隨著數字化技術在生產中的應用,汽車的生產製造模式開始向集約化和標准化發展,由此帶來的生產模式的變革讓汽車「生產結構」開始趨向於電腦生產一樣簡單。
模塊化簡單來說就是「數線並產」,每條生產線產出不同的模塊,最後將所有模塊拼裝整合,工作效率以數量級方式提升。比如大眾採用的MQB平台就是將發動機、變速箱加上前軸和前懸掛放在同一模塊內,再和車身等模塊總裝。通過模塊化平台應用的加深,大量的汽車零部件實現標准化,在不同品牌和不同級別的車型中達到共享,從而實現生產從A00、A0、A到B四個級別的車型的共通生產。
隨著模塊化生產概念的不斷深入,現今的分級采購模式將不復存在,取而代之的是模塊化整體采購。現在各大主機廠的采購的是一個個零部件。日常接觸和交易對象可能是大零部件供應商,也可能是小零部件企業,而模塊化采購的交易品是高集成度的各種模塊,對象是模塊集成供應商。因此,模塊化采購使得與主機廠發生直接關系的的供應商數量大為削減,並由此改變模塊供應商與其他零部件生產企業的關系。毫不誇張的說,模塊化生產會將許多規模小、產品類型單一的供應商企業沖擊的七零八落,市場上航母級的零件供應商可以趁機重新劃定市場版圖,吞並無力支撐的中小型供應商,重組企業關系,最終完成「模塊」帝國的最後一塊拼圖。

『貳』 對前端模塊化的理解有哪些

前端模塊化指的是:
1、將一個復雜的程序依據一定的規則(規范)封裝成幾個塊(文件),
並進行組合在一起
2、塊的內部數據與實現是私有的,
只是向外部暴露一些介面(方法)與外部其它模塊通信
說白了就是把常見的工具函數和一些UI組件封裝,可以再後續的開發過程中非常方便的進行調用,這就是前端模塊化

『叄』 gulp+webpack怎麼實現前端模塊化

gulp是前端開發過程中對代碼進行構建的工具,是自動化項目的構建利器;她不僅能對網站資源進行優化,而且在開發過程中很多重復的任務能夠使用正確的工具自動完成;使用她,我們不僅可以很愉快的編寫代碼,而且大大提高我們的工作效率。

gulp是基於Nodejs的自動任務運行器, 她能自動化地完成
javascript/coffee/sass/less/html/image/css
等文件的的測試、檢查、合並、壓縮、格式化、瀏覽器自動刷新、部署文件生成,並監聽文件在改動後重復指定的這些步驟。在實現上,她借鑒了Unix操作系統的管道(pipe)思想,前一級的輸出,直接變成後一級的輸入,使得在操作上非常簡單。通過本文,我們將學習如何使用Gulp來改變開發流程,從而使開發更加快速高效。

gulp 和 grunt 非常類似,但相比於 grunt 的頻繁 IO 操作,gulp 的流操作,能更快地更便捷地完成構建工作。

webpack

Webpack 是當下最熱門的前端資源模塊化管理和打包工具。它可以將許多鬆散的模塊按照依賴和規則打包成符合生產環境部署的前端資源。還可以將按需載入的模塊進行代碼分隔,等到實際需要的時候再非同步載入。通過 loader 的轉換,任何形式的資源都可以視作模塊,比如 CommonJs 模塊、 AMD 模塊、 ES6 模塊、CSS、圖片、 JSON、Coffeescript、 LESS 等。

**當然個人還是喜歡webpack的模塊化優秀

廢話不多說現在開始gulp之旅

初始化項目(此處已經認為node環境已經安裝)

建立文件夾 名字自己隨便取 比如 gulpText,然後輸入以下命令
$ cd gulpText
$ mkdir images //建立存放圖片文件夾
$ mkdir src // 存放 js 以及css
$ mkdir index.html //主頁
$ mkdir gulpfile.js //編寫gulp 任務文件
$ mkdir mock //mock數據

然後輸入以下命令 然後一路點下去生成json文件
$npm init

打開json文件看到這樣的

1474889102536.png

全局安裝gulp以便我們運行gulp進行打包等操作
$npm install gulp -g

如果感覺npm安裝比較慢可以切換至cnpm下載,代碼如下
$npm install cnpm -g

安裝gulp包,方便我們引用gulp
$npm install gulp

成功截圖

1474889517162.png

編寫gulp任務

引入 gulp
//引入gulp
var gulp = require('gulp');

拷貝Index.html
//html
gulp.task('-index',function () {
gulp.src('./index.html')
.pipe(gulp.dest('./build'));
})

執行命令
$ gulp -index

1474890843877.png]( http://upload-images.jianshu.io/upload_images/2905209-c00d640651bde279.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )

1474890828271.png

拷貝images
// images
gulp.task('-images',function () {
gulp.src('./images**/*')
.pipe(gulp.dest('./build/'));
})

執行命令
$ gulp -iamges

1474891076408.png

1474891039689.png

css預處理

現在我們在src目錄里創建文件styles放我們的scss代碼,需要把scss代碼編譯到/build/prd/styles/下
$ cd src
$ mkdir styles
$ cd styles
$ touch app.scss
$ touch common.scss

app.scss項目代碼
@charset "UTF-8";
@import "./common.scss";
body{
background-color: $base-color;
color: #000;
font-size: 20px;
font-weight: 800;
}
html{
width: 100%;
height: 100%;
}
html{
width: 100%;
height: 100%;
}
.lsds{
width: 100px;
height: 100px;
}

common.scss代碼
$base-color:yellow;

安裝css預編譯包
$ npm install gulp-sass //sass編輯包
$ npm install gulp-minify-css'); //css壓縮包
//引入css預處理模塊
var sass= require('gulp-sass');
//引入css壓縮模塊
var minifyCSS = require('gulp-minify-css');
//css預處理

var cssFiles=[
'./src/styles/app.scss'
];
gulp.task('scss',function () {
gulp.src(cssFiles)
.pipe(sass().on('error',sass.logError))
.pipe(minifyCSS())
.pipe(gulp.dest('./build/prd/styles/'))
})

編輯scss
$ gulp scss

開啟服務

安裝server包
$ npm install gulp-webserver
//引入gulp-webserver 模塊
var server = require('gulp-webserver');
gulp.task('server',function () {
gulp.src('./')
.pipe(server({
host:'127.0.0.1', //ip
port:80, //埠
directoryListing:{
enable:true,
path:'./'
},
livereload:true,
}));
})

『肆』 什麼叫前端模塊化 前端工程化和前端模塊化是什麼意思

模塊化更一種開發規范,比如cmd amd 是為了更好的解藕,比如一個網站,按照不同的模塊來開發,比如你有個評論區,a 項目有,b 項目有,如果僅是單純的模塊開發,這個js 文件你就可以單獨來回引用,
更比如 ,一個頁面 分好多個功能, 這時候你要是都寫在一個js 中 會越來越大,
而你把他分成不同的模塊,
比如評論是一塊
分頁又是一塊,
已經上線,或你不做了,後期別人拉手,或你接手別人的項目, 這時候來個需求讓你把分頁去掉,或修改 你可以清楚的找到對應模塊文件 進行修改 或去掉
模塊是自定義的,

組件,更想當於一個通用的東西,有的分功能組件,有的分業務組件
大圖切換,這種就是單純的一個效果展示,只要調用就ok
一個分頁,也是只單純的調用,
組件更是一個多處都可以使用 ,不需要再單獨開發的

『伍』 什麼是前端模塊化開發

模塊化更一種開發規范,比如cmd amd 是為了更好的解藕,比如一個網站,按照不同的模塊來開發,比如你有個評論區,a 項目有,b 項目有,如果僅是單純的模塊開發,這個js 文件你就可以單獨來回引用,
更比如 ,一個頁面 分好多個功能, 這時候你要是都寫在一個js 中 會越來越大,
而你把他分成不同的模塊,
比如評論是一塊
分頁又是一塊,
已經上線,或你不做了,後期別人拉手,或你接手別人的項目, 這時候來個需求讓你把分頁去掉,或修改 你可以清楚的找到對應模塊文件 進行修改 或去掉
模塊是自定義的,

組件,更想當於一個通用的東西,有的分功能組件,有的分業務組件
大圖切換,這種就是單純的一個效果展示,只要調用就ok
一個分頁,也是只單純的調用,
組件更是一個多處都可以使用 ,不需要再單獨開發的

『陸』 如何理解前端模塊化

前端模塊化
在JavaScript發展初期就是為了實現簡單的頁面交互邏輯,寥寥數語即可;如今CPU、瀏覽器性能得到了極大的提升,很多頁面邏輯遷移到了客戶端(表單驗證等),隨著web2.0時代的到來,Ajax技術得到廣泛應用,jQuery等前端庫層出不窮,前端代碼日益膨脹

這時候JavaScript作為嵌入式的腳本語言的定位動搖了,JavaScript卻沒有為組織代碼提供任何明顯幫助,甚至沒有類的概念,更不用說模塊(mole)了,JavaScript極其簡單的代碼組織規范不足以駕馭如此龐大規模的代碼

模塊
既然JavaScript不能handle如此大規模的代碼,我們可以借鑒一下其它語言是怎麼處理大規模程序設計的,在Java中有一個重要帶概念——package,邏輯上相關的代碼組織到同一個包內,包內是一個相對獨立的王國,不用擔心命名沖突什麼的,那麼外部如果使用呢?直接import對應的package即可

import java.util.ArrayList;
遺憾的是JavaScript在設計時定位原因,沒有提供類似的功能,開發者需要模擬出類似的功能,來隔離、組織復雜的JavaScript代碼,我們稱為模塊化。

一個模塊就是實現特定功能的文件,有了模塊,我們就可以更方便地使用別人的代碼,想要什麼功能,就載入什麼模塊。模塊開發需要遵循一定的規范,各行其是就都亂套了

規范形成的過程是痛苦的,前端的先驅在刀耕火種、茹毛飲血的階段開始,發展到現在初具規模,簡單了解一下這段不凡的歷程

函數封裝
我們在講函數的時候提到,函數一個功能就是實現特定邏輯的一組語句打包,而且JavaScript的作用域就是基於函數的,所以把函數作為模塊化的第一步是很自然的事情,在一個文件裡面編寫幾個相關函數就是最開始的模塊了

function fn1(){
statement
}

function fn2(){
statement
}
這樣在需要的以後夾在函數所在文件,調用函數就可以了

這種做法的缺點很明顯:污染了全局變數,無法保證不與其他模塊發生變數名沖突,而且模塊成員之間沒什麼關系。

對象
為了解決上面問題,對象的寫法應運而生,可以把所有的模塊成員封裝在一個對象中

var myMole = {
var1: 1,

var2: 2,

fn1: function(){

},

fn2: function(){

}
}
這樣我們在希望調用模塊的時候引用對應文件,然後

myMole.fn2();
這樣避免了變數污染,只要保證模塊名唯一即可,同時同一模塊內的成員也有了關系

看似不錯的解決方案,但是也有缺陷,外部可以隨意修改內部成員

myModel.var1 = 100;
這樣就會產生意外的安全問題

立即執行函數
可以通過立即執行函數,來達到隱藏細節的目的

var myMole = (function(){
var var1 = 1;
var var2 = 2;

function fn1(){

}

function fn2(){

}

return {
fn1: fn1,
fn2: fn2
};
})();
這樣在模塊外部無法修改我們沒有暴露出來的變數、函數

上述做法就是我們模塊化的基礎,目前,通行的JavaScript模塊規范主要有兩種:CommonJS和AMD

CommonJS
我們先從CommonJS談起,因為在網頁端沒有模塊化編程只是頁面JavaScript邏輯復雜,但也可以工作下去,在伺服器端卻一定要有模塊,所以雖然JavaScript在web端發展這么多年,第一個流行的模塊化規范卻由伺服器端的JavaScript應用帶來,CommonJS規范是由NodeJS發揚光大,這標志著JavaScript模塊化編程正式登上舞台。

定義模塊
根據CommonJS規范,一個單獨的文件就是一個模塊。每一個模塊都是一個單獨的作用域,也就是說,在該模塊內部定義的變數,無法被其他模塊讀取,除非定義為global對象的屬性

模塊輸出:
模塊只有一個出口,mole.exports對象,我們需要把模塊希望輸出的內容放入該對象

載入模塊:
載入模塊使用require方法,該方法讀取一個文件並執行,返迴文件內部的mole.exports對象

『柒』 如何實現前端模塊化開發

SeaJS 是一個適用於 Web 瀏覽器端的模塊載入器。
使用 SeaJS,可以更好地組織 JavaScript 代碼。

『捌』 前端模塊化框架有哪些

基於Vue的UI框架:ElementUI
ElementUI是由餓了么UED設計、餓了么前端團隊開發的,基於Vue2.0的桌面端組件庫。Vue可以說是2017年最火的引擎類前端框架,ElementUI以其美觀的設計和高質量的組件很快俘獲了一大批Vuer的芳心。
不足之處在於組件的種類和功能不夠多(例如數據表格組件),很多時候需要自己也要開發一些組件,否則難以完成復雜的企業級應用開發。

『玖』 前端問獨立開發了哪些模塊有

1、模塊化概述
模塊化開發,當下最重要的前端開發範式
模塊化,只是思想
2、模塊化演變過程
早期在沒有工具和規范的情況下,對模塊化的落地方式,仍然存在一些沒有解決的總是。
stage1-文件劃分方式(不同的文件是不同的模塊,約定每一個文件就是一個獨立的模塊)
風險:污染全局作用域,命名沖突問題,無法管理依賴關系
早期模塊化完全依靠約定
stage2-命名空間方式(將每一個模塊包裹為一個全局對象的形式實現)
通過命名空間,減小命名沖突,
沒有私有空間,所有模塊成員也可以在模塊外部被訪問或者修改
無法管理依賴關系
stage3(2004)-IIFE(立即調用的函數表達式,聲明函數的同時立即調用這個函數,實現數據的私有化隔離)
不污染全局環境,提供閉包環境
有了私有成員的概念,私有成員只能在模塊成員內通過閉包的形式訪問。
通過IIFE參數,可以傳遞依賴模塊的內容
stage4(2009)-模塊化
2009年,隨著Node.js的發布,JS才真正迎來了模塊化時代。
針對於模塊載入的問題,之前都是用script標簽引入的方式,會有忘引入或誤刪除的問題

『拾』 在前端中什麼是組件化 什麼是模塊化

模塊化更一種開發規范,比如cmd amd 是為了更好的解藕,比如一個網站,按照不同的模塊來開發,比如你有個評論區,a 項目有,b 項目有,如果僅是單純的模塊開發,這個js 文件你就可以單獨來回引用,
更比如 ,一個頁面 分好多個功能, 這時候你要是都寫在一個js 中 會越來越大,
而你把他分成不同的模塊,
比如評論是一塊
分頁又是一塊,
已經上線,或你不做了,後期別人拉手,或你接手別人的項目, 這時候來個需求讓你把分頁去掉,或修改 你可以清楚的找到對應模塊文件 進行修改 或去掉
模塊是自定義的,

組件,更想當於一個通用的東西,有的分功能組件,有的分業務組件
大圖切換,這種就是單純的一個效果展示,只要調用就ok
一個分頁,也是只單純的調用,
組件更是一個多處都可以使用 ,不需要再單獨開發的