新品牌效應 台灣電動機車買氣加溫

台灣中央與地方政府推動電動機車多年,今年因為新品牌Gogoro加入市場而加強了業者間的競爭意識,同時帶動了消費者的買氣。

Gogoro的電動機車Smartscooter今年七月正式上市。在十月祭出降價策略後,十月的銷售量達680輛,比九月成長了106%,已是當月台北市機車掛牌數量第四名。台北市是目前Gogoro相關服務最完善的地區,除了有較密集的電池交換站外,也開始嘗試與超商業者合作,讓騎士能以超商為據點交換電池。

在Gogoro加入市場後,台灣電動機車的需求整體也隨之升高。今年十月,台灣整體電動車掛牌輛創下2012年元月開始推行電動機車以來的新高;電動車相關概念股的股價也跟著成長,後勢可期。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

中國:2015年新能源汽車銷量將超過美國

據國家工信部裝備工業司發佈的最新數據顯示,2015年前10個月,國內新能源汽車累計生產20.69萬輛,同比增長3倍。其中,純電動乘用車生產8.71萬輛,同比增長3倍,插電式混合動力乘用車生產4.55萬輛,同比增長3倍;純電動商用車生產5.93萬輛,同比增長9倍,插電式混合動力商用車生產1.50萬輛,同比增長88%。同時,2015年前十個月新能源汽車銷售17.11萬輛,同比增長2.9倍。其中純電動汽車銷售11.38萬輛,同比增長3.9倍;插電式混合動力汽車銷售5.73萬輛,同比增長1.8倍。   國家863節能與新能源汽車專案監理諮詢專家組組長王秉剛表示,2015年結束時,中國累計銷售量可能接近美國累計銷售量,中國和美國會成為世界上銷售新能源汽車最多的國家。   王秉剛指出,從發展勢頭來看,中國的發展勢頭高過美國,國內2015年的上半年銷售量超過美國同期的銷售量,相信2015年全年肯定超過美國今年的銷售量,增長趨勢高於美國,到明年中國可能會成為世界上新能源汽車累計銷售量最多的國家。   從2014年以來,中央政府密集發佈新能源汽車政策,這個時期也被認作為新能源汽車發展階段的推廣階段。目前,地方政府在新能源汽車推廣上也做出了很多努力,上海、北京、江蘇、浙江等省市推廣數量超過萬輛。新能源汽車在公共領域的推廣工作穩步推進,而私人領域已經成為推廣主體,新能源汽車有望進入快速發展期。   中國製造2025規劃中指出,到2020年新能源汽車銷量突破100萬輛,2025年突破300萬輛。   資料來源:科技日報

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

河北省:將新能源汽車應用到9大公共服務領域

河北省擴大公共服務領域用車範疇,將黨政機關公務車、機要通信車、執法執勤巡邏車、環衛車、郵政車、接送學生校車、城鄉公車(含農村客運車)、城市物流配送車、計程車等九個方面的新能源汽車納入公共服務領域範圍。   河北省要求,全省在新增或更換城市公車以及上述九類的汽車,必須換成新能源汽車,如果再換燃油、燃氣車,將不予上牌。九類新能源汽車購車補貼比例由1:0.5提高到1:1。  
推廣純電動計程車、新能源公車   明年起,河北省將啟動純電動計程車試點工作,張家口市、廊坊市作為首批純電動計程車試點市,各開展50-200輛的純電動計程車運營公司試點工作。逐步在全省範圍內推廣電動計程車。   河北省將統籌考慮用油、用氣、新能源公車一定期限內購置及運營成本,建立鼓勵新能源公車應用、限制燃油公車增長的新機制,調整現行燃油補貼政策,加大對新能源公車支持力度。2015年至2019年,我省新增及更換的公車中新能源公車比重將分別達到40%、50%、60%、70%、80%。  
加快充電設施建設   河北省將進一步加快充電設施建設,把充電站、充電樁建設納入城鄉建設規劃,按照統籌規劃、科學佈局、適度超前、有序建設的原則,加快推進住宅社區、單位內部、社會停車場等面向個人使用的充電設施建設,到2020年基本建成車樁相隨、智能高效的充電基礎設施體系。   河北省將在石家莊、張家口、邯鄲三市進行充電設施建設試點,整合企業、社會、政府等多方力量,在賓館飯店、商場超市、學校醫院、路邊車位、旅遊景點等公共場所,開展充電樁、充電樁群建設,形成規模效應。全省黨政機關、事業單位以及國有企業等也將積極建設充電樁,省直機關率先安裝,做出示範。   該消息是河北新聞網記者從11月27日召開的全省新能源汽車發展和推廣應用工作領導小組(擴大)會議上獲悉的。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

決策樹(上)-ID3、C4.5、CART

參考資料(要是對於本文的理解不夠透徹,必須將以下博客認知閱讀,方可全面了解決策樹):

1.

2.

3.

決策樹是一個非常常見並且優秀的機器學習算法,它易於理解、可解釋性強,其可作為分類算法,也可用於回歸模型。本文將分三篇介紹決策樹,第一篇介紹基本樹(包括 ID3、C4.5、CART),第二篇介紹 Random Forest、Adaboost、GBDT,第三篇介紹 Xgboost 和 LightGBM。

在進入正題之前,先讓我們了解一些有關信息論的知識!

信息論

1.信息熵

在決策樹算法中,熵是一個非常非常重要的概念。一件事發生的概率越小,我們說它所蘊含的信息量越大。比如:我們聽女人能懷孕不奇怪,如果某天聽到哪個男人懷孕了,我們就會覺得emmm…信息量很大了。

所以我們這樣衡量信息量:

 

 其中,P(y)是事件發生的概率。信息熵就是所有可能發生的事件的信息量的期望:

表達了Y事件發生的不確定度。

決策樹屬性劃分算法

眾所周知,決策樹學習的關鍵在於如何選擇最優劃分屬性,一般而言,隨着劃分過程不斷進行,我們希望決策樹的分支結點所包含的樣本盡可能屬於同一類別,即結點的“純度”越來越高。

1.ID3

(1)思想

從信息論的知識中我們知道:信息熵越大,從而樣本純度越低,。ID3 算法的核心思想就是以信息增益來度量特徵選擇,選擇信息增益最大的特徵進行分裂。算法採用自頂向下的貪婪搜索遍歷可能的決策樹空間(C4.5 也是貪婪搜索)。

(2)劃分標準(詳細過程以及公式推導見西瓜書即可)

ID3算法使用信息增益為準則來選擇劃分屬性,“信息熵”(information entropy)是度量樣本結合純度的常用指標,假定當前樣本集合D中第k類樣本所佔比例為pk,則樣本集合D的信息熵定義為:

假定通過屬性劃分樣本集D,產生了V個分支節點,v表示其中第v個分支節點,易知:分支節點包含的樣本數越多,表示該分支節點的影響力越大。故可以計算出劃分后相比原始數據集D獲得的“信息增益”(information gain)。

信息增益越大,表示使用該屬性劃分樣本集D的效果越好,因此ID3算法在遞歸過程中,每次選擇最大信息增益的屬性作為當前的劃分屬性。

(3)缺點

  • ID3 沒有剪枝策略,容易過擬合;
  • 信息增益準則對可取值數目較多的特徵有所偏好,類似“編號”的特徵其信息增益接近於 1;
  • 只能用於處理離散分佈的特徵;
  • 沒有考慮缺失值。

 

2. C4.5

2.1 思想

C4.5 算法最大的特點是克服了 ID3 對特徵數目的偏重這一缺點,引入信息增益率來作為分類標準。

C4.5 相對於 ID3 的缺點對應有以下改進方式:

  • 引入悲觀剪枝策略進行后剪枝;
  • 引入信息增益率作為劃分標準;
  • 可以處理連續值:將連續特徵離散化,假設 n 個樣本的連續特徵 A 有 m 個取值,C4.5 將其排序並取相鄰兩樣本值的平均數共 m-1 個劃分點,分別計算以該劃分點作為二元分類點時的信息增益,並選擇信息增益最大的點作為該連續特徵的二元離散分類點;
  • 可以處理缺失值:對於缺失值的處理可以分為兩個子問題:
  • 問題一:在特徵值缺失的情況下進行劃分特徵的選擇?(即如何計算特徵的信息增益率)
  • 問題二:選定該劃分特徵,對於缺失該特徵值的樣本如何處理?(即到底把這個樣本劃分到哪個結點里)
  • 針對問題一,C4.5 的做法是:對於具有缺失值特徵,用沒有缺失的樣本子集所佔比重來折算;
  • 針對問題二,C4.5 的做法是:將樣本同時劃分到所有子節點,不過要調整樣本的權重值,其實也就是以不同概率劃分到不同節點中。

2.2 劃分標準

利用信息增益率可以克服信息增益的缺點,其公式為:

 

注意:信息增益率對可取值較少的特徵有所偏好(分母越小,整體越大),因此 C4.5 並不是直接用增益率最大的特徵進行劃分,而是使用一個啟髮式方法:先從候選劃分特徵中找到信息增益高於平均值的特徵,再從中選擇增益率最高的。

2.3 剪枝策略(預剪枝+后剪枝)

決策樹解決過擬合的主要方法:剪枝、隨機森林

2.3.1 預剪枝

(1) 在決策樹生成過程中,對每個結點在劃分前先進行估計,若當前結點的劃分不能帶來決策樹泛化性能提升,則停止劃分並將當前結點標記為恭弘=叶 恭弘結點。在構造的過程中先評估,再考慮是否分支。衡量決策樹泛化性能提升的方法:

  • 節點內數據樣本低於某一閾值;
  • 所有節點特徵都已分裂;
  • 節點劃分前準確率比劃分后準確率高。

(2)優缺點

  • 降低過擬合風險、顯著減少決策樹的訓練時間開銷和測試時間開銷。
  • 預剪枝基於“貪心”策略,有可能會帶來欠擬合風險。
2.3.2 后剪枝(C4.5採用的是基於后剪枝的悲觀剪枝方法)

(1) 后剪枝是先從訓練集生成一棵完整的決策樹,然後自底向上地對非恭弘=叶 恭弘子結點進行考察,若將該結點對應的子樹替換為恭弘=叶 恭弘結點能帶來決策樹泛化性能提升,則將該子樹替換為恭弘=叶 恭弘結點。

(2) 后剪枝決策樹的欠擬合風險很小,泛化性能往往優於預剪枝決策樹。但同時其訓練時間會大的多。

2.4 缺點

  • 剪枝策略可以再優化;
  • C4.5 用的是多叉樹,用二叉樹效率更高;
  • C4.5 只能用於分類;
  • C4.5 使用的熵模型擁有大量耗時的對數運算,連續值還有排序運算;
  • C4.5 在構造樹的過程中,對數值屬性值需要按照其大小進行排序,從中選擇一個分割點,所以只適合於能夠駐留於內存的數據集,當訓練集大得無法在內存容納時,程序無法運行。

 

3. CRAT

ID3 和 C4.5 雖然在對訓練樣本集的學習中可以盡可能多地挖掘信息,但是其生成的決策樹分支、規模都比較大,CART 算法的二分法可以簡化決策樹的規模,提高生成決策樹的效率。

Cart算法的兩個主要步驟為:(1)將樣本遞歸劃分進行建樹過程 ; (2)用驗證數據進行剪枝.

3.1 思想

CART 在 C4.5 的基礎上進行了很多提升。

  • C4.5 為多叉樹,運算速度慢,CART 為二叉樹,運算速度快;
  • C4.5 只能分類,CART 既可以分類也可以回歸;
  • CART 使用 Gini 係數作為變量的不純度量,減少了大量的對數運算;
  • CART 採用代理測試來估計缺失值,而 C4.5 以不同概率劃分到不同節點中;
  • CART 採用“基於代價複雜度剪枝”方法進行剪枝,而 C4.5 採用悲觀剪枝方法。

3.2 劃分標準(Cart分類樹、Cart回歸樹)

首先我們來看看Cart分類樹!

CART決策樹(分類樹)使用“基尼指數”(Gini index)來選擇劃分屬性,基尼指數反映的是從樣本集D中隨機抽取兩個樣本,其類別標記不一致的概率,因此Gini(D)越小越好,這和信息增益(率)正好相反,基尼指數定義如下:

進而,使用屬性α劃分后的基尼指數為:

 

接下來讓我們通過一個實例,從實例中去了解如何創建一棵Cart分類樹。 如下圖所示

在上述圖中,共10條數據,屬性有3個,分別是有房情況(離散屬性且2種取值)婚姻狀況(離散屬性且有3種取值)年收入(連續屬性),拖欠貸款者屬於分類的結果。

對於離散屬性(2種取值與多種取值)連續屬性我們該如何進行Gini係數的計算以及劃分呢?

1.首先來看有房情況這個屬性,因為該屬性只有“是”“否”兩種取值,所以其Gini係數比較容易計算,那麼按照它劃分后的Gini指數計算如下:

 

 2.接下來對婚姻狀況進行計算,我們發現婚姻狀況一共有三種取值:單身、已婚、離異,又因為Cart分類樹只能是二叉樹,所以我們只能對多種取值的屬性進行組合:

 

 3.最後對年收入屬性進行計算。年收入屬性為連續值,Cart分類樹又是如何對連續值屬性進行處理的呢?(Cart分類樹對於連續值的處理其實和C4.5算法對於連續值的處理類似,只不過Cart使用Gini指數,C4.5使用信息增益率)

將連續特徵離散化,假設 n 個樣本的連續特徵 A 有 m 個取值,C4.5/Cart 將其排序並取相鄰兩樣本值的平均數共 m-1 個劃分點,分別計算以該劃分點作為二元分類點時的信息增益/Gini係數,並選擇信息增益最大/Gini係數最小的點作為該連續特徵的二元離散分類點;

通過計算我們可以發現,(單身或離異,已婚) 和 (<=97,>97)這種劃分其Gini係數最小(假設我們選擇年收入)。所以根節點分裂為兩個子節點,其中一個為恭弘=叶 恭弘子結點。對於另外一個結點我們繼續使用上述方法在婚姻狀況、有房情況中選擇最佳特徵以及最佳切分點,反覆循環直到滿足條件為止。

 接下來讓我們看看Cart回歸樹(最小二乘回歸樹)

眾所周知,決策樹學習的關鍵在於如何選擇最優劃分屬性,然而對於Cart回歸樹而言,還有一個重要的問題就是:如何決定樹中恭弘=叶 恭弘節點的輸出值?

回歸樹的模型可以表示如下:

上式中,  為對應恭弘=叶 恭弘子節點的輸出值,  為指示函數,當x屬於  時,值為1,否則為0。

回歸樹的建立過程,優化策略或損失函數為最小化平方誤差,即最小化下式:

 

(1)問題1:怎樣對輸入空間進行劃分?即如何選擇劃分點?

CART回歸樹的建樹過程是二分裂節點,並且保證分裂的結果符合最小化平方誤差,這裏採用了比較暴力的遍曆法,即遍歷所有特徵j和每個特徵的多個閾值s,以平方誤差最小的組合作為分裂依據,數學描述如下:

 
上式中,R為以s為分割點分割的左右子樹樣本合集,c為該集合的均值。

確定了j,s后,就可以就行分裂了,將樹分裂為左右兩個區域:

(2)問題2:如何決定樹中恭弘=叶 恭弘節點的輸出值?

分裂完畢以後,要確定每個恭弘=叶 恭弘子結點的輸出值,使用類別均值:

接下來讓我們通過一個實例,從實例中去了解如何創建一棵Cart回歸樹。 如下圖所示

3.3 剪枝策略(簡略版本,具體推導見李航 統計學習方法)

採用一種“基於代價複雜度的剪枝”方法進行后剪枝,這種方法會生成一系列樹,每個樹都是通過將前面的樹的某個或某些子樹替換成一個恭弘=叶 恭弘節點而得到的,這一系列樹中的最後一棵樹僅含一個用來預測類別的恭弘=叶 恭弘節點。然後用一種成本複雜度的度量準則來判斷哪棵子樹應該被一個預測類別值的恭弘=叶 恭弘節點所代替。這種方法需要使用一個單獨的測試數據集來評估所有的樹,根據它們在測試數據集熵的分類性能選出最佳的樹。

3.4類別不平衡

CART 的一大優勢在於:無論訓練數據集有多失衡,它都可以將其消除不需要建模人員採取其他操作。

CART 使用了一種先驗機制,其作用相當於對類別進行加權。這種先驗機制嵌入於 CART 算法判斷分裂優劣的運算里,在 CART 默認的分類模式中,總是要計算每個節點關於根節點的類別頻率的比值,這就相當於對數據自動重加權,對類別進行均衡。

4.總結

最後通過總結的方式對比下 ID3、C4.5 和 CART 三者之間的差異。

除了之前列出來的劃分標準、剪枝策略、連續值確實值處理方式等之外,我再介紹一些其他差異:

  • 劃分標準的差異:ID3 使用信息增益偏向特徵值多的特徵,C4.5 使用信息增益率克服信息增益的缺點,偏向於特徵值小的特徵,CART 使用基尼指數克服 C4.5 需要求 log 的巨大計算量,偏向於特徵值較多的特徵。
  • 使用場景的差異:ID3 和 C4.5 都只能用於分類問題,CART 可以用於分類和回歸問題;ID3 和 C4.5 是多叉樹,速度較慢,CART 是二叉樹,計算速度很快;
  • 樣本數據的差異:ID3 只能處理離散數據且缺失值敏感,C4.5 和 CART 可以處理連續性數據且有多種方式處理缺失值;從樣本量考慮的話,小樣本建議 C4.5、大樣本建議 CART。C4.5 處理過程中需對數據集進行多次掃描排序,處理成本耗時較高,而 CART 本身是一種大樣本的統計方法,小樣本處理下泛化誤差較大 ;
  • 樣本特徵的差異:ID3 和 C4.5 層級之間只使用一次特徵,CART 可多次重複使用特徵;
  • 剪枝策略的差異:ID3 沒有剪枝策略,C4.5 是通過悲觀剪枝策略來修正樹的準確性,而 CART 是通過代價複雜度剪枝

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

使用Samba服務實現文件共享

1.在虛擬機上安裝Samba服務安裝包 (在下載之前檢查客戶機與服務器是否能夠ping通)(Samba服務的主要端口號為137 138 139  445)

(鼠標右擊桌面,打開終端,測試和yum是否能夠ping通,下面的命令行是我的yum的IP地址)

[root@huming_hbza ~]#ping 192.168.26.10

然後輸入命令行:(安裝Samba服務安裝包)

[root@huming_hbza ~]#yum install samba

執行結果如下圖:

 

如下圖顯示錶明安裝成功:

2.修改配置文件

在這裏提醒讀者的是:修改配置文件之前,我們可以養成良好的習慣將原始的配置文件備份下來

具體執行命令行如下:

[root@huming_hbza ~]#cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

執行如下圖所示:

接下來讓我們進入到Samba文件中修改Samba的配置文件,此時需要記住的是smb.conf 文件是Samba的配置文件

命令行:

[root@huming_hbza ~]#cd /etc/samba
[root@huming_hbza ~]#vim smb.conf

敲回車之後就會彈出如下圖所示的界面:

[global]
    workgroup = workgroup                   //工作組名稱
    server string = Samba Server %v         //服務器介紹信息,參數%v為显示SMB版本號
    security = user                                //安全驗證的方式
    map to guest = bad user                  
    dns proxy = no
[anonymous]                                           //共享名稱為anonymous
    comment = This is a dirctory of anonymous.       //警告用戶的內容
    path = /samba/anonymous                               //共享文件夾所在的位置
    browseable = yes                                             
    writeable = yes                                   //允許寫入操作      
    guest ok = yes                                   //是否所有人可見,等同於“public參數”
    read only = no

將上圖中的配置文件改成如下圖所示:(注:anonymous部分是需要自己添加進去的,而global部分是需要在原來的基礎上進行更改)

保存退出

 

創建共享目錄anonymous,進入到該目錄下並在anonymous文件中創建一個1.txt文件,並且開啟smb和nmb服務以及將這兩個服務設置為開機自啟動 ,具體命令行操作如下:

[root@huming_hbza ~]#mkdir -p /samba/anonymous
[root@huming_hbza ~]#cd /samba/anonymous
[root@huming_hbza ~]#echo "deyaugyua123456789" > 1.txt    //在anonymous文件中創建一個1.txt
[root@huming_hbza ~]#systemctl start smb.service
[root@huming_hbza ~]#systenctl start nmb.service
[root@huming_hbza ~]#systemctl enable smb.service //設置為開機自啟動
[root@huming_hbza ~]#systemctl enable nmb.service //設置為開機自啟動

操作如下圖示:

 

 接下來可以在自己的主機上打開我的電腦輸入:

\\192.168.26.100(自己建立的Samba服務的客戶機的地址 )

 

 注:自己的主機一定要和客戶機ping通否則會出現如下圖提示:

 

 然後輸入CentOS系統的賬戶和密碼就是登陸憑證,進去之後就是如下界面:(在CentOS系統中創立的文件)

 

 

然後點擊打開右擊之後發現是可以複製的,即也可以拖拽複製到自己的主機上如下圖显示,但是這裏提醒一下讀者,因為在配置smb.conf文件的權限時候沒有加上寫權限是關閉的,即在自己主機上是不可以保存以及上傳文件的,只可以下載文件,如果有需要可以再去更改一下配置文件,

 

 

 

 

 

 

如果更改文件保存的話會出現如下圖的提示:

 

 

Samba服務的操作就介紹到這裏了,多數我們使用是為了從服務器下載文件比較方便才進行的,感興趣的小夥伴趕緊跟着教程去試試吧

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

webpack 打包優化的四種方法(多進程打包,多進程壓縮,資源 CDN,動態 polyfill)

如今,webpack 毫無疑問是前端構建領域里最耀眼的一顆星,無論你前端走哪條路線,都需要有很強的webpack 知識。webpack 的基本用法這裏就不展開講了。主要探討一下如何提高 webpack 的打包速度。

這篇文章以 vue cli3.0+webpack4.0+nodejs10.0+ 這幾個版本為例。

一、打包分析

1.1、速度分析

我們的目的是優化打包速度,那肯定需要一個速度分析插件,此時 speed-measure-webpack-plugin 就派上用場了。它的作用如下:

  • 分析整個打包總耗時
  • 每個 pluginloader 的耗時情況

首先,安裝插件

npm i -D speed-measure-webpack-plugin

然後修改 vue.config.js 配置文件 (vuecli3+ 版本的配置文件統一在這個文件里修改,如果沒有該文件,在根目錄新建一個)

// 導入速度分析插件
const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");

// 實例化插件
const smp = new SpeedMeasurePlugin();

module.exports = {
    configureWebpack: smp.wrap({
        plugins: [
            // 這裡是自己項目里需要使用到的其他插件
            new yourOtherPlugin()
        ]
    })
}

運行打包命令之後,可以看到,打包總耗時為 2min,51.99s

1.2、體積分析

分析完打包速度之後,接着我們來分析打包之後每個文件以及每個模塊對應的體積大小。使用到的插件為 webpack-bundle-analyzer,構建完成後會在 8888 端口展示大小。

首先,安裝插件

npm i -D webpack-bundle-analyzer

修改 vue.config.js 配置文件

// 導入速度分析插件
const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");

// 導入體積分析插件
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;

// 實例化速度分析插件
const smp = new SpeedMeasurePlugin();

module.exports = {
    configureWebpack: smp.wrap({
        plugins: [
            // 實例化體積分析插件
            new BundleAnalyzerPlugin()
        ]
    })
}

構建之後可以看到,其中黃色塊 chunk-vendors 文件佔比最大,為 1.34MB

二、打包優化

2.1、多進程多實例構建,資源并行解析

多進程構建的方案比較知名的有以下三個:

  • thread-loader (推薦使用這個)
  • parallel-webpack
  • HappyPack

這裏以 thread-loader 為例配置多進程多實例構建
安裝 loader

npm i -D thread-loader

接下來在 vue.config.js 配置文件中使用該 loader

// 導入速度分析插件
const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");

// 實例化插件
const smp = new SpeedMeasurePlugin();
module.exports = {
    configureWebpack: smp.wrap({
        module: {
            rules: [
                {
                    test: /\.js$/,
                    use: ['thread-loader']
                }
            ]
        }
    })
}

然後看下構建花費的時間, 2min,49.21s,相較於之前提升了 5s

2.2、公用代碼提取,使用 CDN 加載

對於vue,vuex,vue-router,axios,echarts,swiper等我們可以利用webpack的externals參數來配置,這裏我們設定只需要在生產環境中才需要使用。
下面配置 vue.config.js

// 導入速度分析插件
const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");

// 導入體積分析插件
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;

//判斷是否為生產環境
const isProduction = process.env.NODE_ENV === 'production';

//定義 CDN 路徑,這裏採用 bootstrap 的 cdn
const cdn = {
    css: [
        'https://cdn.bootcss.com/Swiper/4.5.1/css/swiper.min.css'
    ],
    js: [
        'https://cdn.bootcss.com/vue/2.6.10/vue.min.js',
        'https://cdn.bootcss.com/vue-router/3.1.3/vue-router.min.js',
        'https://cdn.bootcss.com/vuex/3.1.1/vuex.min.js',
        'https://cdn.bootcss.com/axios/0.19.0/axios.min.js',
        'https://cdn.bootcss.com/echarts/4.3.0/echarts.min.js',
        'https://cdn.bootcss.com/Swiper/4.5.1/js/swiper.min.js',
    ]
}

// 實例化插件
const smp = new SpeedMeasurePlugin();
module.exports = {
    chainWebpack: config => {
        // 生產環境配置
        if (isProduction) {
            // 生產環境注入 cdn
            config.plugin('html')
                .tap(args => {
                    args[0].cdn = cdn;
                    return args;
                });
        }
    },
    configureWebpack: smp.wrap({
        module: {
            rules: [
                {
                    test: /\.js$/,
                    use: ['thread-loader']
                }
            ]
        },
        plugins: [
            new BundleAnalyzerPlugin()
        ],
        //生產環境注入 cdn
        externals: isProduction && {
            'vue': 'Vue',
            'vuex': 'Vuex',
            'vue-router': 'VueRouter',
            'axios': 'axios',
            'echarts': 'echarts',
            'swiper': 'Swiper'
        } || {}
    })
}

緊接着,改造 html 頁面。用於讓我們配置的 cdn 路徑注入到 html 頁面

<!DOCTYPE html>
<html lang="zh">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <!-- 使用 CDN 的 CSS 文件 -->
  <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
    <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="stylesheet">
  <% } %>
</head>

<body>
  <noscript>
    <strong>We're sorry but eye-admin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
  </noscript>
  <div id="app"></div>
  <!-- built files will be auto injected -->

 <!-- 使用 CDN 的 JS 文件 -->
  <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
    <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
  <% } %>
</body>

</html>

最重要的一步,看下效果,可以看到現在耗時 1min,39.19s,整整提升了 1 分多鍾!

2.3、多進程多實例并行壓縮

并行壓縮主流有以下三種方案

  • 使用 parallel-uglify-plugin 插件
  • uglifyjs-webpack-plugin 開啟 parallel 參數
  • terser-webpack-plugin 開啟 parallel 參數 (推薦使用這個,支持 ES6 語法壓縮)

安裝插件依賴

npm i -D terser-webpack-plugin

接下來在 vue.config.js 配置文件中使用插件,最終的配置文件如下

// 導入速度分析插件
const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");

// 導入代碼壓縮插件
const TerserPlugin = require("terser-webpack-plugin");

// 導入體積分析插件
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;

//判斷是否為生產環境
const isProduction = process.env.NODE_ENV === 'production';

//定義 CDN 路徑,這裏採用 bootstrap 的 cdn
const cdn = {
    css: [
        'https://cdn.bootcss.com/Swiper/4.5.1/css/swiper.min.css'
    ],
    js: [
        'https://cdn.bootcss.com/vue/2.6.10/vue.min.js',
        'https://cdn.bootcss.com/vue-router/3.1.3/vue-router.min.js',
        'https://cdn.bootcss.com/vuex/3.1.1/vuex.min.js',
        'https://cdn.bootcss.com/axios/0.19.0/axios.min.js',
        'https://cdn.bootcss.com/echarts/4.3.0/echarts.min.js',
        'https://cdn.bootcss.com/Swiper/4.5.1/js/swiper.min.js',
    ]
}

// 實例化插件
const smp = new SpeedMeasurePlugin();
module.exports = {
    chainWebpack: config => {
        // 生產環境配置
        if (isProduction) {
            // 生產環境注入 cdn
            config.plugin('html')
                .tap(args => {
                    args[0].cdn = cdn;
                    return args;
                });
        }
    },
    configureWebpack: smp.wrap({
        module: {
            rules: [
                {
                    test: /\.js$/,
                    use: ['thread-loader']
                }
            ]
        },
        plugins: [
            new BundleAnalyzerPlugin()
        ],
        //生產環境注入 cdn
        externals: isProduction && {
            'vue': 'Vue',
            'vuex': 'Vuex',
            'vue-router': 'VueRouter',
            'axios': 'axios',
            'echarts': 'echarts',
            'swiper': 'Swiper'
        } || {},
        optimization: {
            minimizer: [
                new TerserPlugin({
                    parallel: 4
                })
            ]
        }
    })
}

2.4、使用 polyfill 動態服務

動態 polyfill 指的是根據不同的瀏覽器,動態載入需要的 polyfillPolyfill.io 通過嘗試使用 polyfill 重新創建缺少的功能,可以更輕鬆地支持不同的瀏覽器,並且可以大幅度的減少構建體積。

Polyfill Service 原理

識別 User Agent,下發不同的 Polyfill

使用方法:在 index.html 中引入如下 script 標籤

<script crossorigin="anonymous" src=""></script>

三、完結

At last,看完之後有什麼不懂的,可以留言反饋。

轉載請註明出處:
作者:TSY
個人空間:

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

特斯拉盼於德國設廠 因環保問題遭抗議

摘錄自2020年01月19日中央通訊社德國報導

美國電動車大廠特斯拉(Tesla)計畫在柏林郊區設立超級工廠,大約250名德國民眾今天(19日)到設廠地點抗議,宣稱這樣的建設將會危害區域內的水源供應和野生生物。

特斯拉去年11月宣布,計畫在德國東部布蘭登堡邦(Brandenburg)市鎮格林海德(Grünheide)設立他們在歐洲的第一座工廠。政界、工會、產業團體都對特斯拉表示歡迎,宣稱那會為地區帶來工作機會,但因為對環境保護的憂慮,讓數百名當地人在今天走上街頭。

在此之前,布蘭登堡邦水利當局16日警告,預定興建的特斯拉工廠,將使得「飲水供應以及工廠廢水排放,出現廣泛及嚴重的問題。」

同時,民眾也為附近道路和村落之間的交通憂心不已,他們預期交通未來會有「巨幅」成長,他們為此表達抗議。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

不顧澳洲乾旱缺水 中資度假村抽水外銷惹眾怒

摘錄自2020年01月17日中央通訊社澳洲報導

澳洲昆士蘭州南原區(Southern Downs Region)旱災肆虐又遭野火侵襲,用水嚴重受限,一家中資度假村卻還獲准每年抽取近1億公升地下水外銷,引發當地民眾強烈不滿。

澳洲廣播公司新聞網(ABC News)和「澳洲人報」(The Australian )報導,中國的中山皇爵盈富公司擁有的4星卓爾巴度假村(Cherrabah Resort),位在昆士蘭州(Queensland)華瑞克(Warwick)附近的肘谷(Elbow Valley),飯店周圍牧地乾旱情況嚴重。

鄰近城市斯坦索普(Stanthorpe)供水已吃緊,居民仰賴水車從75公里遠的水壩運水過來。南原區區議會也準備限制區內民眾每人每日最多用水80公升,並習慣洗澡不超過3分鐘及每3天才洗衣服。

然而,區議會去年耶誕節前卻通過卓爾巴度假村提出的計畫,允許在度假村內設置抽水和淨水設施,每年可從含水層抽取最多9600萬公升的地下水,並送往澳洲沿海城市黃金海岸(Gold Coast)進行商業裝瓶販售。

根據中山皇爵盈富的公司介紹,他們除了在澳洲昆土蘭州建設度假村,還在當地開採地下水資源,成功找到優質水源生產高端礦泉水銷往中國。住在距離卓爾巴度假村抽水地點約5公里的牧場主人暨地主歐狄亞(Andrew O’Dea)表示,他對於區議會的決定感到「相當失望」。

歐狄亞的家族在當地畜牧已有約140年歷史,但受到乾旱影響,第5代的他被迫放棄幾乎所有牧群,如今只剩7頭母牛和1頭公牛。

歐狄亞說:「這的確令人相當難以承受,且(同意計畫)的時間點非常糟糕,因為我們已經沒有地表水可用。過去我們一直都能仰賴泉水和溪水。」

南原區市長杜比(Tracy Dobie)則捍衛區議會決定,表示在嚴格條件下卓爾巴度假村才得以將地下水裝瓶販售,且區議會也計畫動用聯邦政府的乾旱補助金,來協助支付鄉間家戶飲用水供應。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

雀巢砸逾620億 推動再生塑料使用

摘錄自2020年01月17日中央通訊社瑞士報導

瑞士食品大廠雀巢集團(Nestle)今天(17日)表示,將在5年內投資20億瑞士法郎(約新台幣621億元),以減少使用原始塑料,轉而採用食品級再生塑料。

法新社報導,雀巢也計劃投資新型永續包裝,以達到該公司的目標,也就是在2025年前全面使用可回收或可再利用的包裝材料。雀巢旗下品牌包含Nespresso咖啡、Vittel礦泉水和Smarties巧克力。

此外,雀巢發表聲明說,他們會在未來5年內,將原始塑料使用量降低1/3,且會撥出2億5000萬瑞士法郎作為創投基金,投資致力於廢棄物回收事業的新創公司。為打造再生塑料市場,雀巢計劃採購重達200萬公噸的食品級再生塑料,並撥出超過15億瑞士法郎,以支付從現在到2025年所需的材料附加費。雀巢執行長施奈德(Mark Schneider)在聲明中說:「最終不應有塑膠被丟入垃圾掩埋場,或成為廢棄物。」

綠色和平組織(Greenpeace)瑞士分部的維特里希(Matthias Wuthrich)表示,雀巢這項聲明「僅部分令人振奮」。他說:「這是朝正確方向所跨出的一步,但要結束當前危機,必須終止無用的塑膠生產作業,並須採用新的供應系統。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

氣候變遷是真的 高調擁煤的澳洲總理認了

摘錄自2020年1月16日中央社報導

曾高調支持煤炭政策、不願將野火與氣候變遷做連結的澳洲總理莫里森(Scott Morrison),今天(15日)終於承認氣候變遷是真的。

三年前,時任財政部長的澳洲總理莫里森在國會殿堂上揮舞一塊煤炭,將其作為執政的保守派聯盟計劃維持電力供應與低電價的象徵。

如今,澳洲正經歷空前嚴重的野火季節,加上莫里森因為自己的擁煤政策面臨外界批評,他今天承認氣候變遷是真的,也談到澳洲對環境的「適應力」與「復原力」。

路透社報導,莫里森今天在首都坎培拉(Canberra)告訴記者:「我想我們都希望擁有高度信心,作為一個國家,我們正在提升自身復原力,和對我們所生存現實環境的適應力。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益