❶ 前端怎麼進行組件化的開發,以及如何解決組件之間依賴
可以用webpack,目前最火的前端構建工具。只要載入loader,你想引用什麼模塊就引用什麼模塊。現在用的就是webpack+react,組件化太方便了。更多問題可以去php中文網問答社區提問
❷ 避雷器為什麼放在斷路器,隔離開關前端
。避雷器放在斷路器,隔離開前端,主要是防止雷擊,擊壞斷路器及隔離開關
❸ 前端通用組件設計
調用組件庫的API相信很多人都會用,但是如何封裝一個高復用的組件並不是每個人都能做到,而這也是檢驗一個前端開發人員的一個標准。
說到開發組件,首先需要考慮一個問題,一個可復用的組件都需要具備哪些必要條件。
1. 細粒度考量
看過設計模式的朋友應該有了解過很多設計原則,其中一個就是 單一職責原則 ,這個原則放在開發組件中也同樣適用。在原則上一個組件就只負責一件事,這就是單一原則所帶來的好處也非常明顯,就是可以更大可能的復用組件。但如果職責過於單一,也會造成組件碎片化嚴重,過於抽象。
因此我們需要考慮,所謂的單一職責原則是建立在可復用的基礎上的。否則,可以做為獨立組件的內部組件進行使用。
2. 組件通用性考量
組件設計之初是為了當時的頁面設計進行封裝設計的,那麼之後的頁面設計極大可能是與之前不同的,那麼之前設計的組件就不能用了。
而一旦發生這樣的情況,就說明我們之前所設計的組件是不通用的,需要重新設計了。就像Antd組件庫那樣,預留了dropdownRender進行組件渲染。
通用性的設計就代表著將放棄對DOM的操作權,暴露給開發者進行操作,組件開發者本身只負責底層邏輯和基本的DOM結構。這也是開發通用型組件的秘訣之一。
3. 技術選型
css存在著許多的弊端,例如樣式易沖突(沒有作用域的概念)、書寫繁瑣(不支持嵌套)、缺少變數(不便於一件更換主題)等等。而解決這些問題的方案也是層出不窮,從最早的css預處理,到後來的Postcss,再到後來的styled-compontent,各種方式任君選擇。
4. 打包工具
產品的設計思想固然是核心,但是也需要一堆輔助工具來來幫助我們開發,例如編譯工具、測試工具、打包工具。
說到打包工具,就不得不提一下如今非常火爆的,需要配置工程師專門配置的webpack了。但是他也有一個強大的競爭對手 rollup。
rollup更適合用於組件庫的打包,優勢如下:
設計一個輪播圖組件
學以致用,學了就肯定要實踐一下。輪播圖是一個比較常見的組件,每個組件庫中都封裝的有,接下來我們也來介紹一下如何設計一個輪播圖組件。
1. 輪播圖原理
通常情況下我們使用輪播圖是這樣編寫的
那麼為什麼放入了四個div盒子卻只顯示一個呢,這是因為可視區域是固定的,只需要移動div盒子就可以顯示出後面的盒子,這樣就達到了輪播的效果。
為了是觀看效果更好,我們都會隱藏掉可視區域之外的內容,這樣就是大家經常看到的輪播圖了。組件就可以這樣設計:
可以通過transform: translateX()不斷改變SlideList的位置,就可以達到輪播的效果了。
2. 輪播圖的基礎實現
知道了基礎原理就可以進行組件的實現了,這里以移動端輪播圖為例。
首先,獲取移動端可視窗口的寬度。
------- 未完待續 --------
❹ web前端三大主流框架都是什麼
web前端的三大主流框架主要是React、Vue.js、Angular。
React
React框架是起源於Facebook的項目,可以輕易地解決跨瀏覽器兼容的問題,主要是通過對DOM的模擬減少與DOM的交互做到的。React的模塊化把組件進行了隔離,出現問題的時候更方便程序員對其進行修改,而且由於JavaScript,因此更有利於搜索引擎的優化。
優點:引入了一個叫作虛擬DOM的概念,運行速度快;提供了標准化的API,解決了跨瀏覽器問題、兼容性更好;代碼更加模塊化,重用代碼更容易,可維護性高。
缺點:React是目標是UI組件,通常可以和其它框架組合使用,並不適合單獨做一個完整的框架。
Vue
Vue是相對比較輕量級的框架,是通過進行雙向數據綁定來達到驅動頁面的效果,大多程序員在學習新框架的時候都會先從Vue開始。Vue比較簡單,官方文檔介紹的很清楚,可以非常快速的通過非同步批處理的方式對DOM進行更新,也能把可復用的、解耦的組件組合在一起使用,更能允許多種模塊的安裝,場景使用也更加靈活。
優點:漸進式構建能力是Vue.js最大的優勢,Vue有一個簡潔而且合理的架構,使得它易於理解和構建。Vue有一個強大的充滿激情人群的社區,這為Vue.js增加了巨大的價值,使得為一個空白項目創建一個綜合的解決方案變得十分容易。
缺點:在模型-視圖應用程序和狀態容器類型的應用程序之間的互相轉換可能會令人感到困惑;它類似於Web組件的模式,而不是真正的Web組件。
Angular
Angular擁有很好的應用程序,是一個以JavaSpript編寫的庫,模板功能也異常強大,本身就帶有豐富的Angular指令。一方面可以通過指令擴寬HTML,一方面可以通過表達式綁定數據到HTML。
優點:模板功能強大豐富並且是聲明式的,是一個比較完善的前端MVC框架,自帶了豐富的Angular指令;ng模塊化比較大膽的引入了Java的一些東西(依賴注入),能夠很容易地寫出可復用的代碼,對於敏捷開發的團隊來說非常有幫助。
缺點:驗證功能錯誤信息顯示比較薄弱,需要寫很多模板標簽;ngView只能有一個,不能嵌套多個視圖;比較笨重,沒有讓用戶選擇一個輕量級的版本。
❺ 現在前端流行的框架有什麼
現在前端主要流行三大框架。給大傢具體分析一下這三個前端框架:
1、Angular
大家眼裡比較「叼」的框架,甚至有人說三大框架中只有她能稱的上一個完整的框架,因為他包含的東西比較完善,包含模板,數據雙向綁定,路由,模塊化,服務,過濾器,依賴注入等所有功能。對於剛開始學習使用框架的小夥伴們,可以推薦這個框架,學會之後簡直能顛覆之前你對前端開發的認知。使用 TypeScript能夠提高代碼可維護性,有利於後期重構。雙向數據流很方便,但是等業務復雜之後,你可能就搞不清楚數據流了。還有令人不開心的臟值檢查,以及directive的封裝並沒有解決視圖與數據關系完全分離,有時候還要用$digist強制觸發檢測。
2、React
這個框架本身比較容易理解,他的結構很清晰,就是由十幾個API組成,然後非同步渲染,我們只需要處理好介面和維護就好了,但是很多人反映上手還是有一定的的難度的。React是單向數據流,代碼寫起來會較雙向數據流的多一些,但是同樣的排查問題時思路清晰很多。
3、Vue
號稱是最簡單,最容易上手的框架,同時也是行內的大趨勢,還可以用來開發最火的小程序。畢竟用這神器,代碼碼的飛快,項目也能快速上線。同時他也是雙向數據流。有些人認為Vue是Angular和React的結合,既有Angular的模板語法也有React的組件化體系。
當你學會其中某個框架之後,你再轉用其他框架的時候,學會是很容易的,因為方法都是大同小異的。具體的使用還是得看公司的項目適合或者要求哪個框架。
❻ 前端開發框架都有哪些
web前端的三大主流框架主要是React、Vue.js、Angular。
React
React框架是起源於Facebook的項目,可以輕易地解決跨瀏覽器兼容的問題,主要是通過對DOM的模擬減少與DOM的交互做到的。React的模塊化把組件進行了隔離,出現問題的時候更方便程序員對其進行修改,而且由於JavaScript,因此更有利於搜索引擎的優化。
優點:引入了一個叫作虛擬DOM的概念,運行速度快;提供了標准化的API,解決了跨瀏覽器問題、兼容性更好;代碼更加模塊化,重用代碼更容易,可維護性高。
缺點:React是目標是UI組件,通常可以和其它框架組合使用,並不適合單獨做一個完整的框架。
Vue
Vue是相對比較輕量級的框架,是通過進行雙向數據綁定來達到驅動頁面的效果,大多程序員在學習新框架的時候都會先從Vue開始。Vue比較簡單,官方文檔介紹的很清楚,可以非常快速的通過非同步批處理的方式對DOM進行更新,也能把可復用的、解耦的組件組合在一起使用,更能允許多種模塊的安裝,場景使用也更加靈活。
優點:漸進式構建能力是Vue.js最大的優勢,Vue有一個簡潔而且合理的架構,使得它易於理解和構建。Vue有一個強大的充滿激情人群的社區,這為Vue.js增加了巨大的價值,使得為一個空白項目創建一個綜合的解決方案變得十分容易。
缺點:在模型-視圖應用程序和狀態容器類型的應用程序之間的互相轉換可能會令人感到困惑;它類似於Web組件的模式,而不是真正的Web組件。
Angular
Angular擁有很好的應用程序,是一個以JavaSpript編寫的庫,模板功能也異常強大,本身就帶有豐富的Angular指令。一方面可以通過指令擴寬HTML,一方面可以通過表達式綁定數據到HTML。
優點:模板功能強大豐富並且是聲明式的,是一個比較完善的前端MVC框架,自帶了豐富的Angular指令;ng模塊化比較大膽的引入了Java的一些東西(依賴注入),能夠很容易地寫出可復用的代碼,對於敏捷開發的團隊來說非常有幫助。
缺點:驗證功能錯誤信息顯示比較薄弱,需要寫很多模板標簽;ngView只能有一個,不能嵌套多個視圖;比較笨重,沒有讓用戶選擇一個輕量級的版本。
❼ 如何理解前端模塊化
前端模塊化
在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對象