1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      關(guān)于webpack2和模塊打包的新手指南(小結(jié))

      webpack已成為現(xiàn)代Web開發(fā)中最重要的工具之一。它是一個用于JavaScript的模塊打包工具,但是它也可以轉(zhuǎn)換所有的前端資源,例如HTML和CSS,甚至是圖片。它可以讓你更好地控制應(yīng)用程序所產(chǎn)生的HTTP請求數(shù)量、允許你使用其他資源的特性(例如Jade、Sass和ES6)。webpack還可以讓你輕松地從npm下載包。

      沙雅網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

      本文主要針對那些剛接觸webpack的同學(xué),將介紹初始設(shè)置和配置、模塊、加載器、插件、代碼分割和熱模塊替換。

      在繼續(xù)學(xué)習(xí)下面的內(nèi)容之前需要確保你的電腦中已經(jīng)安裝了Node.js。

      初始配置

      使用npm初始化一個新項目并安裝webpack:

      mkdir webpack-demo
      cd webpack-demo
      npm init -y
      npm install webpack@beta --save-dev
      mkdir src
      touch index.html src/app.js webpack.config.js

      編寫下面這些文件:

      
      
      
       
        
        Hello webpack
       
       
        
      // src/app.js
      const root = document.querySelector('#root')
      root.innerHTML = `

      Hello webpack.

      `
      // webpack.config.js
      const webpack = require('webpack')
      const path = require('path')
      
      const config = {
       context: path.resolve(__dirname, 'src'),
       entry: './app.js',
       output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js'
       },
       module: {
        rules: [{
         test: /\.js$/,
         include: path.resolve(__dirname, 'src'),
         use: [{
          loader: 'babel-loader',
          options: {
           presets: [
            ['es2015', { modules: false }]
           ]
          }
         }]
        }]
       }
      }
      
      module.exports = config
      

      上面的配置是一個普通的出發(fā)點,它通知webpack將入口文件src/app.js編譯輸出到文件/dist/bundle.js中、使用babel將所有的.js文件從ES2015轉(zhuǎn)換成ES5。

      為了讓它可以轉(zhuǎn)換到ES5格式的JS文件,我們需要安裝三個包:babel-core、webpack加載器babel-loader和預(yù)置babel-preset-es2015。使用{ modules: false }讓Tree Shaking 從打包文件中刪除未使用的導(dǎo)出項(exports)以減少文件大小。

      npm install babel-core babel-loader babel-preset-es2015 --save-dev

      最后,用以下內(nèi)容替換package.json的scripts部分:

      "scripts": {
       "start": "webpack --watch",
       "build": "webpack -p"
      },

      在命令行中運行npm start將以監(jiān)視模式啟動webpack,當(dāng)src目錄中的.js文件更改時,它將重新編譯bundle.js。控制臺中的輸出展示了打包文件的信息,注意打包文件的數(shù)量和大小十分重要。

      關(guān)于webpack2和模塊打包的新手指南(小結(jié))

      現(xiàn)在當(dāng)你在瀏覽器中加載index.html頁面時會看到"Hello webpack."。

      open index.html

      打開dist/bundle.js文件看看webpack都做了哪些事情,頂部是webpack的模塊引導(dǎo)代碼,底部是我們的模塊。到目前為止,你可能對于這個還沒有一個深刻的印象。但是現(xiàn)在你可以開始編寫ES6模塊,webpack將生成適用于所有瀏覽器的打包文件。

      使用Ctrl + C停止webpack,運行npm run build以生產(chǎn)模式編譯我們的bundle.js

      注意,打包文件的大小從2.61 kB減少到了585字節(jié)。再看一下dist/bundle.js文件,你會看到大量難懂的代碼,因為我們使用UglifyJS壓縮了它。這樣的話,我們可以使用更少的代碼達(dá)到與之前一樣的效果。

      模塊

      優(yōu)秀的webpack知道如何使用各種格式的JavaScript模塊,最著名的兩個是:

      • ES2015 import語句
      • CommonJS require()語句

      我們可以通過安裝、導(dǎo)入lodash來測試這些格式的模塊。

      npm install lodash --save
      // src/app.js
      import {groupBy} from 'lodash/collection'
      
      const people = [{
       manager: 'Jen',
       name: 'Bob'
      }, {
       manager: 'Jen',
       name: 'Sue'
      }, {
       manager: 'Bob',
       name: 'Shirley'
      }, {
       manager: 'Bob',
       name: 'Terrence'
      }]
      const managerGroups = groupBy(people, 'manager')
      
      const root = document.querySelector('#root')
      root.innerHTML = `
      ${JSON.stringify(managerGroups, null, 2)}
      `

      運行npm start啟動webpack并刷新index.html,你可以看到一個根據(jù)manager分組的數(shù)組。

      讓我們將這個數(shù)組轉(zhuǎn)移到它自己的模塊people.js中。

      // src/people.js
      const people = [{
       manager: 'Jen',
       name: 'Bob'
      }, {
       manager: 'Jen',
       name: 'Sue'
      }, {
       manager: 'Bob',
       name: 'Shirley'
      }, {
       manager: 'Bob',
       name: 'Terrence'
      }]
      
      export default people
      

      我們可以在app.js中使用相對路徑輕松的導(dǎo)入它。

      // src/app.js
      import {groupBy} from 'lodash/collection'
      import people from './people'
      
      const managerGroups = groupBy(people, 'manager')
      
      const root = document.querySelector('#root')
      root.innerHTML = `
      ${JSON.stringify(managerGroups, null, 2)}
      `

      注意:像lodash/collection這樣沒有相對路徑的導(dǎo)入是導(dǎo)入安裝在/node_modules的模塊,你自己的模塊需要一個類似./people的相對路徑,你可以以此區(qū)分它們。

      加載器

      我們已經(jīng)介紹過,你可以通過配置像babel-loader這樣的加載器來告訴webpack在遇到不同文件類型的導(dǎo)入時該怎么做。你可以將多個加載器組合在一起,應(yīng)用到很多文件轉(zhuǎn)換中。在JS中導(dǎo)入.sass文件是一個非常的例子。

      Sass

      這種轉(zhuǎn)換涉及三個單獨的加載器和node-sass庫:

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

      在配置文件中為.scss文件添加新規(guī)則。

      // webpack.config.js
      rules: [{
       test: /\.scss$/,
       use: [
        'style-loader',
        'css-loader',
        'sass-loader'
       ]
      }, {
       // ...
      }]

      注意: 任何時候更改webpack.config.js中的任意一個加載規(guī)則都需要使用Ctrl + Cnpm start重新啟動構(gòu)建。

      加載器序列以相反的順序進(jìn)行處理:

      • sass-loader 將Sass轉(zhuǎn)換為CSS。
      • css-loader 將CSS解析為JavaScript并解析所有依賴。
      • style-loader將我們的CSS輸出到文檔中的

      以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


      網(wǎng)站欄目:關(guān)于webpack2和模塊打包的新手指南(小結(jié))
      文章分享:http://www.ef60e0e.cn/article/gssjsi.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        泰宁县| 白水县| 闸北区| 巴彦淖尔市| 林甸县| 乡宁县| 沽源县| 晋宁县| 乌鲁木齐县| 石城县| 商南县| 武威市| 中山市| 苏尼特左旗| 宁远县| 长沙县| 黄山市| 介休市| 安岳县| 临江市| 水富县| 墨脱县| 青河县| 靖西县| 徐闻县| 延安市| 潮州市| 韶山市| 土默特左旗| 革吉县| 东兰县| 布尔津县| 梁平县| 抚州市| 洪江市| 额敏县| 高清| 关岭| 望奎县| 石林| 泰安市|