久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

webpack核心概念之輸出(Output)

將所有的資源(assets)歸攏在一起后,還需要告訴 webpack 在哪里打包應用程序。webpack 的 output 屬性描述了如何處理歸攏在一起的代碼(bundled code)。下面本篇文章就來帶大家深入了解一下webpack核心概念中的輸出(Output),希望對大家有所幫助!

webpack核心概念之輸出(Output)

輸出(Output):配置 output 選項可以控制 webpack 如何向硬盤寫入編譯文件。注意,即使可以存在多個入口起點,但只指定一個輸出配置。

起步


我們先npm init初始化一個項目,本地安裝webpackwebpack-cli,然后在根目錄創建index.html、webpack.config.jssrc文件夾,在文件夾內再創建一個main.js作為入口文件

準備工作完成后如圖所示:

webpack核心概念之輸出(Output)

main.js

function Component(){     var div=document.createElement('div')     div.innerHTML="來一起學習出口配置吧~"     return div } document.body.appendChild(Component())

index.html

<body>     <script src="./dist/bundle.js"></script> </body>

packag.json

"scripts": {   "test": "echo "Error: no test specified" && exit 1",   "build":"webpack" //加上 },

接下來就是配置部分:webpack.config.js

輸出(Output))


配置 output 選項可以控制 webpack 如何向硬盤寫入編譯文件。

注意,即使可以存在多個入口起點,但只指定一個輸出配置

下面是輸出配置的幾個概念:

1、path

path指定資源輸出的位置,要求值必須為絕對路徑,如:

const path=require('path') module.exports={     entry:'./src/main.js',     output:{         filename:'bundle.js',         //將資源輸出位置設置為該項目的dist目錄         path: path.resolve(__dirname, 'dist')     }, }

在Webpack 4之后,output.path已經默認為dist目錄。除非我們需要更改它,否則不必單獨配置,所以如果是webpack4以上,你可以寫成:

module.exports={     entry:'./src/main.js',     output:{         filename:'bundle.js',     }, }

2、filename

filename的作用是控制輸出資源的文件名,其形式為字符串。在這里我把它命名為bundle.js,意為我希望資源輸出在一個叫bundle.js的文件中:

module.exports={     entry:'./src/main.js',     output:{         filename:'bundle.js',     }, }

打包后如圖,會自動生成一個dist文件夾,里面有個bundle.js文件

webpack核心概念之輸出(Output)

filename可以不僅僅是bundle的名字,還可以是一個相對路徑

即便路徑中的目錄不存在也沒關系,Webpack會在輸出資源時創建該目錄,比如:

  module.exports = {     output: {       filename: './js/bundle.js',     },   };

打包后如圖:

webpack核心概念之輸出(Output)

在多入口的場景中,我們需要對產生的每個bundle指定不同的名字,Webpack支持使用一種類似模板語言的形式動態地生成文件名

在此之前,我們再去src中創建一個新的入口文件

vender.js:

function Component(){     var div=document.createElement('div')     div.innerHTML="我是第二個入口文件"     return div } document.body.appendChild(Component())

webpack.config.js:

module.exports = {     entry:{         main:'./src/main.js',         vender:'./src/vender.js'     },     output: {       filename: '[name].js',     },  };

打包后如圖:

webpack核心概念之輸出(Output)

filename中的[name]會被替換為chunk name即main和vender。因此最后會生成vendor.jsmain.js

此時如果你希望看到內容,你還需在index.html中改下內容,將路徑對應上最后打包出來的bundle

<body>     <script src="./dist/main.js"></script>     <script src="./dist/vender.js"></script> </body>

[問題]這時候就會有個需求了,如何讓index.html自動幫我們將生成的bundle添加到html中呢?這里可以用到插件 HtmlWebpackPlugin,詳細看下方

3、其他

除了[name]可以指代chunk name以外,還有其他幾種模板變量可以用于filename的配置中:

  • [hash]:指代Webpack此次打包所有資源生成的hash
  • [chunkhash]:指代當前chunk內容的hash
  • [id]:指代當前chunk的id
  • [query]:指代filename配置項中的query

它們可以:控制客戶端緩存

[hash][chunkhash]都與chunk內容直接相關,如果在filename中使用,當chunk的內容改變時,可以同時引起資源文件名的更改,從而使用戶在下一次請求資源文件時會立即下載新的版本而不會使用本地緩存。

[query]也可以起到類似的效果,但它與chunk內容無關,要由開發者手動指定。

4、publicPath

publicPath是一個非常重要的配置項,用來指定資源的請求位置

以加載圖片為例

import Img from './img.jpg'; function component() {     //...     var img = new Image();     myyebo.src = Img //請求url 	//... }
        {           //...           query: {             name: '[name].[ext]',             outputPath: 'static/img/',             publicPath: './dist/static/img/'           }         }

由上面的例子所示,原本圖片請求的地址是./img.jpg,而在配置上加上publicPath后,實際路徑就變成了了./dist/static/img/img.jpg,這樣就能從打包后的資源中獲取圖片了

publicPath有3種形式:

  • HTML相關

    我們可以將publicPath指定為HTML的相對路徑,在請求這些資源時會以當前頁面HTML所在路徑加上相對路徑,構成實際請求的URL

    //假設當前html地址為:https://www.example.com/app/index.html //異步加載的資源名為 1.chunk.js pubilicPath:"" 		//-->https://www.example.com/app/1.chunk.js pubilicPath:"./js" 	//-->https://www.example.com/app/js/1.chunk.js pubilicPath:"../assets/"  	//-->https://www.example.com/assets/1.chunk.js
  • Host相關

    若publicPath的值以“/”開始,則代表此時publicPath是以當前頁面的host name為基礎路徑的

    //假設當前html地址為:https://www.example.com/app/index.html //異步加載的資源名為 1.chunk.js pubilicPath:"/" 	//-->https://www.example.com/1.chunk.js pubilicPath:"/js/" 	//-->https://www.example.com/js/1.chunk.js
  • CDN相關

    上面兩個都是相對路徑,我們也可以使用絕對路徑的形式配置publicPath

    這種情況一般發生于靜態資源放在CDN上面時,由于其域名與當前頁面域名不一致,需要以絕對路徑的形式進行指定

    當publicPath以協議頭或相對協議的形式開始時,代表當前路徑是CDN相關

    //假設當前html地址為:https://www.example.com/app/index.html //異步加載的資源名為 1.chunk.js pubilicPath:"http://cdn.com/" 	//-->http://cdn.com/1.chunk.js pubilicPath:"https://cdn.com/"	//-->https://cdn.com/1.chunk.js pubilicPath:"//cdn.com/assets"	//-->//cdn.com/assets/1.chunk.js

應用


1、單個入口

在 webpack 中配置 output 屬性的最低要求是將它的值設置為一個對象,包括以下兩點:

  • filename 用于輸出文件的文件名。
  • 目標輸出目錄 path 的絕對路徑
module.exports={     entry:'./src/main.js',     output:{         filename:'bundle.js',     }, } //webpack4以后dist會默認生成,于是這里省略了path

2、多個入口

如果配置創建了多個單獨的 "chunk",則應該使用占位符來確保每個文件具有唯一的名稱

這里用到了上面所講的filename的[name]

另外,如果想將這些資源放進指定的文件夾,可以加上path配置

module.exports={     entry: {       main: './src/main.js',       vender: './src/vender.js'     },     output: {       filename: '[name].js',       path: __dirname + '/dist/assets' //指定打包后的bundle放在/dist/assets目錄下     }   } // 打包后生成:./dist/assets/main.js, ./dist/assets/vender.js

HtmlWebpackPlugin


本章上方遺留的問題可以通過使用插件HtmlWebpackPlugin解決

安裝插件

npm install --save-dev html-webpack-plugin

配置插件

const HtmlWebpackPlugin=require('html-webpack-plugin') //加載模塊 module.exports = {     entry:{         main:'./src/main.js',         vender:'./src/vender.js'     },     //添加插件     plugins:[         new HtmlWebpackPlugin({             title:'output management'         })     ],     output: {       filename: '[name].js',     },  };

打包

打包完成后你會發現dist中出現了一個新的index.html,上面自動幫我們添加所生成的資源,打開后會發現瀏覽器會展示出內容

webpack核心概念之輸出(Output)

這意味著,以后初始化一個項目就不必寫index.html

源碼可從這里獲?。?/p>

https://sanhuamao1.coding.net/public/webpack-test/webpack-test/git/files

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
国产精品外国| 99国产精品久久久久久久成人热| 精品国产亚洲一区二区三区| 欧美亚洲色图校园春色| 日产欧产美韩系列久久99| 极品裸体白嫩激情啪啪国产精品| 97精品中文字幕| 福利一区二区三区视频在线观看| 久久亚洲资源中文字| 国产一区二区三区日韩精品| 日韩av有码| 免费毛片在线不卡| 老鸭窝毛片一区二区三区| 国产精品免费看| 免费视频一区二区| 三级久久三级久久久| 日韩欧美中文字幕一区二区三区| 亚洲深夜福利| 日韩国产在线观看一区| 国产精品一区二区美女视频免费看 | 麻豆中文一区二区| 国产高潮在线| 男女精品网站| 国产精品尤物| 欧美国产三级| 久久久国产精品网站| 在线日韩一区| 欧美日韩一区二区三区不卡视频| 精品少妇一区| 亚洲精品激情| 日韩深夜视频| 日本中文字幕一区二区| 欧美精品羞羞答答| 国产va免费精品观看精品视频| 免费人成精品欧美精品| 久久国产小视频| 国内精品美女在线观看| 日本欧美一区二区| 亚洲va久久久噜噜噜久久| 国产精品黄网站| 丝袜a∨在线一区二区三区不卡| 成人在线超碰| 日本视频一区二区| 首页国产欧美久久| 日韩毛片在线| 麻豆视频在线观看免费网站黄| 日韩精选在线| 婷婷成人av| 蜜臀久久99精品久久久久久9 | 日韩av自拍| 国产一区导航| 99亚洲精品| 亚洲一本视频| 亚洲激情国产| 97精品久久| 日本成人在线网站| 欧美精品第一区| av免费不卡国产观看| 免费观看在线综合色| 三上悠亚国产精品一区二区三区 | 日本免费新一区视频| 国产精品99一区二区| 91欧美国产| 亚洲一级少妇| 天堂网av成人| 伊人久久大香线蕉av不卡| 久久久夜精品| 国产videos久久| 国产精品久久观看| 欧美激情另类| 久久久国产亚洲精品| 红桃视频欧美| 日韩精品一二三四| 日本欧美韩国一区三区| 奇米狠狠一区二区三区| 国产欧美二区| 麻豆精品久久| 日韩综合精品| 91久久久久| 久久精品99国产国产精| 国产精品第十页| 免费在线小视频| 亚洲一级黄色| 日韩精品国产精品| 精品国产亚洲日本| 激情久久五月| 日韩1区2区日韩1区2区| 国产精品久久久久久久久妇女| 蜜桃视频欧美| 国产精品theporn| 久久久精品午夜少妇| 亚洲午夜av| 日韩av网站在线免费观看| 欧美激情国产在线| 亚洲青青久久| 久久美女性网| 欧美日韩一区二区三区四区在线观看| 精品一区二区三区亚洲| 一区视频在线| 久久精品九色| 在线免费观看亚洲| 日韩免费av| 日韩av电影一区| 国产女优一区| 亚洲日本网址| 久久99性xxx老妇胖精品| 巨乳诱惑日韩免费av| 国产精品欧美三级在线观看 | 精品久久不卡| 91精品国产自产观看在线 | 一区在线观看| 日本不卡免费高清视频在线| 97久久超碰| 亚洲精品系列| 影音先锋国产精品| 久久精品一区| 日本免费一区二区视频| 乱人伦精品视频在线观看| 久久久精品日韩| 亚洲电影有码| 日韩免费高清| 秋霞影院一区二区三区| 黑森林国产精品av| 欧美激情亚洲| 久久精品亚洲| 国内精品美女在线观看| 久久一区精品| 国产一区调教| 不卡专区在线| 999久久久精品国产| 日韩深夜视频| 日韩三区免费| 欧美日韩免费观看一区=区三区| 久久国产影院| 国产午夜久久| 日韩高清不卡一区| 你懂的亚洲视频| 国产成人精选| 国产白浆在线免费观看| 精品免费av在线| 99国产一区| 日韩精品1区2区3区| 国产欧美亚洲精品a| 久久gogo国模啪啪裸体| 日韩伦理一区| 狠狠久久婷婷| 少妇精品久久久一区二区| 久久国内精品自在自线400部| 国产剧情在线观看一区| 国产盗摄——sm在线视频| 日韩视频中文| 国产精品mv在线观看| www在线观看黄色| 激情综合网站| 久久国产三级精品| 久久精品中文| 日本欧美一区二区| 美女一区网站| 亚洲综合色婷婷在线观看| 国产精品成人自拍| 色一区二区三区| 日韩中文字幕亚洲一区二区va在线 | 国产国产精品| 国产精品亚洲一区二区在线观看| 中文字幕人成乱码在线观看| 免费精品视频| 日韩成人综合| 国产精品一区毛片| 红桃视频国产精品| 麻豆成人av在线| 国产亚洲欧洲| 亚洲伊人av| 日本vs亚洲vs韩国一区三区二区| 91成人福利| 在线视频日韩| 日韩精品专区| 精品国产一区二区三区av片| 首页国产欧美久久| 99久久久久| 日韩在线欧美| 精品三级国产| 欧美极品中文字幕| 天海翼亚洲一区二区三区| 欧美日韩激情在线一区二区三区| 欧美精品99| 亚洲aa在线| 先锋影音久久久| 久久九九电影| 国产激情久久| 久久精品99国产精品| 免费久久99精品国产| 久久成人国产| 日韩专区一卡二卡| 免费人成精品欧美精品| 在线 亚洲欧美在线综合一区| 久久免费黄色| 9色精品在线| 日韩视频在线一区二区三区 | 精品视频在线你懂得| 精品久久97|