<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Webpack快速入門

      什么是Webpack

      顧名思義它是一個(gè)前端打包工具,通過給定的入口文件自動(dòng)梳理所有依賴資源(包括css、圖片、js等),并按照配置的規(guī)則進(jìn)行一系列處理(轉(zhuǎn)es5、壓縮等),打包生成適合現(xiàn)代生產(chǎn)環(huán)境要求的文件。同時(shí)也借此豎起技術(shù)壁壘,防止后端改代碼[滑稽]。

      npm基本操作

      現(xiàn)今前端體系構(gòu)建在node之上,npm是node的包管理器。webpack、babel等只是工具包,都通過npm安裝。

      初始化新項(xiàng)目
      npm init
      全局安裝依賴包PACKAGE,不屬于具體哪個(gè)項(xiàng)目
      npm install --global PACKAGE
      安裝運(yùn)行時(shí)依賴包PACKAGE,會(huì)打包至最終生成文件
      npm install --save PACKAGE
      安裝開發(fā)時(shí)依賴包PACKAGE,不會(huì)出現(xiàn)在生成文件中。webpack就屬于開發(fā)時(shí)用來打包文件,在運(yùn)行時(shí)就不需要它了。
      npm install --save-dev PACKAGE
      執(zhí)行命令,具體命令配置在package.json中
      npm run COMMAND
      同時(shí)以上安裝依賴命令也有簡(jiǎn)寫模式
      npm i -g PACKAGE
      npm i -S PACKAGE
      npm i -D PACKAGE

      編寫源碼

      創(chuàng)建并進(jìn)入項(xiàng)目文件夾

      mkdir packme
      cd packme
      

      初始化項(xiàng)目

      npm init
      //之后根據(jù)提示輸入或默認(rèn)即可。
      

      創(chuàng)建目錄app存放源文件

      mkdir app
      

      編寫源代碼

      //Anim.js
      class Anim {
          constructor(name = 'unnamed') {
              this.name = name;
          }
      
          speak() {
              return `hey, i am ${this.name}`;
          }
      }
      
      export default Anim;
      

       

      //Sheep.js
      import Anim from './Anim.js'
      class Sheep extends Anim {
          constructor(name, age) {
              super(name);
              this.age = age;
          }
      }
      
      export default Sheep;
      

       

      //index.js
      import Sheep from './Sheep.js';
      import base from './base.css';
      import index from './index.css';
      
      let sheep = new Sheep('doly', 1);
      let target = document.getElementById('logs');
      target.innerHTML = sheep.speak();
      

       

      /*base.css*/
      html,
      body {
          padding: 0;
          margin: 0;
          height: 100%;
      }
      

       

      /*index.css*/
      #logs {
          border: 1px solid #ccc;
          height: 80px;
          overflow: auto;
      } 

       

      <!-- index.tpl.html -->
      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>Document</title>
      </head>
      
      <body>
          <div id="logs"></div>
      </body>
      
      </html>
      

      整體項(xiàng)目目錄如圖所示

      構(gòu)建目標(biāo)

      源碼編寫好了,梳理一下我們的構(gòu)建目標(biāo)。

      js使用了es6,需要轉(zhuǎn)換成es5
      js合并到一個(gè)文件
      壓縮js
      css合并到一個(gè)文件
      壓縮css

      開始構(gòu)建

      安裝依賴包

      //webpack 負(fù)責(zé)整個(gè)流程
      npm i -D webpack
      //babel 負(fù)責(zé)es6轉(zhuǎn)換
      npm i -D babel-core babel-cli babel-loader babel-preset-es2015
      //壓縮js
      npm i -D terser-webpack-plugin
      //抽取處理過的css到單獨(dú)文件(默認(rèn)css會(huì)被當(dāng)作模塊引入js中)
      npm i -D mini-css-extract-plugin
      //壓縮css
      npm i -D optimize-css-assets-webpack-plugin
      //將打包后的js、css插入指定html
      npm i -D html-webpack-plugin

      創(chuàng)建webpack配置文件

      //webpack.config.js
      //配置文件本身是js,它交給node執(zhí)行。所以可以使用模塊語法、特殊變量等特性。
      
      //聲明引入插件
      const HtmlWebpackPlugin = require('html-webpack-plugin');
      const MiniCssExtractPlugin = require('mini-css-extract-plugin');
      const TerserJsPlugin = require('terser-webpack-plugin');
      const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
      
      module.exports = {
          mode: 'production',//production默認(rèn)會(huì)壓縮代碼,development則不會(huì)。
          devtool: 'cheap-module-source-map',//控制生成sourceMap的方式
          entry: __dirname + '/app/index.js',//入口文件,多個(gè)入口可以對(duì)象kv方式傳入
          output: {
              path: __dirname + '/build',
              filename: 'bundle-[contenthash:8].js'
          },
          optimization: {
              minimizer: [ //配置js、css壓縮器
                  new TerserJsPlugin({
                      cache: true,
                      parallel: true,
                      sourceMap: true
                  }),
                  new OptimizeCssAssetsPlugin()
              ]
          },
          module: {//配置不同文件的處理規(guī)則,
              rules: [{
                      test: /\.js$/,
                      exclude: /node_modules/,
                      loader: 'babel-loader',
                      query: {//指定babel使用的參數(shù)
                          presets: ['es2015']
                      }
                  },
                  {
                      test: /\.css$/,
                      use: [//多個(gè)處理器從后往前調(diào)用,先預(yù)處理好css再抽取到文件
                          MiniCssExtractPlugin.loader,
                          'css-loader'
                      ]
                  }
              ]
          },
          plugins: [//配置處理插件
              new HtmlWebpackPlugin({//根據(jù)指定模板生成html,包含打包的后js、css
                  template: __dirname + '/app/index.tpl.html',
                  minify: {
                      minimize: true,
                      collapseWhitespace: true,
                      minifyCSS: true,
                      minifyJS: true
                  }
              }),
              new MiniCssExtractPlugin({//合并的css文件配置
                  filename: 'style-[contenthash:8].css',
                  ignoreOrder: false
              })
          ],
          devServer: {//開發(fā)服務(wù)器,便于瀏覽器測(cè)試訪問
              contentBase: './build',
              port: 8090,
              historyApiFallback: true,
              inline: true
          }
      }
      

      添加構(gòu)建命令

      //package.json
      //修改scripts配置,加入相關(guān)命令
          "scripts": {
              "build": "webpack",
              "dev": "webpack-dev-server"
          },
      

      執(zhí)行構(gòu)建

      //開啟本地服務(wù)器,只用一次
      npm run dev
      //執(zhí)行webpack構(gòu)建
      npm run build  

      構(gòu)建結(jié)束,在build目錄下生成新文件

       

       

      posted @ 2019-08-29 15:13  超軟毛毛蟲  閱讀(590)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲av成人网人人蜜臀| 极品少妇无套内射视频| 亚洲の无码国产の无码步美| 亚洲av激情一区二区三区| 亚洲熟妇自偷自拍另欧美| 天堂mv在线mv免费mv香蕉| 国产在线乱子伦一区二区| 麻豆国产成人AV在线播放| 免费观看性行为视频的网站| 无码乱人伦一区二区亚洲| 久久国产国内精品国语对白| 国产成人啪精品午夜网站| 四虎永久在线精品免费播放| 色偷一区国产精品| 国产精品v片在线观看不卡| 又大又粗欧美黑人aaaaa片| 色悠悠久久精品综合视频| 国产日韩入口一区二区| 垫江县| 少妇爽到呻吟的视频| 女人色熟女乱| 17岁日本免费bd完整版观看| 91精品国产综合蜜臀蜜臀| 欧美人与动牲交A免费观看| 最新国产AV最新国产在钱| 亚洲少妇人妻无码视频| 免费大黄网站在线观看| 福利一区二区视频在线| 色综合五月伊人六月丁香| 一区二区三区放荡人妻| 人人爽人人爽人人片a免费| 国产精品伦人一久二久三久| 99久久婷婷国产综合精品青草漫画| 久久久久久亚洲精品成人 | 天堂影院一区二区三区四区| 亚洲国产99精品国自产拍| 日本黄页网站免费观看| 成人久久精品国产亚洲av| 久久中文字幕日韩无码视频| 亚洲综合伊人久久大杳蕉| 国产精品SM捆绑调教视频|