成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

webpack學(xué)習(xí)(三)—— webpack-dev-server

CKJOKER / 3687人閱讀

摘要:在項(xiàng)目根目錄下創(chuàng)建,通過(guò)這個(gè)文件來(lái)起服務(wù)。到這里為止,自動(dòng)刷新的內(nèi)容基本講完了。注意到一點(diǎn),目前自動(dòng)刷新都是刷新整個(gè)頁(yè)面。其中表示熱加載模塊,表示。后續(xù)我還會(huì)進(jìn)行更深入的學(xué)習(xí),希望和大家共同進(jìn)步。

本文主要介紹以下兩方面的內(nèi)容:

webpack-dev-server自動(dòng)刷新

熱加載(Hot Module Replacement

自動(dòng)刷新

webpack-dev-server提供了兩種自動(dòng)刷新的模式

iframe模式

inline模式

這兩種模式都支持Hot Module Replacement(熱加載),所謂熱加載是指當(dāng)文件發(fā)生變化后,內(nèi)存中的bundle文件會(huì)收到通知,同時(shí)更新頁(yè)面中變化的部分,而非重新加載整個(gè)頁(yè)面。

我們先介紹自動(dòng)刷新,再來(lái)談熱加載。

iframe模式

前兩篇文章中提到,我們?cè)诳刂婆_(tái)輸入

$ webpack-dev-server

就啟動(dòng)了服務(wù),并且支持自動(dòng)刷新,其實(shí),這種方式就是iframe模式。查看頁(yè)面元素可以發(fā)現(xiàn):

如圖中黑框所示,可以看到其實(shí)是通過(guò)iframe內(nèi)使我們實(shí)際的頁(yè)面。
這種方式有一點(diǎn)需要注意:瀏覽器地址欄的url地址不會(huì)受頁(yè)面跳轉(zhuǎn)的影響,將一直保持為http://localhost:8080/webpack-dev-server。
比如,現(xiàn)在給index.html頁(yè)面加上一個(gè)跳轉(zhuǎn)鏈接,跳轉(zhuǎn)到foo.html。
foo.html



    
        
        webpack demo
    
    
        

this is another page

index.html中加入跳轉(zhuǎn)鏈接如下:


    

webpack demo

click here to go to foo.html

當(dāng)點(diǎn)擊鏈接跳轉(zhuǎn)到foo.html頁(yè)面時(shí),可以看到瀏覽器的地址欄中仍然是http://localhost:8080/webpack-dev-server。如下:

inline模式

這里要說(shuō)一下,目前我們啟動(dòng)webpack-dev-server都是通過(guò)命令行實(shí)現(xiàn)的。實(shí)際上,還可以通過(guò)nodeAPI WebpackDevServer實(shí)現(xiàn)。
先看命令行如何實(shí)現(xiàn)inline模式,有兩種方法:
1、啟動(dòng)時(shí)配置

$ webpack-dev-server --inline

2、配置文件配置,在webpack.config.js中加入

devServer: { inline: true }

這樣我們就可以通過(guò)http://localhost:8080/來(lái)訪問(wèn)我們的文件了。比如這樣http://localhost:8080/index.html來(lái)訪問(wèn)index.html,且頁(yè)面跳轉(zhuǎn)回反映在瀏覽器的地址欄中。

接下來(lái)說(shuō)明如何使用WebpackDevServer來(lái)實(shí)現(xiàn)inline模式。
在項(xiàng)目根目錄下創(chuàng)建server.js,通過(guò)這個(gè)文件來(lái)起服務(wù)。
server.js

var webpack = require("webpack");
var WebpackDevServer = require("webpack-dev-server");

var config = require("./webpack.config.js");
config.entry.unshift("webpack-dev-server/client?http://localhost:8080/");
var compiler = webpack(config);
var server = new WebpackDevServer(compiler, {
    publicPath: "/dist/"
});
server.listen(8080);

有幾個(gè)問(wèn)題需要說(shuō)明:
1、這里加載了webpackwebpack-dev-server兩個(gè)模塊,這個(gè)require默認(rèn)會(huì)從node-modules中去加載。由于我們之前安裝時(shí)為了方便在命令行下使用,采用了全局安裝的方式-g,所以本地并沒(méi)有安裝這個(gè)模塊。這里需要在當(dāng)前項(xiàng)目中再進(jìn)行安裝

$ npm install webpack webpack-dev-server

2、在配置文件webpack.config.js中無(wú)需再對(duì)devServer進(jìn)行配置,因?yàn)槲覀冞@樣啟動(dòng)服務(wù)的話,WebpackDevServer是訪問(wèn)不到webpack中的配置的。但是,我們需要對(duì)配置文件的entry進(jìn)行修改:

entry: ["./src/entry.js"]

以數(shù)組方式來(lái)寫,這樣就可以支持多個(gè)入口文件。同時(shí)在server.js中加入

config.entry.unshift("webpack-dev-server/client?http://localhost:8080/");

3、WebpackDevServer支持兩個(gè)參數(shù),其中第二個(gè)參數(shù)對(duì)WebpackDevServer進(jìn)行了配置,剛剛提到,WebpackDevServer是訪問(wèn)不到webpack中的配置的,所以這里我們要再設(shè)置publicPath
當(dāng)然,為了方便處理,一般我們可以統(tǒng)一將WebpackDevServer的配置在webpack.config.js中的devServer中設(shè)置,再將devServer作為第二個(gè)參數(shù)傳給WebpackDevServer。如下:
webpack.config.js

module.exports = {
    devServer: {  //這里配置webpack-dev-server
        publicPath: "/dist/"
        //這里還可以加入其它你需要的參數(shù)
    },
    entry: ["./src/entry.js"],
    output: {
        path: path.join( __dirname, "/dist"),
        publicPath: "/dist/",
        filename: "bundle.js"
    },
    module: {
        loaders: [
            //....
        ]
    }
};

server.js

var config = require("./webpack.config.js");
config.entry.unshift("webpack-dev-server/client?http://localhost:8080/");
var compiler = webpack(config);
var server = new WebpackDevServer(compiler, config.devServer);  //這里將其作為參數(shù)傳進(jìn)來(lái)

最后運(yùn)行server.js就可以啟動(dòng)服務(wù)了。

$ node server.js

到這里為止,自動(dòng)刷新的內(nèi)容基本講完了。注意到一點(diǎn),目前自動(dòng)刷新都是刷新整個(gè)頁(yè)面。下面來(lái)說(shuō)下熱加載,也就是只有變化的內(nèi)容更新,而非刷新整個(gè)頁(yè)面。

Hot Module Replacement(熱加載)

方法一:直接通過(guò)命令行設(shè)置

$ webpack-dev-server --hot

打開頁(yè)面可以在控制臺(tái)看到以上內(nèi)容,說(shuō)明熱加載配置成功。其中HMS表示熱加載模塊,WDS表示webpack-dev-server。

方法二:通過(guò)nodejsapi配置
這個(gè)方法需要對(duì)webpack.config.js做出一些配置。
第一步:在webpack配置文件入口參數(shù)中加入webpack/hot/dev-server

server.js中作如下修改即可:

config.entry.unshift("webpack-dev-server/client?http://localhost:8080/", "webpack/hot/dev-server");  //這里在入口參數(shù)中又添加了一項(xiàng),為熱加載的dev-server

第二步:添加plugin,添加熱加載模塊

plugins: [
    new webpack.HotModuleReplacementPlugin()
]

第三步:在devServer中配置hottrue

devServer: {
    publicPath: "/dist/",
    hot: true  //這里配置了熱加載模式為true
    //這里還可以加入其它你需要的參數(shù)
}

最終,webpack.config.js如下:

let path = require("path");
let webpack = require("webpack");

module.exports = {
    devServer: {
        publicPath: "/dist/",
        hot: true
        //這里還可以加入其它你需要的參數(shù)
    },
    entry: ["./src/entry.js"],
    output: {
        path: path.join( __dirname, "/dist"),
        publicPath: "/dist/",
        filename: "bundle.js"
    },
    module: {
        loaders: [
            {
                test: /.css$/, 
                loader: "style!css"
            },
            {
                test: /.less$/,
                loader: "style!css!less"
            },
            {
                test: /.js$/,
                exclude: /node_modules/,
                loader: "babel-loader"
            }
        ]
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin()
    ]
};

server.js如下:

var webpack = require("webpack");
var WebpackDevServer = require("webpack-dev-server");

var config = require("./webpack.config.js");
config.entry.unshift("webpack-dev-server/client?http://localhost:8080/", "webpack/hot/dev-server");
var compiler = webpack(config);
var server = new WebpackDevServer(compiler, config.devServer);
server.listen(8080);

啟動(dòng)服務(wù):

$ node server.js

可以看到配置成功,如下圖所示:

結(jié)語(yǔ)

至此,本文對(duì)webpack-dev-server的自動(dòng)刷新和熱加載做了詳細(xì)介紹,當(dāng)然,它的原理還有待更深一步的探索。后續(xù)我還會(huì)進(jìn)行更深入的學(xué)習(xí),希望和大家共同進(jìn)步。

參考資料

http://webpack.github.io/docs...

(本文完)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/80775.html

相關(guān)文章

  • webpack 項(xiàng)目構(gòu)建:()開發(fā)環(huán)境——本地服務(wù)器搭建

    摘要:上一章我們了解了的編譯環(huán)境搭建項(xiàng)目構(gòu)建二編譯環(huán)境搭建這一章我們會(huì)結(jié)合的,介紹本地測(cè)試服務(wù)器的搭建過(guò)程。三開發(fā)環(huán)境有一些特性是專門用于開發(fā)環(huán)境的,可以幫助我們搭建一個(gè)更好的開發(fā)環(huán)境。我們可以通過(guò)配合使用來(lái)搭建本地服務(wù)。 注:以下教程均在 windows 環(huán)境實(shí)現(xiàn),使用其他操作系統(tǒng)的同學(xué)實(shí)踐過(guò)程可能會(huì)有些出入。 ??上一章我們了解了 webpack 的 ES6 編譯環(huán)境搭建:webpack...

    tolerious 評(píng)論0 收藏0
  • webpack使用之基礎(chǔ)篇

    摘要:是一個(gè)和差不多同時(shí)代的產(chǎn)物,但是它只支持基于,對(duì)于來(lái)說(shuō)只能興嘆了。找一個(gè)自己順手的就好,順便一提,我現(xiàn)在主要使用輔助。 說(shuō)到自動(dòng)化構(gòu)建,你想到了什么?基于AMD的requirejs?還是基于commoJS的browserify?他們都在各自的領(lǐng)域或者說(shuō)時(shí)代發(fā)揮了很重要的作用。但是時(shí)代的變遷,webpack成了現(xiàn)在的佼佼者,我們不知道什么時(shí)候wepback也會(huì)被取代,但是現(xiàn)在我們必須要掌...

    zhichangterry 評(píng)論0 收藏0
  • 新人學(xué)習(xí),照文檔手?jǐn)]webpack,bug基本修復(fù)完善(有問(wèn)題請(qǐng)聯(lián)系我,并非完全原創(chuàng),不喜勿噴。。。

    摘要:介紹簡(jiǎn)單點(diǎn)來(lái)說(shuō)就就是一個(gè)配置文件,所有的魔力都是在這一個(gè)文件中發(fā)生的。一安裝全局安裝在文件夾里面也需要安裝這個(gè)是在你根目錄下進(jìn)行的全局安裝記得加太慢,推薦用的鏡像安裝方法一樣。二創(chuàng)建項(xiàng)目新建文件夾命令行輸入命令。 介紹:webpack簡(jiǎn)單點(diǎn)來(lái)說(shuō)就就是一個(gè)配置文件,所有的魔力都是在這一個(gè)文件中發(fā)生的。 這個(gè)配置文件主要分為三大塊 entry 入口文件 讓webpack用哪個(gè)文件作為項(xiàng)目的...

    xiangchaobin 評(píng)論0 收藏0
  • Webpack 4.X 從入門到精通 - devServer與mode(

    摘要:同時(shí)它還提供了自動(dòng)刷新熱更新等功能,使開發(fā)變得非常方便。的到來(lái)減少了很多的配置,它內(nèi)置了很多的功能。 上一篇文章里詳細(xì)介紹了一下插件的用法,這一篇文章接著豐富module.exports里的屬性。如今的前端發(fā)展已經(jīng)非常迅速了,伴隨而來(lái)的是開發(fā)模式的轉(zhuǎn)變?,F(xiàn)在已經(jīng)不再是寫個(gè)靜態(tài)頁(yè)面并放在瀏覽器里打開預(yù)覽一下了。在實(shí)際的開發(fā)中會(huì)經(jīng)常需要使用http服務(wù)器,比如之前的ajax,想要看到效果就...

    王偉廷 評(píng)論0 收藏0
  • webpack學(xué)習(xí)(二)—— 進(jìn)階

    摘要:上篇文章中簡(jiǎn)單介紹了的最基本用法,且項(xiàng)目結(jié)構(gòu)十分簡(jiǎn)單,只有一個(gè)頁(yè)面一個(gè)頁(yè)面兩個(gè)文件。本文將介紹如何使用對(duì)具有較為規(guī)范的結(jié)構(gòu)的項(xiàng)目進(jìn)行構(gòu)建。這說(shuō)明監(jiān)測(cè)到了文件的變化,但是我們的加載的文件并沒(méi)有變。后續(xù)還會(huì)更深入地學(xué)習(xí),希望和大家一同進(jìn)步。 上篇文章中簡(jiǎn)單介紹了webpack的最基本用法,且項(xiàng)目結(jié)構(gòu)十分簡(jiǎn)單,只有一個(gè)html頁(yè)面、一個(gè)css頁(yè)面、兩個(gè)js文件。本文將介紹如何使用webpac...

    singerye 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

CKJOKER

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<