亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

webpack與SPA實踐之管理CSS等資源的方法

 更新時間:2017年12月18日 10:37:52   作者:熊建剛  
本篇文章主要介紹了webpack與SPA實踐之管理CSS等資源的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

上一篇介紹了如何使用webpack搭建一個穩(wěn)定的支持本地服務(wù)、自動刷新、模塊熱替換、使用ES6編寫JavaScript的開發(fā)環(huán)境,本篇主要介紹webpack如何處理HTML應(yīng)用三大元素的另一元素 – CSS及其他諸如圖片、字體文件或者數(shù)據(jù)配置文件等資源。

前言

在學(xué)習(xí)使用webpack時,我們需要明白無論它怎么設(shè)計,它的工作原理、流程是什么,最根本的它處理的還是HTML文檔中的HTML標(biāo)簽、JavaScript、CSS、圖片等資源,而且最終的處理結(jié)果依然必須是一個HTML文檔,包括DOM、JavaScript、CSS,而CSS在文檔中的存在方式,有三種:行內(nèi)樣式,內(nèi)聯(lián)樣式,外鏈樣式,行內(nèi)樣式使用方式早已不推薦,所以webpack處理CSS方式也就兩種:

  1. 內(nèi)聯(lián)樣式: 以<style>標(biāo)簽方式在HTML文檔中嵌入樣式;
  2. 外鏈樣式: 打包生成CSS文件,通過<link>標(biāo)簽引入樣式;

webpack與CSS

我們知道,webpack本質(zhì)是只能處理JavaScript的,而對于其他資源,需要使用加載器和插件將其處理成JavaScript模塊,然后進(jìn)行模塊依賴管理。webpack提供style-loader和css-loader兩個加載器支持我們模塊化CSS,因此可以在其他模塊內(nèi)直接引入。

安裝

npm install --save-dev style-loader css-loader

配置

在webpack配置文件的模塊加載器選項中添加如下配置:

  module: {
    loaders: [
      { test: /\.css$/, loader: "style-loader!css-loader" }
    ]
  }

當(dāng)然為了方便使用引用路徑,還可以配置路徑片段別名:

  alias: {
    styles: path.resolve(__dirname, 'src/styles/')
  }

此時,import 'styles/index.css';等同于使用相對路徑,如import '../src/styles/indx.css';

使用

配置好以后,假如我們在styles目錄下創(chuàng)建了一個index.css文件,現(xiàn)在可以在JavaScript文件中直接引入該CSS: import 'styles/index.css'; 或 require('styles/index.css');

css內(nèi)容如下:

  html, body {
    width: 100%;
    height: 100%;
  }
  .container {
    color: red;
  }

頁面展示如圖:

內(nèi)聯(lián)樣式

前面提到了webpack處理CSS的方式有兩種,第一種是以內(nèi)聯(lián)方式在頁面<head>標(biāo)簽內(nèi)動態(tài)插入<style>內(nèi)聯(lián)樣式,這種方式也是webpack的默認(rèn)處理方式,只需要簡單配置如下加載器:

  {
    test: /\.css$/,
    exclude: /node_modules/,
    loader: 'style-loader!css-loader'
    // or 
    // loaders: ['style-loader', 'css-loader']
  }

WEBPACK加載器解析順序

如上面代碼所示,無論是字符串語法style-loader!css-loader,亦或是數(shù)組語法['style-loader', 'css-loader'] ,webpack解析規(guī)則都是從右至左,依次解析并執(zhí)行加載器處理文件,前一加載器處理的輸出就是下一加載器處理的輸入,直到最后加載器處理完成;此處即webpack先調(diào)用css-loader加載器處理css文件,然后將處理結(jié)果傳遞給style-loader加載器,style-loader接受該輸入繼續(xù)處理。

CSS-LOADER

我們已經(jīng)反復(fù)強(qiáng)調(diào),webpack只能處理JavaScript,所以對于其他諸如css或圖片等資源需要使用加載器將其轉(zhuǎn)換輸出為JavaScript模塊,webpack才能繼續(xù)處理。

css-loader加載器的作用就是支持我們像使用JavaScript模塊一樣在JavaScript文件中引用CSS文件,如require ('./index.css'),所以你可以認(rèn)為其作用是將CSS文件轉(zhuǎn)換成JavaScript模塊,于是我們可以直接通過引入JavaScript模塊的方式直接引用。

參數(shù)

css-loader有兩個常用參數(shù):

  1. modules: {boolean}指定是否使用CSS模塊(如:local和:global設(shè)置局部或全局樣式規(guī)則),默認(rèn)是false,開啟設(shè)置如css-loader?modules;
  2. importLoaders: {number}指定css-loader加載器之前使用的加載器數(shù)量,默認(rèn)是0,設(shè)置如css-loader?importLoaders=1;

STYLE-LOADER

無論webpack怎么處理CSS文件,最終都需要將其輸出到頁面,才能實際使用該CSS規(guī)則,style-loader加載器就是將CSS以內(nèi)聯(lián)方式插入到頁面文檔,即:針對每一個輸入(通過require引入,使用css-loader轉(zhuǎn)換為JavaScript模塊,傳遞給style-loader作為輸入),style-loader在頁面<head>標(biāo)簽內(nèi)插入一個<style>標(biāo)簽,該標(biāo)簽內(nèi)樣式規(guī)則即此輸入內(nèi)容,如下實例:

外鏈樣式

當(dāng)然,我們并不總是希望所有樣式都以內(nèi)聯(lián)方式存在頁面中,很多時候我們也希望通過外鏈方式使用樣式表,特別是樣式規(guī)則較多的時候,webpack開發(fā)者們當(dāng)然考慮了這樣的需求。

webpack提供的style-loader加載器默認(rèn)是以內(nèi)聯(lián)方式將樣式插入文檔,我們需要使用webpack extract-text-webpack-plugin插件以實現(xiàn)輸出單獨(dú)CSS文件。

EXTRACT TEXT PLUGIN

安裝

首先安裝該插件:

npm install --save-dev extract-text-webpack-plugin

配置

然后添加如下配置:

 var ExtractTextPlugin = require('extract-text-webpack-plugin');
  ...
  module: {
    loaders: [
      {
        test: /\.css$/,
        exclude: /node_modules/,
        // 老版本 loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
        loader: ExtractTextPlugin.extract({
          fallback:'style-loader',
          use: 'css-loader'
        })
      }
    ]
  },
  plugins: [
    // 生成獨(dú)立css文件
    new ExtractTextPlugin({
      filename: 'css/[name].css'
    })
  ]

運(yùn)行webpack命令,我們會看到在dist/css/文件夾下生成相應(yīng)的CSS文件。

參數(shù)

filename {String | Function}

Extract Text Plugin為每個入口生成一個CSS文件,所以對于多入口項目需要指定filename參數(shù)[name]或[id]或[contenthash]生成唯一識別文件名;

disable {Boolean}

禁用此插件;

allChunks {Boolean}

allChunks: true;時指定從所有模塊中抽取CSS輸出至單獨(dú)CSS文件,包括異步引入的額外模塊;此插件默認(rèn)是只抽取初始模塊內(nèi)引入的CSS;

extract方法

該方法可以以參數(shù)指定加載器,然后接受該加載器的輸出,進(jìn)行處理。需要在加載器和插件配置中同時聲明相關(guān)配置,才能實現(xiàn)效果;在加載器配置中調(diào)用其extract方法傳入通常以下兩個參數(shù):

1. use: 將CSS轉(zhuǎn)換成模塊的加載器;
2. fallback: 對于不被抽取輸出至單獨(dú)CSS文件的CSS模塊使用的加載器,上例中`style-loader`即說明以內(nèi)聯(lián)方式使用,該加載器通常在`allChunks: false`時處理額外的模塊;

FILENAME與OUTPUT

在上一篇介紹了輸出文件配置output相關(guān)內(nèi)容,其中:

  1. output.path是webpack處理文件后輸出的路徑,對于CSS文件輸出依然適用,即CSS文件也將輸出至該目錄;
  2. output.publicPath是指瀏覽器訪問資源時的相對基礎(chǔ)路徑,規(guī)則是: output.publicPath + output.filename;

你可以看到在本系列文章實例中filename都添加了前綴目錄,如css和scripts,你可能看到很多項目是不添加的,但文件入口較多時建議分類型目錄輸出,而且需要記得在瀏覽器訪問資源時也需要添加該目錄層級。

CSS預(yù)處理器

通常在開發(fā)較復(fù)雜的應(yīng)用時,我們都會選擇一種CSS的強(qiáng)化輔助工具,以更高效,更方便的使用CSS開發(fā)應(yīng)用樣式,這些拓展工具就是所說的CSS預(yù)處理器.

CSS預(yù)處理器(preprocessors)在CSS語法的基礎(chǔ)上增加了變量 (variables)、嵌套 (nested rules)、混合 (mixins)、導(dǎo)入 (inline imports) 等高級功能,令CSS更加強(qiáng)大與優(yōu)雅,有助于更好地組織管理樣式文件,以及更高效地開發(fā)項目。
目前最常見的CSS預(yù)處理器有LESS,SASS,Stylus,個人用過的是前兩種,使用SASS的還是居多。

SASS

安裝

npm install --save-dev sass-loader

安裝sass-loader以后會發(fā)現(xiàn),package.json中多了一個node-sass依賴,這是使用SASS必須的。

配置

然后添加以下配置:

  {
    test: /\.s[ac]ss$/,
    exclude: /node_modules/,
    loader: 'style-loader!css-loader!sass-loader'
  }

如上,配置中傳遞了三個加載器,相對于前文處理CSS文件的加載器,在最后面多了一個sass-loader,首先加載sass-loader加載器處理SASS文件成CSS代碼,然后繼續(xù)按照前文描述流程處理CSS文件。

EXTRACT TEXT PLUGIN

和處理CSS文件一樣,上述配置最終通過style-loader將轉(zhuǎn)換后的CSS代碼內(nèi)聯(lián)到頁面,我們需要使用Extract Text Plugin生成單獨(dú)CSS文件,以外鏈方式引用:

  {
     test: /\.s[ac]ss$/,
     exclude: /node_modules/,
     loader: ExtractTextPlugin.extract({
     fallback:'style-loader',
       use: [
         'css-loader',
         'sass-loader'
       ]
     })
  }

  ...

  // 生成獨(dú)立css文件
    new ExtractTextPlugin({
      filename: 'css/[name].css'
    })

CSS后處理器

前面講到CSS預(yù)處理器,如SASS,他們提供對CSS的拓展,包括語法拓展,高級特性拓展,如嵌套,變量,自動處理添加屬性前綴等,使得我們可以以其定義的語法與模板方式更高效的編寫CSS,然而這些預(yù)處理器都是另外對CSS進(jìn)行拓展,各自定義了語法和模板,其處理流程是對代碼進(jìn)行解析處理,然后轉(zhuǎn)換成CSS代碼。

不同預(yù)處理器有各自的定義和規(guī)范,假如你需要從LESS轉(zhuǎn)到SASS,源代碼轉(zhuǎn)換成本和學(xué)習(xí)成本頗高,而接下來要介紹的CSS后處理器并沒有這個問題。

不同于預(yù)處理器預(yù)定義好一個語法和模板,然后對按照該語法和模板編寫的代碼進(jìn)行處理轉(zhuǎn)換成CSS,其輸入是自定義語法文件,輸出是CSS代碼;后處理器(postprocessor)是對原生CSS代碼根據(jù)配置進(jìn)行處理,其輸入輸出依然是CSS代碼。

POSTCSS

現(xiàn)在最受歡迎的CSS后處理器,就是postcss:

PostCSS is a tool for transforming styles with JS plugins. These plugins can lint your CSS, support variables and mixins, transpile future CSS syntax, inline images, and more.

PostCSS是一個使用Js插件轉(zhuǎn)換樣式的根據(jù),插件支持拓展CSS,如變量,混合,CSS屬性語法兼容,行內(nèi)圖片等等功能。

特性

不同于SASS提供一個功能性拓展工具,postcss更多的是提供一個CSS高效開發(fā)工具解決方式,其本身只包含CSS解析器只能將CSS處理成一棵抽象語法樹(AST),同時提供一個豐富的CSS節(jié)點(diǎn)樹API,可以對語法樹進(jìn)行操作,另外它有一個高拓展性的插件系統(tǒng)支持我們通過引入不同插件對CSS進(jìn)行處理,一個插件的輸出還可以是下一個插件的輸入,更值得一提的是,這些插件都是JavaScript插件,前端開發(fā)者們很容易就能根據(jù)項目需求定制自己的插件,所以可以總結(jié)幾點(diǎn)一以下特性:

  1. postcss只處理CSS,概念簡潔;
  2. 提供高拓展性的插件系統(tǒng)支持按需引入不同插件,實現(xiàn)不同處理;
  3. 使用JavaScript插件,開發(fā)者可以很方便定制項目插件;
  4. 提供CSS節(jié)點(diǎn)樹API,可以高效的進(jìn)行CSS處理;

安裝

在webpack中使用,需要先安裝對應(yīng)加載器:

npm install --save-dev postcss-loader

插件

postcss目前有200+插件,足夠滿足絕大部分項目開發(fā)需求,可以查看postcss插件,我們介紹幾個主要使用的插件。

Autoprefixer

回顧一下在預(yù)處理器中,如果我們需要為CSS代碼添加屬性前綴,需要這么實現(xiàn)呢?對于Sass,我們通常使用mixin,即混合宏,處理CSS屬性前綴,如:

  // 定義
  @mixin prefix-animation($animation-name){
    animation:$animation-name;
    -webkit-animation:$animation-name;
  }

  // 使用
  body{
    @include prefix-animation(loading .5s linear infinite);
  }

如上,我們需要按照定義的語法和模板:先定義一個mixin,然后通過@include方式使用,最后才能輸出添加前綴的CSS代碼,當(dāng)代碼越來越多時,我們需要定義的mixin也會越來越多,而且不同預(yù)處理器定義的語法和模板都有差異,學(xué)習(xí)成本、轉(zhuǎn)換成本都很可能令人難以接受。

那么postcss插件怎么處理的呢?postcss提供了Autoprefixer插件處理CSS屬性前綴:

Autoprefixer插件基于Can I Use的數(shù)據(jù),對CSS規(guī)則進(jìn)行前綴處理。

安裝

首先還是要安裝Autoprefixer:

npm install --save-dev autoprefixer

配置

添加如下配置:

  module: {
    loaders: [
      {
        test: /\.css$/,
        exclude: /node_modules/,
        loaders: [
          'style-loader',
          'css-loader',
          { 
            loader: 'postcss-loader', 
            options: {
              plugins: [
                require('autoprefixer')({
                  browsers: ['last 2 versions']
                })
              ] 
            } 
          }
        ]
      }
    ]
  }

如上,我們知道postcss是一個樣式開發(fā)解決方案,其特定功能需要引入插件實現(xiàn),上例中在指定postcss-loader加載器時為其設(shè)置了插件配置autoprefixer;當(dāng)然webpack還支持直接設(shè)置一個postcss配置文件,然后在項目根目錄創(chuàng)建postcss.config.js配置文件,內(nèi)容格式如下:

  module.exports = {
    plugins: [
      require('autoprefixer')({
        browsers: ['last 2 versions']
      })
      // or just require('autoprefixer')
    ]
  }

使用autoprefixer插件時可選傳入browsers參數(shù),可以設(shè)置添加前綴的適配范圍,詳細(xì)可查閱browsers配置說明。

混合使用CSS預(yù)處理器與后處理器 – PreCSS

也許你迫不及待想在項目中引入postcss,又希望能繼續(xù)使用CSS預(yù)處理器語法,而且需要保證以前按照某預(yù)處理器預(yù)定語法和模板(如SASS)編寫的源代碼繼續(xù)穩(wěn)定使用,不需要太多的遷移和學(xué)習(xí)成本,可以做到嗎?當(dāng)然可以,可以使用預(yù)處理器PreCSS插件包,另外我們需要安裝一個postcss的scss解析器,因為postcss默認(rèn)只包含一個CSS解析器,postcss配置文件更新如下:

  module.exports = {
    parser: require('postcss-scss'),
    plugins: [
      require('autoprefixer')({
        browsers: ['last 2 versions']
      }),
      require('precss')
    ]
  }

webpack配置文件更新配置:

  modules: {
    loaders: [
      {
        test: /\.s?[ac]ss$/,
        exclude: /node_modules/,
        // or 內(nèi)聯(lián)方式 loader: 'style-loader!css-loader!postcss-loader'
        loader: ExtractTextPlugin.extract({
          fallback:'style-loader',
          use: [
            'css-loader',
            'postcss-loader'
          ]
        })
       }
    ]
  }

可以看到文件匹配規(guī)則,修改為/\.s?[ac]ss$/,可以匹配包括.sass, .scss, .css樣式文件;在css-loader加載器之前添加了postcss-loader加載器(webpack加載器解析順序為從右至左)。

當(dāng)然你可以不使用precss,依然使用sass-loader,則只需要修改配置:

loader: 'style-loader!css-loader!postcss-loader!sass-loader'

對于如下SCSS代碼:

  $column: 200px;
  .menu {
    display: flex;
    width: calc(4 * $column);
  }

轉(zhuǎn)換生成如下CSS代碼:

  .menu {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; 
    width: calc(4 * 200px);
  }

處理圖片與字體文件

對于一個應(yīng)用而言,除了需要開發(fā)HTML、CSS、JavaScript,通常還好使用到圖片,字體文件,配置文件等諸多資源,那么前端工程化流程也就必然需要對這些資源進(jìn)行處理與優(yōu)化,最典型的說處理圖片和字體文件。

在Grunt或Gulp中,我們對圖片和字體文件的處理通常是將其從源目錄壓縮優(yōu)化處理后輸出至輸出目錄,通常是以文件目錄整體進(jìn)行處理,每次構(gòu)建時,對所有資源,包括未使用的圖片均進(jìn)行處理,效率是有局限的;而webpack中一切資源文件都可以處理成模塊,然后在編譯時管理模塊依賴,可以做到只處理存在依賴的資源(即,使用了的資源)。

圖片與字體

當(dāng)我們在Js模塊中引入CSS文件時,其中樣式規(guī)則中的背景圖片,字體文件如何處理呢?webpack只能管理模塊化的東西,需要將其模塊化,然后使用webpack管理依賴,webpack提供了file-loader加載器:

File Loader

Instructs webpack to emit the required object as file and to return its public url.

通知webpack將引入的對象輸出為文件并返回其公開資源路徑。

配置

  module: {
    loaders: [
      {
        test: /\.(png|svg|jpe?g|gif)$/,
        loader: [
          'file-loader'
        ]
      }
    ]
  }

說明

當(dāng)我們在js文件中import Image from '../images/test.png'或在CSS文件中url('../images/test.png')時,file-loader將處理該圖片并在output.path目錄下輸出文件,然后將../images/test.png路徑替換成該輸出文件路徑。

注,對于html中引用的圖片,需要使用[html-loader]加載器處理(http://npm.taobao.org/package/html-loader)。

參數(shù)

emitFile: 是否輸出文件;

name: 指定輸出文件的文件名,有幾個可用內(nèi)置變量:

  1. [name]: 引用資源的名稱;
  2. [path]: 引用資源的相對路徑;
  3. [ext]: 資源拓展名;
  4. [hash]: 資源內(nèi)容的hash值,默認(rèn)使用md5算法計算得到,可以指定長度值,如[hash:7]表示返回hash值前7個字符;
  5. [hashType:hash:digestType:length]: 指定hash值計算算法類型和摘要類型,及摘要長度,如sha512:hash:base64:7表示使用sha512加密算法計算hash值并且返回7個字符的base64編碼字符

實例

在配置時可以指定參數(shù):file-loader?name=[name].[ext]?[hash:8]或者以配置對象方式:

  {
    test: /\.(png|svg|jpe?g|gif)$/,
    loaders: [
      // 'file-loader?name=[path][name].[ext]?[hash:8]'
      {
        loader: 'file-loader',
        query: {
          name: '[path][name].[ext]?[hash:8]'
        }
      }
    ]
  }

對于CSS源代碼:

  .wrapper {
    font-size: 18px;
    background: url('../images/test.png') no-repeat 0 0;
  }

輸出CSS代碼如下:

  .wrapper {
    font-size: 18px;
    background: url(assets/images/test.png?59427321) no-repeat 0 0;
  }

assets為output.publicPath指定值,images/test.png?59427321為配置文件中指定的name模板,在output.path目錄下輸出images/test.png,區(qū)別是,不會攜帶?后的參數(shù)。

另外,你也可以在js模板中這樣使用:

<img src={imgSrc} />
 ...
import imgSrc from 'path/xxx.png';

Url Loader

你可能會發(fā)現(xiàn)前面并沒有安裝file-loader,因為有更好用的加載器url-loader,url-loader加載器是file-loader的升級版,他們唯一的不同之處在于:

url-loader可以通過limit參數(shù)指定一個尺寸值,加載器會對小于該值的資源處理返回一個Data URL,以base64的方式嵌入HTML或CSS,如url-loader?limit=65000;對于大于該尺寸的資源將使用file-loader處理并且傳遞所有參數(shù)。

mimetype

還可以設(shè)置mimetype對處理文件進(jìn)行過濾,如url-loader?mimetype=image/png將只處理png類型的資源。

安裝

npm install --save-dev url-loader

配置

該加載器對于圖片和字體文件資源都適用:

  {
     test: /\.(png|svg|jpe?g|gif)$/,
     loaders: [
       // 'url-loader?name=[path][name].[ext]?[hash:8]'
       {
         loader: 'url-loader',
         query: {
           limit: 6000,
           name: '[path][name].[ext]?[hash:8]'
         }
       }
     ]
  }, {
     test: /\.(woff|woff2|eot|ttf|otf)$/,
     loaders: [{
       loader: 'url-loader',
       query: {
         limit: 10000,
         name: '[path][name].[ext]?[hash:8]'
       }
     }]
  }

資源優(yōu)化

完成以上配置后,已經(jīng)可以在項目中很方便的引用各自資源了,但是通常我們還需要對圖片字體等文件進(jìn)行壓縮優(yōu)化處理,如Grunt中使用的imagemin插件一樣壓縮資源,webpack則提供了相關(guān)加載器img-loader。

安裝

npm install --save-dev img-loader

配置

  {
    test: /\.(jpe?g|png|gif|svg)$/i,
    loaders: [
      'url-loader?name=[path][name].[ext]?[hash:8]',
      {
        loader: 'img-loader',
        options: {
          // 根據(jù)環(huán)境判斷是否啟用資源壓縮
          enabled: process.env.NODE_ENV === 'production', 
          gifsicle: {
            interlaced: false // 替換使用漸進(jìn)式渲染
          },
          mozjpeg: {
            progressive: true, // 創(chuàng)建基準(zhǔn)jpeg文件
          },
          optipng: {
            optimizationLevel: 4, // 優(yōu)化級別,0-7,值越大,壓縮越多
          }, 
          pngquant: {
            quality: '75-90', // 壓縮質(zhì)量,0-100,值越高,質(zhì)量越高
            speed: 3 // 執(zhí)行速度,0-10,速度過高質(zhì)量受損,不建議過高
          },
          svgo: {
            plugins: [
              { removeTitle: true }, // 去除標(biāo)題信息
              { convertPathData: false } // 轉(zhuǎn)換路徑為更短的相對或決定路徑
            ]
          }
        }
      }
    ]
  }

以上為常見使用配置,更多詳細(xì)配置信息請查看對應(yīng)說明imagemin文檔,特別注意的是上面使用了process.env.NODE_ENV當(dāng)前環(huán)境變量,只有在生產(chǎn)環(huán)境啟用圖片壓縮,因為壓縮過程比較比較耗時,可能會降低開發(fā)、調(diào)試效率。

數(shù)據(jù)資源

對于數(shù)據(jù)類型文件資源,webpack內(nèi)置支持加載解析.json文件,而其他類型則需要安裝配置相應(yīng)加載器,如.xml文件,需要安裝并配置xml-loader。

資源管理的思考

在傳統(tǒng)或稍早一點(diǎn)的應(yīng)用中,我們通常會將所有的圖片,字體等資源放在一個基礎(chǔ)目錄下,如assets/或images,但是對于那些在多項目間重復(fù)的插件代碼或資源來說,每一次遷移,我們都得在一大堆圖片,字體資源里尋找出我們需要遷移的資源,這對代碼可重用和其獨(dú)立性有一定限制,而且與現(xiàn)在提倡的組件化開發(fā)模式也不相符。

webpack對于資源的處理方式給組件化開發(fā)提供了很大便利,使得我們以組件為單位,可以在某一組件目錄下存放所有相關(guān)的js,css,圖片,字體等資源文件;組件的遷移公用成本很低。不過組件化開發(fā)并不是說不需要資源目錄了,一些公用的資源依然放在項目的基礎(chǔ)目錄下。

說明

終于可以松口氣,對于webpack管理CSS、圖片、字體、數(shù)據(jù)資源的實踐基本總結(jié)完成,其實感覺要介紹的還有很多,但是要盡量保證文章思路清晰,語句流暢,而且篇幅不能太長,水平有限,花費(fèi)較多時間經(jīng)歷,希望能對讀者有所幫助,后續(xù)篇章也會繼續(xù)穿插介紹,力爭本系列能較完整、較清晰地描述如何使用webpack開發(fā)SPA應(yīng)用。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 常用的js方法合集

    常用的js方法合集

    本文主要介紹了常用的js方法的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 本地對象Array的原型擴(kuò)展實現(xiàn)代碼

    本地對象Array的原型擴(kuò)展實現(xiàn)代碼

    該擴(kuò)展方法目的為刪除數(shù)組中的重復(fù)項,并返回一個包含所有重復(fù)條目的新數(shù)組;
    2010-12-12
  • 簡單談?wù)凧S數(shù)組中的indexOf方法

    簡單談?wù)凧S數(shù)組中的indexOf方法

    最近在工作中遇到一個小問題,這篇文章代碼我會簡化成小例子展示給大家。給大家詳細(xì)的介紹JS數(shù)組中的indexOf方法,用心看到最后會有收獲哈,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • JAVA四種基本排序方法實例總結(jié)

    JAVA四種基本排序方法實例總結(jié)

    這篇文章主要介紹了JAVA四種基本排序方法,較為詳細(xì)的總結(jié)分析了插入法、冒泡法、選擇法及Shell排序等四種常用的排序技巧,非常具有實用價值,需要的朋友可以參考下
    2015-07-07
  • 不同瀏覽器的怪癖小結(jié)

    不同瀏覽器的怪癖小結(jié)

    收集不同瀏覽器的怪癖,對于大家以后的開發(fā)與兼容性問題,有所幫助。
    2010-07-07
  • js + css實現(xiàn)標(biāo)簽內(nèi)容切換功能(實例講解)

    js + css實現(xiàn)標(biāo)簽內(nèi)容切換功能(實例講解)

    下面小編就為大家?guī)硪黄猨s + css實現(xiàn)標(biāo)簽內(nèi)容切換功能(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 微信小程序vant?輸入框問題處理方案

    微信小程序vant?輸入框問題處理方案

    這篇文章主要介紹了微信小程序vant輸入框問題,本文給大家分享完美解決方案,結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • JavaScript異步編程:異步數(shù)據(jù)收集的具體方法

    JavaScript異步編程:異步數(shù)據(jù)收集的具體方法

    我們先嘗試在不借助任何工具函數(shù)的情況下來解決這個問題。筆者能想到的最簡單的方法是:因前一個readFile的回調(diào)運(yùn)行下一個readFile,同時跟蹤記錄迄今已觸發(fā)的回調(diào)次數(shù),并最終顯示輸出。下面是筆者的實現(xiàn)結(jié)果。
    2013-08-08
  • JavaScript模板引擎實現(xiàn)原理實例詳解

    JavaScript模板引擎實現(xiàn)原理實例詳解

    這篇文章主要介紹了JavaScript模板引擎實現(xiàn)原理,結(jié)合實例形式詳細(xì)分析了JavaScript模板引擎原理、定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-12-12
  • JS中遞歸函數(shù)

    JS中遞歸函數(shù)

    編程語言中,函數(shù)Func(Type a,……)直接或間接調(diào)用函數(shù)本身,則該函數(shù)稱為遞歸函數(shù)。遞歸函數(shù)不能定義為內(nèi)聯(lián)函數(shù)。這篇文章主要介紹了JS中遞歸函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-06-06

最新評論