1. 程式人生 > 其它 >總結Vue第三天:模組化和webpack模組化打包:

總結Vue第三天:模組化和webpack模組化打包:

總結Vue第三天:模組化和webpack模組化打包:

一、❀ 模組化 [匯入import-----匯出export]

1、為什麼需要模組化?

JavaScript 發展初期,程式碼簡單地堆積在一起,只要能順利地從上往下一次執行即可。但隨著網站越來越複雜,造成了很多問題:全域性變數衝突、函式命名衝突、引入js檔案順序等等

2、模組化規範:

1)模組化規範:CommonJSAMDCMD,還有ES6的Modules

2CommonJS 匯出 module.exports = 匯出{什麼東西} 匯入 require(什麼東西)

3ES6的Modules:匯出 ---à模組化,引入type=”module”----

à匯入

export {什麼東西}, 可以定義的時候直接export ,也可以最後放在一個物件裡一起export

import {什麼東西} from 哪裡通過一個物件(有匯出對應的變數、函式名等等)import,也可以通過一個 * as取別名 全部匯入。

二、webpack模組化打包:

■ webpack目錄:

(1)webpack是什麼?

(2)webpack的安裝

(3)webpack目錄結構

(4)webpack模組打包js的配置

(5)loader的使用

(6)webapck中配置Vue 和Vue 元件化開發引入

(7)plugin的使用

(8)搭建本地伺服器

(9)將開發與生產時需要的配置的分離:

1webpack是什麼?

JavaScript應用的靜態模組打包工具。

webpack更加強調模組化開發管理,而檔案壓縮合並、預處理等功能,是他附帶的功能。

2、 webpack的安裝:

• webpack 正常執行是依賴node環境,node 需要安裝管理工具npm,使用NPM來安裝一些開發過程中依賴包.

(1)安裝webpack首先需要安裝Node.js,Node.js自帶了軟體包管理工具npm。【安裝nodejs:

https://www.cnblogs.com/shan333/p/15726428.html

(2)檢視自己的node版本,判斷是否安裝成功:

  node -v

(3)安裝全域性的webpack(這裡我先指定版本號3.6.0,因為vue cli2依賴該版本):

npm install [email protected] -g

//常看是否安裝成功:
webpack -v

(4)區域性安裝webpack【每個專案使用的webpack版本可能不同】(--save-dev是開發時依賴,專案打包後不需要繼續使用)

cd 對應目錄
npm install webpack@3.6.0 --save-dev

3、webpack專案結構

▷ src 原始碼檔案(主要是jscss等等)

▷ dist 打包檔案

package.json npm包管理的檔案(通過npm init 生成,方便後邊使用node的屬性、方法等)

html檔案

4、webpack模組打包js的配置 (webpack的核心功能)

(1)打包指令:webpack 入口路徑 出口路徑

例如: webpack ./src/main.js ./dist/bundle.js 

使用:html引入打包後的js檔案:

<script type="text/javascript" src="dist/bundle.js"></script>

每次使用webpack的命令都需要寫上入口和出口作為引數,就非常麻煩

(2)簡化一下打包指令為: webpack

1)自己建立一個webpack.config.js檔案,通過webpack.config.js配置檔案封裝入口、出口路徑
2)模組化匯出入口和出口:

(3)通過指令碼設定打包命令,實現通過指令碼區域性打包(針對當前專案)使用指令 npm run build 代替 webpack指令實現打包(在package.json 中新增:)

"scripts": {
  "build": "webpack"
},

5、loader的使用 (webpack的擴充套件功能,需要安裝loader)

~~~~~~~~~~~安裝和在webpack.config.js檔案進行配置。

不安裝擴充套件器,webpack只能模組化打包js檔案

css、圖片,將ES6轉成ES5程式碼,將TypeScript轉成ES5程式碼,將scssless轉成css,將.jsx.vue檔案轉成js檔案等也是需要模組化打包。

(1)模組化打包css、less、圖片,將ES6 語法轉化成ES5,將.vue轉化成 .js

■ loader使用過程:

步驟一:通過npm安裝需要使用的loader

步驟二:在webpack.config.js中的modules關鍵字下進行配置

注意:去webpack官網找安裝命令和配置程式碼

● css 安裝:css-loader style-loader

less 安裝:less-loader

圖片安裝:url-loader

ES6 轉成ES5 安裝:babel-loader

.vue 檔案轉化成 .js 檔案安裝:vue-loader vue-template-compiler

6、 webapck中配置Vue和Vue元件化開發引入:

(1)webpack模組化vue~引入vue.js

步驟一:通過npm安裝Vue : npm install vue --save

步驟二:在webpack.config.js中新增上 resolve(Vue runtime-compiler版本)

注意:去vue官網找安裝命令和配置程式碼

(2)Vue元件化開發引入:

1) 需要安裝:安裝vue-loader、 vue-template-compiler和修改webpack.config.js的配置檔案
2)Vue元件化開發引入的好處:

對比cpn元件(js檔案)和cpn元件(Vue檔案),顯然Vue檔案的結構更加清晰

3)程式碼對比:
js檔案的Vue元件【可以看到模板template,屬於html的,跟Vue(js)混在一起】
//將模板以預設(匿名)物件的方式匯出
export default{
  template: `
    <div>
    <button @click="btnClick">點w</button>
    <input type="text" />
    <h1>{{message}}</h1>
    </div>
  `,
  data(){
    return {
      message: '配置Vue啦~'
    }
  },
  methods: {
    btnClick(){
      console.log('感謝你點我哈~');
    }
  }
}
② Vue檔案的Vue元件【html、css、js程式碼分離,結構清晰】
<template>
  <div>
    <button class="btnColor" @click="btnClick">小兒子</button>
    <h5>{{message}}</h5>
  </div>
</template>

<script>
export default {
  name: "cpn",
  data(){
    return {
      message: '配置Vue啦~'
    }
  },
  methods: {
    btnClick(){
      console.log('感謝你點我哈~');
    }
  }
}
</script>

<style scoped>
.btnColor{
  background-color: greenyellow;
}
</style>

7、plugin的使用

(1)loader和plugin區別:

loader主要用於轉換某些型別的模組,它是一個轉換器

plugin外掛,它是對webpack本身的擴充套件,是一個擴充套件器

(2)plugin的使用過程:

步驟一:通過npm安裝需要使用的plugins (某些webpack已經內建的外掛不需要安裝)

步驟二:在webpack.config.js中的plugins中配置外掛。

(3)各種外掛介紹:

webpack的外掛~版權外掛BannerPlugin (屬於webpack自帶的外掛)

要使用到webpack物件,記得先匯入,然後new webpack.BannerPlugin( );

webpack的外掛~打包html外掛 HtmlWebpackPlugin外掛

安裝:html-webpack-plugin

要使用到HtmlWebpackPlugin物件,記得先匯入,然後new HtmlWebpackPlugin (傳入一個物件,引數有template );

□ 這裡的template表示根據什麼模板來生成index.html。

□ 注意:HtmlWebpackPlugin 外掛,會自動生成script

js程式碼的壓縮外掛~uglifyjs-webpack-plugin (專案要釋出時才需要)

安裝:uglifyjs-webpack-plugin

要使用到UglifyjsWebpackPlugin物件,記得先匯入,然後new UglifyjsWebpackPlugin( )

8、搭建本地伺服器

(1)webpack提供了一個可以選的本地開發伺服器,基於node.js 搭建,(內部使用express),可以實現我們想要的效果:讓瀏覽器自動重新整理顯示我們修改後的結果

(2)搭建本地伺服器步驟:

步驟一:通過npm安裝開發伺服器webpack-dev-server

步驟二:在webpack.config.js中的devserver中配置屬性:

• contentBase:為哪一個資料夾提供本地服務,預設是根資料夾,我們這裡要填寫./dist

• inline:頁面實時重新整理

9、將開發與生產時需要的配置的分離:

● 開發和生產都需要的配置放到 base.config.js檔案

● 開發需要的配置放到 dev.config.js檔案

● 生產需要的配置放到 prod.config.js檔案

安裝合併的工具:webpackMerge~~~ webpack-merge

然後,合併dev.config.js檔案的程式碼與base.config.js 檔案的程式碼,和合並 prod.config.js 檔案的程式碼與base.config.js 檔案的程式碼