国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

WMOS之webpack篇(一)

int64 / 1153人閱讀

摘要:版本目前最新的版本是,而我也是在此基礎(chǔ)上進(jìn)行學(xué)習(xí)和開發(fā)的。能夠?qū)D片進(jìn)行一些處理。目前我還沒有達(dá)到那種程度,所以一步一步來。簡化了文件的創(chuàng)建,以便為您的包提供服務(wù)。的對(duì)象的配置對(duì)象。的作用是來匹配相應(yīng)的文件。

關(guān)于WMOS

好吧,作為第一個(gè)系列第一篇的內(nèi)容估計(jì)沒多少人會(huì)看,所以大概會(huì)寫的比較爛,還請(qǐng)看的人見諒。至于關(guān)于WMOS是什么,在這篇文章里不是十分重要,就先賣個(gè)關(guān)子,以后(大概吧)會(huì)慢慢跟大家說。這里就先當(dāng)做一個(gè)要做的項(xiàng)目就好了。回到正題。

Webpack

現(xiàn)在的前端開發(fā)不同以前,不是寫寫html,css,js就OK的。隨著項(xiàng)目的復(fù)雜就會(huì)考慮一些工程化的東西,因?yàn)槿绻泻芏鄸|西都需要我們自己去做會(huì)費(fèi)很多時(shí)間。webpack就是一個(gè)類似gulp或者grunt的工具,不過它的核心可不只是自動(dòng)化這么簡單。

版本

目前webpack最新的版本是v3.4.1,而我也是在此基礎(chǔ)上進(jìn)行學(xué)習(xí)和開發(fā)的。

不直接聊原理

由于我之前也用過webpack并且也深入去學(xué)習(xí)了原理的東西,不過那個(gè)時(shí)候的我太年輕所以只是理解然而讓我說出個(gè)一二三四,大概我會(huì)想個(gè)好幾天(其實(shí)就是當(dāng)時(shí)學(xué)的不扎實(shí),嗚嗚)。所以這次做WMOS的目的其實(shí)就是在實(shí)現(xiàn)的過程中來深刻理解一些之前學(xué)過或者學(xué)習(xí)沒接觸的東西。這也就是探索式學(xué)習(xí)。

看文檔

我在使用webpack之前,首先看了一下當(dāng)前的版本,這是一定要注意的事。因?yàn)橛行゛pi在不同的版本可能有所差異,在之后的使用的時(shí)候很有可能成為坑點(diǎn)。

而在看完文檔的概念和指南之后,雖然對(duì)如何使用有了大致的了解,可是實(shí)際使用的話總感覺自己沒看一樣,emmmmmm。

不過看過文檔起碼在看別人的webpack配置文件的時(shí)候就可以稍微讀懂了。

你想做什么

看過很多遍文檔(中文)后,發(fā)現(xiàn)自己依然沒有頭緒(撓頭)。突然就想到我到底用webpack做什么?用webpack做什么?做什么?這是很重要的一件事,說三遍。

于是我重新開始,想想我目前到底想要什么功能?

WMOS打算使用原生的js寫,并且使用ES2015。

使用less預(yù)編譯器。

能夠?qū)D片進(jìn)行一些處理。

能夠熱更新

。。。。

貌似目前就只有這些需求,雖然我知道這一定不是全部。但是我認(rèn)為項(xiàng)目是一點(diǎn)一點(diǎn)搭起來的。目前我還沒有達(dá)到那種程度,所以一步一步來。

干貨來了

說了這么久,是為什么?因?yàn)槲医裉煸诖罱╳ebpack環(huán)境的時(shí)候,卡在HtmlWebpackPlugin,好痛苦~~(>_<)~~。

什么是HtmlWebpackPlugin

官網(wǎng)在它的指南里是這么引出的:

在更改了入口文件的時(shí)候,會(huì)生成新的文件,而我們的index.html文件還是引用舊的問卷。這個(gè)時(shí)候就要用HtmlWebpackPlugin

HtmlWebpackPlugin簡化了HTML文件的創(chuàng)建,以便為您的webpack包提供服務(wù)。這對(duì)于在文件名中包含每次會(huì)隨著變異會(huì)發(fā)生變化的哈希的webpack bundle尤其有用。 您可以讓插件為您生成一個(gè)HTML文件,使用lodash模板提供您自己的模板,或使用您自己的loader。·

以上都是官網(wǎng)給出的內(nèi)容。其實(shí)目前我使用之后的感覺就是:可以為我們生產(chǎn)html文件,并且直接把那些生產(chǎn)的bundle文件直接寫入html中。這個(gè)在想要實(shí)現(xiàn)熱更新的時(shí)候是很有用的。最后在通過下面的例子在理解一下HtmlWebpackPlugin

最初的時(shí)候目錄是這樣的:

你會(huì)發(fā)現(xiàn)在dist文件夾下什么都沒有,dist文件夾是我們生產(chǎn)文件的地方,src文件夾是我們的源文件夾。然后看一下我們的webpack配置文件:

使用過webpack的同學(xué)知道,在運(yùn)行webpack之后應(yīng)該生產(chǎn)在dist文件夾里生成main.js,而這個(gè)js文件需要我們手動(dòng)放入html文件中。不過這里通過HtmlWebpackPlugin我們就不用手動(dòng)操作了。讓我們執(zhí)行一下:

原來的index.html:

現(xiàn)在的index.html:

下面來詳細(xì)講一下HtmlWebpackPlugin插件。

安裝
npm install --save-dev html-webpack-plugin
基本用法

該插件會(huì)為您生成一個(gè)HTLM5文件,其中會(huì)包括使用script標(biāo)簽引用的js輸出文件。最進(jìn)本的用法就是將插件直接添加到webpack配置中,如下:

var HtmlWebpackPlugin = require("html-webpack-plugin");

var webpackConfig = {
  entry: "index.js",
  output: {
    path: "dist",
    filename: "index_bundle.js"
  },
  plugins: [new HtmlWebpackPlugin()]
};

這將會(huì)產(chǎn)生一個(gè)包含以下內(nèi)容的文件 dist/index.html:



  
    
    webpack App
  
  
    
  

如果有多個(gè)webpack入口,就會(huì)生成多個(gè)script標(biāo)簽引用這些文件。

如果你有任何CSS assets 在webpack的輸出中(例如,利用ExtractTextPlugin提取CSS),那么這些將被包含在HTML head中的標(biāo)簽內(nèi)。

配置

下面是HtmlWebpackPlugin插件的一些配置選項(xiàng):

title: 生成的html文檔的title標(biāo)簽之間的內(nèi)容。

filename: 生成html文件的名字,默認(rèn)為index.html。你可以使用子目錄的形式,像asset/admin.html是OK的。

template: webpack會(huì)require這個(gè)路徑的文件作為模板。(我就卡這里了,稍后會(huì)詳細(xì)講一下)

inject: 它有四個(gè)值,分別為truehead、"body"、"false",功能是在將所有的資源輸出到template或者templateContent指定的文件里的時(shí)候,當(dāng)inject的值為true或者body的時(shí)候,所有JavaScript資源將放置在body元素的下面;當(dāng)值為head的時(shí)候,將放置在head元素內(nèi)。

favicon: 將給定的favicon路徑下的文件輸出到html文件里。

minify: 通過使用一個(gè)以html-minifier的配置選項(xiàng)作為內(nèi)容的對(duì)象的時(shí)候會(huì)壓縮輸出html文件。使用false你懂得。

hash: 值為true | false。如果為true的時(shí)候添加一個(gè)唯一的webpack編寫的hash值到所有的script文件和css文件。對(duì)于緩存清除很有用。

cache: true | false。如果為true(默認(rèn))則只有當(dāng)文件內(nèi)容改變的時(shí)候,會(huì)生成一個(gè)新的文件。

showErrors: true" | false。如果為true`(默認(rèn)),則錯(cuò)誤信息寫入html頁面。

chunks: Allows you to add only some chunks (e.g. only the unit-test chunk)

chunksSortMode: Allows to control how chunks should be sorted before they are included to the html. Allowed values: "none" | "auto" | "dependency" |"manual" | {function} - default: "auto"

excludeChunks: Allows you to skip some chunks (e.g. don"t add the unit-test chunk)

xhtml: true | false If true render the link tags as self-closing, XHTML compliant. Default is false

生成多個(gè)HTML文件

如果要生成多個(gè)html問卷,只要多聲明幾次就OK了。

{
  entry: "index.js",
  output: {
    path: __dirname + "/dist",
    filename: "index_bundle.js"
  },
  plugins: [
    new HtmlWebpackPlugin(), // Generates default index.html
    new HtmlWebpackPlugin({  // Also generate a test.html
      filename: "test.html",
      template: "src/assets/test.html"
    })
  ]
}
編寫自己的模板

如果它默認(rèn)生成的模板不能滿足我們,我們可以自己去編寫自己的模板。我們可以通過template屬性傳遞我們自己的html文件。html-webpack-plugin將會(huì)自動(dòng)將所有必要的css,js,manifest和favicon文件注入里面。

模板默認(rèn)使用ejs模板。如下方式:

plugins: [
  new HtmlWebpackPlugin({
    title: "Custom template",
    template: "my-index.ejs", // Load a custom template (ejs by default see the FAQ for details)
  })
]


  
    
    <%= htmlWebpackPlugin.options.title %>
  
  
  

如果你打算使用其他的模板,就需要使用對(duì)應(yīng)的loader進(jìn)行解析。如下使用了hbs模板:

module: {
  loaders: [
    { test: /.hbs$/, loader: "handlebars" }
  ]
},
plugins: [
  new HtmlWebpackPlugin({
    title: "Custom template using Handlebars",
    template: "my-index.hbs"
  })
]

注意一點(diǎn)就是如果你使用了.html文件作為模板,那么就會(huì)使用html-loader去解析,所以不要忘記使用html-loader。(我就卡到這里,不過原因并不是這樣。)

注入的對(duì)象

在模板中可以使用一下變量:

htmlWebpackPlugin: 這個(gè)插件的對(duì)象(我理解)

htmlWebpackPlugin.files: webpack的stats對(duì)象的assetsByChunkName
表示。它包含輸入的文件名到bundle文件名,例如:

"htmlWebpackPlugin": {
  "files": {
    "css": [ "main.css" ],
    "js": [ "assets/head_bundle.js", "assets/main_bundle.js"],
    "chunks": {
      "head": {
        "entry": "assets/head_bundle.js",
        "css": [ "main.css" ]
      },
      "main": {
        "entry": "assets/main_bundle.js",
        "css": []
      },
    }
  }
}

htmlWebpackPlugin.options: 轉(zhuǎn)遞給插件的options選項(xiàng),除了插件使用的
選項(xiàng)以外,你可以通過這個(gè)hash列表傳遞任何數(shù)據(jù)給模板。也就是說你在設(shè)置插件選項(xiàng)

的時(shí)候,可以添加一些自己的數(shù)據(jù)。然后可以在模板中通過插件的options來使用。

webpack: webpack的stats對(duì)象

webpackConfigwebpack的配置對(duì)象。

我遇到的坑點(diǎn)

我使用了html文件作為模板,它需要使用html-loader進(jìn)行解析,html-loader支持es6模板的寫法,也就是${}這樣。在寫loader的時(shí)候,我是這樣寫的:

module: {
    rules: [
      {
        test: /.html$/,
        loader:"html-loader"
      }
    ]
},

我們模板是醬紫:




    
    
    
    ${ htmlWebpackPlugin.options.title }


    

WMOS

但是這樣寫之后,它并沒有把title解析掉:




    
    
    
    ${ htmlWebpackPlugin.options.title }


    

WMOS

而將test那部分改為`test: "/.html$/"的時(shí)候,就完美的解析了。

What?我也很懵逼。test的作用是來匹配相應(yīng)的文件。而test的值可以是字符串,正則,函數(shù)等等。看過文檔之后,我也并沒有發(fā)現(xiàn)使用它們會(huì)有什么不同的結(jié)果。

over day

今天就先寫到這里,目前我們遇到了一個(gè)奇葩不過不是重點(diǎn)的問題,所以我們先將它記下來,在之后會(huì)去一一解決這些問題。

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

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

相關(guān)文章

  • webpack進(jìn)階loader

    webpack的loaders是一大特色,也是很重要的一部分。這遍博客我將分類講解一些常用的laodershowImg(https://segmentfault.com/img/remote/1460000005742040); 一、loaders之 預(yù)處理 css-loader 處理css中路徑引用等問題 style-loader 動(dòng)態(tài)把樣式寫入css sass-loader scss編譯器 ...

    qylost 評(píng)論0 收藏0
  • webpack進(jìn)階插件

    摘要:基本環(huán)境搭建就不展開講了一插件篇自動(dòng)補(bǔ)全前綴官方是這樣說的,也就是說它是一個(gè)自動(dòng)檢測(cè)兼容性給各個(gè)瀏覽器加個(gè)內(nèi)核前綴的插件。 上一篇博客講解了webpack環(huán)境的基本,這一篇講解一些更深入的內(nèi)容和開發(fā)技巧。基本環(huán)境搭建就不展開講了showImg(http://static.xiaomo.info/images/webpack.png); 一、插件篇 1. 自動(dòng)補(bǔ)全css3前綴 autop...

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

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

    zhichangterry 評(píng)論0 收藏0
  • 20170622-webpackplugin

    摘要:該插件的作用是為組件分配,通過這個(gè)插件會(huì)分析使用頻率最多的模塊,并未他們分配最小的,越小表示模塊被找到的速度會(huì)更快使用方法用于抽取公共的模塊 extract-text-webpack-plugin extract-text-webpack-plugin主要是為了抽離css樣式,并將樣式打包成css文件 const ExtractTextPlugin = require(extract-...

    Dean 評(píng)論0 收藏0
  • Vue ES6 Jade Scss Webpack Gulp

    摘要:主有前端后端,并加,各一名。本著工欲善其事,必先利其器的理念,一直以來在工作效率這塊,略懷執(zhí)念一個(gè)問題不應(yīng)該被解決兩次。下圖為開發(fā)項(xiàng)目機(jī)制所涉及到的插件工欲善其事,必先利其器,語言,框架皆可以歸結(jié)為器而不當(dāng)僅局限于開發(fā)工具以及機(jī)。 原文鏈接: http://www.jeffjade.com/2016/05/08/106-vue-es6-jade-scss-webpack-gulp/ 一...

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

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

0條評(píng)論

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