程式碼分割和懶載入(一)
為什麼需要程式碼分割?簡單來說:就是讓使用者在最快的速度拿到想要獲取的內容。
程式碼分割不在webpack的配置用。而是內建在webpack的方法中:
1、require.ensure方法/require.include
2、es5 loader spll
先來說說require.ensure方法
接受四個引數,分別如下
[]:dependencies 依賴
callback:回掉函式,require ensure 執行程式碼
erro callback: 錯的的回撥,不常用
chunkName: 指定chunk的名字
使用場景:分離業務程式碼,業務公共程式碼,第三方依賴&分離首次載入和訪問後加載程式碼
1、分割lodash
import * as _ from 'lodash';
修改成這樣:
require.ensure([], function() {
var _ = require('lodash');
_.join(['1', '2'], '3');
},'vender')
2、分割公共程式碼
import './subpageA.js';
import './subPageB';
修改成這樣:
if (page === pageA) { require.ensure(['./subpageA'], function() { var subpageA = ['./subpageA'] },'subpageA') } else if (page === pageB) { require.ensure(['./subpageB'], function() { var subpageA = ['./subpageB'] },'subpageB') }
3、sunpageA和subpageB同時依賴moduleA
而pageA依賴subpageA和subpageB
這時候,可以在pageA中提前引入moduleA
require.include('./moduleA')
打包後結果如下:
vender.chunk.js 541 kB 0 [emitted] [big] vender
subpageB.chunk.js 368 bytes 1 [emitted] subpageB
subpageA.chunk.js 368 bytes 2 [emitted] subpageA
pageA.bundle.js 6.93 kB 3 [emitted] pageA
而未提前引入moduleA的打包結果如下:
vender.chunk.js 541 kB 0 [emitted] [big] vender
subpageB.chunk.js 580 bytes 1 [emitted] subpageB
subpageA.chunk.js 580 bytes 2 [emitted] subpageA
pageA.bundle.js 6.7 kB 3 [emitted] pageA
很明顯。提前引入moduleA,得到的subpageA和subpageB要小很多。
-------------------------------------------------------------------------
使用動態import
把require.ensure 換成 import
程式碼如下:
if (page === 'pageA') {
import(/*webpackChunkName:'subPageA'*/'./subPageA').then(function(subpageA) {
console.log(subpageA);
})
} else if (page === 'pageB') {
import(/*webpackChunkName:'subPageA'*/'./subPageB').then(function(subPageB) {
console.log(subPageB);
})
}
/*webpackChunkName:'subPageA'*/ 這是魔法註釋,新增chunkname的方法。
此時,雖然只引入了一個js,webpack卻幫我們把分割的js也引入了。
到此,學習結束。
相關推薦
程式碼分割和懶載入(一)
為什麼需要程式碼分割?簡單來說:就是讓使用者在最快的速度拿到想要獲取的內容。程式碼分割不在webpack的配置用。而是內建在webpack的方法中:1、require.ensure方法/require.include2、es5 loader spll先來說說require.e
深入理解並行程式設計-分割和同步設計(一)
原文連結 作者:paul 譯者:謝寶友,魯陽,陳渝 在商用計算機中,多核系統已經越來越常見了,本章將描述如何設計能更好利用多核優勢的軟體。我們將介紹一些習語,或者叫“設計模式”,來幫助您權衡效能、可擴充套件性和響應時間。在上一章我們說過,您在編寫並行軟體時最重要的考慮是如何進行分
webpack4 系列教程(四): 單頁面解決方案--程式碼分割和懶載入
本節課講解webpack4打包單頁應用過程中的程式碼分割和程式碼懶載入。不同於多頁面應用的提取公共程式碼,單頁面的程式碼分割和懶載入不是通過webpack配置來實現的,而是通過webpack的寫法和內建函式實現的。 目前webpack針對此項功能提供
webpack基礎--程式碼分割和懶載入
程式碼分割和懶載入 內建方法和Loader require.ensure() 內建方法:require.ensure([dependencies], callback,errorCalback,chunkName) 動態載入程式碼 引數: depend
webpack系類之程式碼分割和懶載入
webpack實現程式碼方式是主要是通過模組的引入方式 1.require.ensure //進行程式碼分割 require.ensure(['lodash'],function(){ var _ = require('lodash');//
使用Webpack的程式碼分離實現Vue懶載入(譯文)
當一個Vue的專案體積變得十分龐大的時候,使用Webpack的程式碼分離功能將Vue Components,routes或Vuex的程式碼進行分離並按需載入,會極大的提高App的首屏載入速度。 在Vue的專案中,我們可以在三種不同的情況下使用懶載入和程式碼分離功能: Vue元
Spring原始碼深度解析總結(3)—— 配置檔案的讀取和Bean的載入(一)
上一篇總結了Spring利用Resource介面對配置檔案的封裝,接下來我們要看看Spring對封裝好的資源是如何解析的,以及如何利用解析出的資訊載入Bean的。BeanFactory bf = new XmlBeanFactory(new ClassPathResoure(
基於android的網路音樂播放器-本地音樂的載入和後臺播放(一)
作為android初學者,最近把瘋狂android講義和瘋狂Java講義看了一遍,看到書中介紹的知識點非常多,很難全部記住,為了更好的掌握基礎知識點,我將開發一個網路音樂播放器-EasyMusic來鞏固下,也當作是練練手。感興趣的朋友可以看看,有設計不足的地方也
tensorflow-模型儲存和載入(一)
模型儲存和載入(一)TensorFlow的模型格式有很多種,針對不同場景可以使用不同的格式。格式簡介Checkpoint用於儲存模型的權重,主要用於模型訓練過程中引數的備份和模型訓練熱啟動。GraphD
JVM——深入解析原理和執行機制(一)類載入過程
隔了好久終於把這篇文章補上了,最近在看《深入理解Java虛擬機器》,一本很不錯的書,必須值得一看。 由於本人對Java類的載入過程一直是一知半解,所以優先看了一下
JVM——深入解析原理和執行機制(一)類載入器
上次我們說了一下jvm中類載入的過程,大概有載入,連線(驗證,準備,解析),初始化這麼幾個步驟,當然要實現這些功能就需要有載入器,今天我們就來說說jvm中的類載入器。 一、分類
JS函數和對象(一)
inf ack bsp 用法 .cn 求和 封裝 obj [0 在本文章中,將對JS中的函數和對象進行一些講解,不對之處還請之處 一.JS中的函數 1.1無參函數 其形式如下代碼所示 function box(){ alert("我是一個函數,只有被調用才會執行
python學習筆記表達式和運算符(一)
python表達式和運算符什麽是表達式?1+2*3 就是一個表達式,這裏的加號和乘號叫做運算符,1、2、3叫做操作數。1+2*3 經過計算後得到的結果是7,就1+2*3 = 7。我們可以將計算結果保存在一個變量裏,ret = 1-2*3 。 所以表達式就是由操作數和運算符組成的一句代碼或語句,表達式可以求值,
Java數據結構和算法(一)——簡介
技術 其他 高程 度量 得出 rsh 基本功 represent 介紹 本系列博客我們將學習數據結構和算法,為什麽要學習數據結構和算法,這裏我舉個簡單的例子。 編程好比是一輛汽車,而數據結構和算法是汽車內部的變速箱。一個開車的人不懂變速箱的原理也是能開車的,同理一個不
配置和管理Zabbix(一)
trigge zabbix serve 名稱 net rep accept discover 不同的 四、添加監控客戶端1、監控Linux服務器首先安裝zabbix-agent客戶端CentOS6客戶端: # rpm -ivh http://repo.zabbix.com/
微服務之springCloud和docker-Eureka(一)
決策 config snap service 每次 entry eas pen end 前言 本文記錄怎麽搭建服務註冊中心eureka,然後打包成docker鏡像,用docker swarm部署eureka集群 1、環境spring boot 1.5.1.RELEASE,是
大話設計模式——裝飾模式和代理模式(一)
區別 接口 需要 構圖 技術分享 開閉 tro 可能 code 1、是什麽? 裝飾模式:動態地給一個對象添加額外的職責。 代理模式:其他對象通過對象A去訪問對象B。 2、為什麽用? 裝飾模式:1、遵循開閉原則,盡量不去修改原有的類。2、裝飾對象一般都是添加額外的
Spring整合Struts2和Hibernate+Maven(一)之Maven專案建立
趁著畢設的功夫,寫一些東西。也算是記錄個人平時畢設完成的過程。 建立專案 工具:intellij idea+JDK1.6+Maven 第一步:New Project ->點選左側maven ->勾選Create fromarchetype 後選擇maven-archet
理解Web應用程式的程式碼結構和執行原理(3)
1、理解Web應用程式的執行原理和機制 Web應用程式是基於瀏覽器/伺服器模式(也稱B/S架構)的應用程式,它開發完成後,需要部署到Web伺服器上才能正常執行,與使用者互動的客戶端是網頁瀏覽器。 瀏覽器負責顯示來自伺服器的資料和接受使用者的輸入資料,也
Web框架——XWAF的程式碼結構和執行機制(4)
XWAF是一套基於Servlet和java反射技術的Web應用程式框架,它利用Servlet執行機制在伺服器上載入和執行,接管客戶端請求,依靠ServletRequest物件獲取使用者請求資訊,使用ServletResponse物件返回處理結果。