使用Webpack创建vue脚手架并搭建路由---详解

1.使用 vue 库

vue 是一个非常好用的 javascript 库,现在已经发行了 vue 3,我们可以直接导入使用库文件,也可以使用单文件(SFC)的形式,直接使用库文件会简单一点,我们先来试一下吧。 

 1.1安装 vue3 
npm install vue@next 
//或者
npm install vue@3
1.2导入 createApp 方法创建一个实例,在你的入口文件导入
import { createApp } from 'vue' // 导入创建实例方法const App = createApp({template: `<h2>我是通过vue生成的{{ title }}</h2>`, // DOM 模版 {{ 模版字符串 }}data(){
// vue2 写法return {title: "标题" // 数据}}})App.mount("#app") //挂载到一个 id 为 app 的 DOM 元素上

 1.3在创建的模版也就是(public/index.html)挂载div

以及修改 HtmlWebpackPlugin 

然后进行运行 项目跑起来打开,有文字


2. vue 单文件组件

什么是单文件(SFC)?

为了更好地适应复杂的项目, Vue支持以 .vue 为扩展名的文件来定义一个完整组件,用以替代使用  Vue.component 注册组件的方式。那我们就可以使用 webpack 来打包这种组件。
2.1  我们先在 src 目录下新建如下文件(views/App.vue)。

2.2. 在 index.js 里导入此文件
import { createApp } from 'vue'
import App from "@/views/App.vue"  //如果没有配置@可以配置一下 或者换成绝对路径const app = createApp(App)
app.mount('#app')

接下来运行的话肯定是报错的,我们的 .vue 单文件肯定需要 loader 去解析的

安装loader

npm install vue-loader -D

仅此一个是不够的

我们还需安装一个 vue 单文件解析器:

npm install @vue/compiler-sfc -D

然后要记得去 webpack > module > rules里面去配置

//要配置在rules第一项
{test: /\.vue$/,use: {loader: 'vue-loader'}}

并且引入插件,插件是 vue 自带的,直接导入并配置就行

const vue = require("vue-loader/dist/index")
//在插件里面追加一个 new vue.VueLoaderPlugin()

你现在再次运行就能看到效果了 


3. 配置vue-router

  3.1首先安装路由依赖组件:
npm install vue-router@4
  3.2Vue的路由封装需要用到的文件如下图: 

  

3.3views下面文件夹
3.3.1 Home文件夹
<!--* @Author: hukai huzhengen@gmail.com* @Date: 2024-09-13 11:27:54* @LastEditors: hukai huzhengen@gmail.com* @LastEditTime: 2024-09-13 14:53:56* @FilePath: \newWebpack\src\views\Home\Home.vue* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template><div>我是home</div>
</template><script setup></script><style></style>
 3.3.2 login文件夹
<!--* @Author: hukai huzhengen@gmail.com* @Date: 2024-09-13 11:28:19* @LastEditors: hukai huzhengen@gmail.com* @LastEditTime: 2024-09-14 09:47:24* @FilePath: \newWebpack\src\views\Login\Login.vue* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template><div>我是login</div>
</template><script setup></script><style></style>
  3.3.3 Register文件夹
<!--* @Author: hukai huzhengen@gmail.com* @Date: 2024-09-13 11:28:29* @LastEditors: hukai huzhengen@gmail.com* @LastEditTime: 2024-09-14 10:22:36* @FilePath: \newWebpack\src\views\Register\Register.vue* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template><div>我是Register</div>
</template><script setup></script><style></style>
  3.3.3 Search文件夹 
<template><div>我是Search</div>
</template><script setup></script><style></style>

3.4 router文件夹:是用来封装路由用的。

     router文件夹下的index.js:

/** @Author: hukai huzhengen@gmail.com* @Date: 2024-09-13 11:07:35* @LastEditors: hukai huzhengen@gmail.com* @LastEditTime: 2024-09-13 16:30:37* @FilePath: \newWebpack\src\router\index.js* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE*/
/** @Author: hukai huzhengen@gmail.com* @Date: 2024-09-13 11:07:35* @LastEditors: hukai huzhengen@gmail.com* @LastEditTime: 2024-09-13 15:38:19* @FilePath: \newWebpack\src\router\index.js* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE*/
// 配置路由的地方
// import Vue from 'vue'
// import VueRouter from 'vue-router'
// // 通过Vue.use()方法来使用插件
// Vue.use(VueRouter)
import { createWebHashHistory, createRouter } from 'vue-router'// 引入路由组件
import Home from '@/views/Home/Home.vue'
import Search from '@/views/Search/Search.vue'
import Login from '@/views/Login/Login.vue'
import Register from '@/views/Register/Register.vue'
// 配置路由
export const constantRoutes = [// 路由信息{path: "/home",hidden: true,component: Home},// 重定向,在项目跑起来的时候,访问 / 或是其他 ,立马让它定向到首页// {// 	path: "*",//     hidden: true,// 	redirect: "/home"// },{path: "/search",hidden: true,component: Search},{path: "/login",hidden: true,component: () => import('@/views/Login/Login.vue')},{path: "/register",hidden: true,component: Register},]const router = createRouter({history: createWebHashHistory(),routes: constantRoutes,scrollBehavior(to, from, savedPosition) {if (savedPosition) {return savedPosition} else {return { top: 0 }}}})export default router

注意:代码中的“@”表示根目录路径,这个在项目的配置文件webpack.dev.config.js中设置:

const path = require('path');resolve: {alias: {// 约定:使用@表示src文件所在路径'@': path.resolve(__dirname, 'src')}},
 3.5 ./src/App.vue
<template><router-view></router-view>
</template>
<script>
export default {
}
</script>
 3.6 ./src/index.js:
/** @Author: hukai huzhengen@gmail.com* @Date: 2024-09-12 09:49:08* @LastEditors: hukai huzhengen@gmail.com* @LastEditTime: 2024-09-13 15:31:57* @FilePath: \newWebpack\src\index.js* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE*/
/** @Author: hukai huzhengen@gmail.com* @Date: 2024-09-12 09:49:08* @LastEditors: hukai huzhengen@gmail.com* @LastEditTime: 2024-09-13 09:49:03* @FilePath: \newWebpack\src\index.js* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE*/// import { createApp } from 'vue/dist/vue.esm-bundler'
// import App from "@/views/App.vue" //导入
// console.log(router)
// createApp(App).use(router)
// createApp(App).mount("#app") // 创建实例并挂载(mount)
import { createApp } from 'vue'
import App from "@/views/App.vue" 
import router from '@/router/index.js'const app = createApp(App)
app.use(router)
app.mount('#app')

这样Vue的路由封装就完成了,项目中如果还需要更多的页面的话,也可以在此封装的路由上面进行扩展,以下是页面效果图:

页面效果:
http://localhost:3000/#/login

http://localhost:3000/#/home 

http://localhost:3000/#/Register

http://localhost:3000/#/Search

githup代码 写好的项目 GitHub - continye/webpack-: 该项目是从webpack 配置到vue3的详细过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145088.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操

JdbcTemplate是Spring框架中的一个重要组件&#xff0c;主要用于简化JDBC数据库操作。它提供了许多常用的方法&#xff0c;如查询、插入、更新、删除等。本文将介绍JdbcTemplate的常用方法及其使用方式&#xff0c;以及参数绑定和删除数据的方法。 一、JdbcTemplate常用方法 查…

24/9/19 算法笔记 kaggle BankChurn数据分类

题目是要预测银行里什么样的客户会流失&#xff0c;流失的概率是多少 我这边先展示一下我写的二分类的算法 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model impo…

金砖软件测试赛项之Jmeter如何录制脚本!

一、简介 Apache JMeter 是一款开源的性能测试工具&#xff0c;用于测试各种服务的负载能力&#xff0c;包括Web应用、数据库、FTP服务器等。它可以模拟多种用户行为&#xff0c;生成负载以评估系统的性能和稳定性。 JMeter 的主要特点&#xff1a; 图形用户界面&#xff1a;…

Stable Diffusion绘画 | ControlNet应用-IP-Adapter:一致性角色就这么简单

IP-Adapter 更新了全新的模型—FaceID plus V2 版本&#xff0c;同时还支持 SDXL 模型。 FaceID plus V2 版本的优点&#xff1a; 解决任务一致性 一张图生成相似角色 下载地址&#xff1a;https://huggingface.co/h94/IP-Adapter-FaceID/tree/main 其中&#xff0c;两个 Lora文…

AIGC时代!AI的“iPhone时刻”与投资机遇

AIGC时代&#xff01;AI的“iPhone时刻”与投资机遇 前言AI的“iPhone时刻”与投资机遇 前言 AIGC&#xff0c;也就是人工智能生成内容&#xff0c;它就像是一股汹涌的浪潮&#xff0c;席卷了整个科技世界。它的出现&#xff0c;让我们看到了人工智能的无限潜力&#xff0c;也…

基于协同过滤算法+PHP的新闻推荐系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤算法PHPMySQL的新…

【STM32 HAL库】OLED显示模块

【STM32 HAL库】OLED显示模块 前言理论OLED基本参数OLED基本驱动原理OLED坐标轴 应用CubeMx配置底层函数代码高层封装函数printf显示函数 前言 本文为笔者学习 OLED 的总结&#xff0c;基于keysking的视频内容&#xff0c;如有错误&#xff0c;欢迎指正 理论 OLED基本参数 …

react + antDesign封装图片预览组件(支持多张图片)

需求场景&#xff1a;最近在开发后台系统时经常遇到图片预览问题&#xff0c;如果一个一个的引用antDesign的图片预览组件就有点繁琐了&#xff0c;于是在antDesign图片预览组件的基础上二次封装了一下&#xff0c;避免重复无用代码的出现 效果 公共预览组件代码 import React…

【machine learning-十-grading descent梯度下降实现】

grading descent 梯度下降参数更新方法 --导数和学习率 从导数项直观理解梯度下降 grading descent 算法就是更新参数&#xff0c;今天来学习下如何更新w和b 梯度下降 还是以线性回归的均方差损失函数如下为例&#xff1a; 损失函数的可视化图如下 &#xff1a; 横轴和纵轴分…

影刀RPA实战:网页爬虫之苦瓜书籍数据

书籍常常被视为心灵的慰藉&#xff0c;因为它们能够在不同的层面上为人们提供支持和安慰。 1. 书籍对我们的重要性 书籍是人类知识的载体&#xff0c;也是智慧的结晶。它们不仅是学习的工具&#xff0c;更是人类心灵的慰藉。在忙碌的生活中&#xff0c;书籍能够提供知识、启发…

魅思CMS getOrderStatus SQL注入漏洞复现

0x01 漏洞描述&#xff1a; 魅思是一款集成了视频管理、用户管理、手机端应用封装等功能的综合性视频管理系统。该系统不仅以其强大的视频管理功能、灵活的用户管理机制、便捷的手机端应用封装功能以及高安全性和现代化的界面设计&#xff0c;成为了市场上备受关注的视频管理系…

技术美术百人计划 | 《4.5 DOF景深算法》笔记

1. 景深定义 景深&#xff08;Depth of Field&#xff0c;DOF&#xff09;&#xff0c;是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。镜头光圈、镜头焦距、及焦平面到拍摄物的距离是影响景深的重要因素。在聚焦完成后&#xff0c;焦点…

监控IDS和IPS增强网络安全性

入侵检测系统&#xff08;IDS&#xff09;和入侵防御系统&#xff08;IPS&#xff09;是当今使用的最复杂的网络安全设备之一&#xff0c;它们检查网络数据包并阻止可疑数据包&#xff0c;并提醒管理员有关攻击企图的信息。 在当今威胁不断变化的网络环境中&#xff0c;防火墙…

TopoDOT2024.1注册机 道路自动化提取 雷达点云数据

TopoDOT2024.1是一套成熟的点云数据处理及应用系统&#xff0c;全面具备点云数据的存储管理、精度检核、特征自动提取、智能分析、高效建模、成果输出等应用功能。TopoDOT在LiDAR数据应用领域有着多年的实战经验&#xff0c;用户在实际项目中长期使用&#xff0c;尤其在交通领域…

iOS 巨魔神器,Geranium 天竺葵:6大功能,个个都解决痛点

嘿&#xff0c;这是黑猫。如果你装了巨魔&#xff0c;却只知道安装第三方APP&#xff0c;那就是暴殄天物。巨魔的价值不仅是应用侧载&#xff0c;还有强大的玩机工具生态——这也是我花费大量时间&#xff0c;去制作巨魔精选IPA合集的原因。 通过巨魔商店安装的APP&#xff0c…

初学者的鸿蒙多线程并发之 TaskPool 踩坑之旅

1. 背景 目标群体&#xff1a;鸿蒙初学者 版本&#xff1a;HarmonyOS 3.1/4.0 背景&#xff1a;鸿蒙 App 的全局路由管理功能&#xff0c;需要在 App 启动时初始化对 raw 下的相关配置文件进行读取、解析并缓存。App 启动时涉及到了大量模块的初始化&#xff0c;好多模块都涉…

智能绘画Midjourney AIGC在设计领域中的应用

科技的进步&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的方式渗透进各个领域&#xff0c;尤其是在艺术创作&#xff0c;尤其是绘画。Midjourney作为AI绘画技术的代表&#xff0c;其AIGC&#xff08;Artificial Intelligence for Generative Content&#xff0…

python SQLAlchemy 数据库连接池

文章目录 前言python SQLAlchemy 数据库连接池1. 安装2. 创建数据库引擎3. 新建表&#xff0c;增删改查demo 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都…

【Linux】—— muduo网络库的安装配置与使用

muduo网络库编程 Linux环境下Epollpthread线程库 Boost库安装与使用 安装Boost库 下载boost库源码&#xff0c;linux环境解压 tar -zxvf boost_1_69_0.tar.gz 解压完成后&#xff0c;进入该目录&#xff0c;查看内容 运行bootstrap.sh工程编译构建程序 ./bootstrap.sh …

JAVA同城生活新引擎外卖跑腿团购到店服务多合一高效系统小程序源码

&#x1f680;同城生活新风尚&#xff01;一站式高效系统&#xff0c;让日常更便捷&#x1f6cd;️ &#x1f37d;️【开篇&#xff1a;同城生活&#xff0c;一触即发】&#x1f37d;️ 在这个快节奏的时代&#xff0c;同城生活的便利性与效率成为了我们追求的新风尚。想象一下…