webpack整合 vue-router 路由,模塊嵌套,整合Mint UI,MUI


webpack整合 vue-router

  1. 結構 在這里插入圖片描述
  2. 各個文件內容,一共八個文件, 還有src components 目錄

Login.vue

<template>
    <div>
        <h2>我是登錄_Login.vue</h2>
    </div>
</template>

<script></script>

<style></style>

Register.vue

<template>
    <div>
        <h2>我是注冊_Register.vue</h2>
    </div>
</template>

<script></script>

<style></style>

App.vue

<template>
    <div>
        <h1>我是主文件_App.vue</h1>
    </div>
</template>

<script></script>

<style></style>

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <router-link to="/login">登錄</router-link>
    <router-link to="/register">注冊</router-link>

    <router-view></router-view>
</div>
</body>
</html>

main.js

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter);

import app from './App.vue'
import login from './components/Login.vue'
import register from './components/Register.vue'

new Vue({
    el: "#app",
    // render會把 el 指定的所有內容都清空,再添加 app 組件
    render: diy => diy(app),
    router: new VueRouter({
        routes: [
            {path: '/login', component: login},
            {path: '/register', component: register}
        ]
    })
});

.babelrc

{
  "presets": ["env", "stage-0"],
  "plugins": ["transform-runtime"]
}

package.json

{
  "name": "test-vue-webpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack-dev-server --open --port 2198 --hot"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.5",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-stage-0": "^6.24.1",
    "bootstrap": "^3.4.1",
    "css-loader": "^3.2.0",
    "file-loader": "^4.2.0",
    "html-webpack-plugin": "^3.2.0",
    "less": "^3.10.3",
    "less-loader": "^5.0.0",
    "node-sass": "^4.12.0",
    "sass-loader": "^7.3.1",
    "style-loader": "^1.0.0",
    "url-loader": "^2.1.0",
    "vue": "^2.6.10",
    "vue-loader": "^15.7.1",
    "vue-router": "^3.1.2",
    "vue-template-compiler": "^2.6.10",
    "webpack": "^4.39.3",
    "webpack-cli": "^3.3.7",
    "webpack-dev-server": "^3.8.0"
  }
}

webpack.config.js

//webpack是基於node進行構建的,所以支持node語法
var path = require("path");

//在內存中生成模版頁面
var htmlWebpackPlugin = require("html-webpack-plugin");

//vue-loader使用
var VueLoaderPlugin=require('vue-loader/lib/plugin');

//當以命令行運行webpack 或 webpack-dev-server ,工具會發現我們沒有執行入口或出口文件
//這時會檢查項目中的配置文件,並讀取這個文件
module.exports = {
    entry: path.join(__dirname, "./src/main.js"),//入口文件
    output: {
        path: path.join(__dirname, "./dist"),//輸出路徑
        filename: "bundle.js"//執行輸出文件的名稱
    },
    plugins: [
        new htmlWebpackPlugin({
            template: path.join(__dirname, "./src/index.html"),//指定模版文件路徑
            filename: "index.html"//設置內存中頁面名稱
        }),
        new VueLoaderPlugin(),
    ],
    module: { // 用來配置第三方loader模塊的
        rules: [ // 文件的匹配規則
            //處理css文件的規則
            {test: /\.css$/, use: ['style-loader', 'css-loader']},
            {test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader']},
            {test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader']},
            //小於等於 limit 不進行base64編碼
            {test: /\.(png|jpg|jpeg|bmp|gif)$/, use: 'url-loader?limit=43960&name=[hash:8]-[name].[ext]'},
            //處理字體文件的loader,bootstrap小圖標就是使用這個
            {test: /\.(eot|svg|ttf|woff|woff2)$/, use: 'url-loader'},
            // 配置 babel-loader 來轉換高級的ES語法
            {test: /\.js$/, use: 'babel-loader', exclude: /node_modules/},
            // 配置 vue-loader 來處理 .vue 文件
            { test: /\.vue$/, use: 'vue-loader' },
        ]
    },
    // resolve: {
    //     alias: { // 修改 Vue 被導入時候的包的路徑
    //         "vue$": "vue/dist/vue.js"
    //     }
    // }
};
  1. 執行 在項目的目錄下執行 npm i 來安裝所需的依賴
  2. 執行 npm run dev ,無錯誤,但是沒有顯示index.html中我們設置的兩個router-link鏈接和router-view在這里插入圖片描述
  3. 原因是因為 render會把 el 指定的所有內容都清空,再添加 app 組件 ,所以,我們需要把這三個標簽放入 App.vue
    修改了index.html
    在這里插入圖片描述
    修改App.vue
    在這里插入圖片描述
  4. 執行 npm run dev 也成功顯示了兩個鏈接, 在這里插入圖片描述
  5. 點擊了登錄之后 在這里插入圖片描述
  6. 點擊了注冊之后 在這里插入圖片描述
  7. components目錄下創建兩個文件 Daniu.vueErdan.vue ,並且修改了main.jsLogin.vue

Daniu.vue

<template>
    <div>
        <h3>我是大牛_Daniu.vue</h3>
    </div>
</template>

<script></script>

<style></style>

Erdan.vue

<template>
    <div>
        <h3>我是二蛋_Erdan.vue</h3>
    </div>
</template>

<script></script>

<style></style>

main.js

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter);

import app from './App.vue'
import login from './components/Login.vue'
import register from './components/Register.vue'
import daniu from './components/Daniu.vue'
import erdan from './components/Erdan.vue'

new Vue({
    el: "#app",
    // render會把 el 指定的所有內容都清空,再添加 app 組件
    render: diy => diy(app),
    router: new VueRouter({
        routes: [
            {
                path: '/login', component: login, children: [
                    {path: 'daniu', component: daniu},
                    {path: 'erdan', component: erdan}
                ]
            },
            {path: '/register', component: register}
        ]
    })
});

Login.vue

<template>
    <div>
        <h2>我是登錄_Login.vue</h2>
        <router-link to="/login/daniu">大牛</router-link>
        <router-link to="/login/erdan">二蛋</router-link>

        <router-view></router-view>
    </div>
</template>

<script></script>

<style></style>
  1. 執行 npm run dev 在這里插入圖片描述
  2. 點擊 登錄 在這里插入圖片描述
  3. 點擊 注冊 在這里插入圖片描述
  4. 點擊 登錄 再點擊大牛 在這里插入圖片描述
  5. 點擊登錄再點擊二蛋 在這里插入圖片描述
  6. 實現抽離模塊,在src目錄下創建文件router.js ,把main.js中關於路由的數據放到router.js

router.js

import VueRouter from 'vue-router'

import login from './components/Login.vue'
import register from './components/Register.vue'
import daniu from './components/Daniu.vue'
import erdan from './components/Erdan.vue'

export default new VueRouter({
    routes:
        [
            {
                path: '/login', component: login, children:
                    [
                        {path: 'daniu', component: daniu},
                        {path: 'erdan', component: erdan}
                    ]
            },
            {path: '/register', component: register}
        ]
})

main.js

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter);
import router from './router.js'

import app from './App.vue'

new Vue({
    el: "#app",
    // render會把 el 指定的所有內容都清空,再添加 app 組件
    render: diy => diy(app),
    //router: router//可以簡寫為router
    router
});

webpack 整合 Mint UI

  1. 執行npm i mint-ui -S
  2. main.js中添加
import MintUI from 'mint-ui'
Vue.use(MintUI);
import 'mint-ui/lib/style.css'

在這里插入圖片描述
3. 添加 Mint UI的樣式 在這里插入圖片描述
4. 執行 npm run dev在這里插入圖片描述

webpack 整合 MUI

  1. 因為它不是npm下載的,所有要去GitHub去下載 點擊進入
  2. src目錄下,新建目錄lib,把解壓之后的dist文件夾 復制到 lib下,並改名為mui
    在這里插入圖片描述
  3. 使用方法和bootstrap差不多,在main.js中添加import './lib/mui/css/mui.min.css'
  4. App.vue中添加
        <button type="button" class="mui-btn">默認</button>
        <button type="button" class="mui-btn mui-btn-primary">藍色</button>
        <button type="button" class="mui-btn mui-btn-success">綠色</button>
        <button type="button" class="mui-btn mui-btn-warning">黃色</button>
        <button type="button" class="mui-btn mui-btn-danger">紅色</button>
        <button type="button" class="mui-btn mui-btn-royal">紫色</button>
        <hr/>

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM