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'

在这里插入图片描述

  1. 添加 Mint UI的样式 在这里插入图片描述
  2. 执行 npm run dev在这里插入图片描述

    webpack 整合 MUI

  3. 因为它不是npm下载的,所有要去GitHub去下载 点击进入
  4. src目录下,新建目录lib,把解压之后的dist文件夹 复制到 lib下,并改名为mui
    在这里插入图片描述
  5. 使用方法和bootstrap差不多,在main.js中添加import './lib/mui/css/mui.min.css'
  6. 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/>
  1. 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
Vue3是一种用于构建用户界面的JavaScript框架,它具有快速、灵活、可重用等特点。Webpack则是一种JS的打包工具,可以将多个JS文件打成一个JS文件。Vue-Router是Vue框架中的路由管理器,通过它可以实现前端路由的切换。Axios则是一种基于Promise的 HTTP 库,用于处理前端与后端的数据交互。Vuex则是Vue框架中的状态管理工具,将组件的共享状态抽取出来,以集中管理,便于开发人员管理。这些技术都是前端开发中必不可少的技术,用于优化前端项目的结构,提高开发效率。 在具体的项目开发中,为了提高代码的复用性,通常会对这些技术进行进一步的封装。对于Vue-Router,可以将项目的路由进行封装,创建一个Route.js文件,用于统一管理路由。通过这样的封装,可以使得路由的管理更加清晰。 对于Axios,可以通过封装一个API.js文件,将后端接口进行统一管理,减少代码的重复性。在API.js中可以封装所有后端接口的请求方法,统一处理请求返回的数据。 对于Vuex,则可以将项目的状态进行封装,写一个store.js文件,用于集中管理应用的状态。在store.js中可以设置全局数据,方便在各个组件中进行访问和修改。同时,也可以将状态的变化通过mutations.js文件封装,以保证数据的可靠性。 最后,使用Webpack进行打包。Webpack可以将多个JS文件打成一个JS文件,减少了请求的次数,提高了页面的加载速度。 综上所述,通过对Vue3、WebpackVue-Router、Axios、Vuex等技术的封装,可以提高代码的复用性和可维护性,从而加快项目的开发进度。同时,这些技术的结合还能够为项目提供更好的架构,提升用户的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值