使用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.rhkb.cn/news/427733.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 模型视图(二):模型类QAbstractItemModel

文章目录 Qt 模型视图(二)&#xff1a;模型类QAbstractItemModel1.基本概念1.1.模型的基本结构1.2.模型索引1.3.行号和列号1.4.父项1.5.项的角色1.6.总结 Qt 模型视图(二)&#xff1a;模型类QAbstractItemModel ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方法。模…

巡检管理系统软件:功能与逻辑的深度探索

在现代企业管理中&#xff0c;巡检管理系统软件扮演着至关重要的角色。巡检管理系统不仅能提升巡检工作的效率和准确性&#xff0c;还能为企业的整体运营提供有力支持。下面将从功能与逻辑两个方面对巡检管理系统软件进行深入分析。 一、巡检管理系统软件的功能 巡检计划制定 …

快速体验Linux发行版:DistroSea详解与操作指南

DistroSea 是一个功能强大的在线平台&#xff0c;允许用户在无需下载或安装的情况下&#xff0c;通过浏览器直接测试多种Linux和BSD发行版。该平台非常适合Linux爱好者、系统管理员和开发者&#xff0c;提供一个简便的方式来体验各种操作系统而无需影响本地设备。 为什么选择D…

CleanMyMac 5 for Mac 最新中文破解版下载 系统优化垃圾清理工具

今天给大家带来的是CleanMyMac最新款CleanMyMac 5&#xff0c;它是一个全面的Mac清理和维护工具&#xff0c;通过提供多项强大的功能&#xff0c;帮助用户简化日常维护任务&#xff0c;提升系统性能&#xff0c;同时保护个人隐私和安全。无论是新手还是经验丰富的Mac用户&#…

如何实现实时监控局域网计算机桌面?学会这5个妙招你就能搞定!

在现代企业环境中&#xff0c;实时监控局域网内的计算机桌面已成为确保工作效率、维护信息安全的重要手段。 无论是出于管理需求还是安全考虑&#xff0c;掌握这一技能对于IT管理员来说都至关重要。 本文将详细介绍五个妙招&#xff0c;帮助你轻松实现局域网内计算机桌面的实…

python 自动化测试接口

比如我们要测试接口&#xff1a;identity/chatRecords/pages 已在Postman中有&#xff0c;那我们就可以直接从里面复制出Python脚本 新建&#xff1a; pagerequest.py import requests import jsonurl "http://192.168.31.132:70/identity/chatRecords/pages"payl…

gin配置swagger文档

一、基本准备工作 1、安装依赖包 go get -u github.com/swaggo/swag/cmd/swag go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files2、在根目录上配置swagger的路由文件 //2.初始化路由router : initialize.Routers()// 配置swaggerdocs.SwaggerInfo…

【网络安全】-ssrf服务器请求伪造攻击-burp

SSRF攻击服务器请求伪造攻击 CSRF攻击跨站请求伪造攻击也称客户端请求伪造攻击 两种攻击最主要的区别是一个在服务器&#xff0c;一个在客户端。 文章目录 前言 什么是SSRF攻击? 1.分类&#xff1a; 针对服务器的 SSRF 攻击&#xff1a; 针对后端系统的SSRF攻击&#xff1a; …

一篇文章解决ComfyUI常见的故障报错!

前言 学习和使用ComfyUI最痛苦的是什么&#xff1f;就是这满屏的红色方框和和[报错信息] “报错信息”)&#xff0c;处理完一批又一批&#xff0c;很多人玩了一两个流程就搞不下去了&#xff0c;很多初学者因此就放弃了。 有道是&#xff1a;配置流程大半天&#xff0c;跑通出…

【Python机器学习】NLP信息提取——值得提取的信息

目录 提取GPS信息 提取日期 如下一些关键的定量信息值得“手写”正则表达式&#xff1a; GPS位置&#xff1b;日期&#xff1b;价格&#xff1b;数字。 和上述可以通过正则表达式轻松捕获的信息相比&#xff0c;其他一些重要的自然语言信息需要更复杂的模式&#xff1a; 问…

【win工具】win安装flameshot并设置截图快捷键

1.下载flameshot软件2.windows端配置flameshot快捷键3.取消win自带截图快捷键 1.下载flameshot软件 https://flameshot.org/#download installer版本为安装包 portable版本为免安装版 2.windows端配置flameshot快捷键 https://cloud.tencent.com/developer/article/2114952 W…

Linux 防火墙:iptables (二)

文章目录 SNAT 原理与应用SNAT 应用环境SNAT 原理SNAT 转换前提条件SNAT 格式SNAT 转换规则配置 DNAT 原理与应用DNAT 应用环境DNAT 原理DNAT 转换前提条件DNAT 格式DNAT 转换规则配置 iptables 规则的备份和还原导出&#xff08;备份&#xff09;所有表的规则导入&#xff08;…

电脑USB端口禁止软件有哪些?什么软件能指定USB端口禁用?分享四款好用软件!

想象一下&#xff0c;你正准备在办公桌上插入U盘&#xff0c;打算快速拷贝文件&#xff0c;突然系统蹦出一个警告&#xff1a;“这个USB端口已被禁用&#xff01;” 是不是感觉好像被一双隐形的手制止了&#xff1f; 其实&#xff0c;这双“隐形的手”就是专门为企业安全设计…

redis群集三种模式:主从复制、哨兵、集群

redis群集有三种模式 redis群集有三种模式&#xff0c;分别是主从同步/复制、哨兵模式、Cluster&#xff0c;下面会讲解一下三种模式的工作方式&#xff0c;以及如何搭建cluster群集 ●主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制…

集采良药:从“天价神药”到低价良药,伊马替尼的真实世界研究!

在医疗科技日新月异的今天&#xff0c;有一种药物以其卓越的疗效和深远的影响力&#xff0c;成为了众多患者心中的“精准武器”——伊马替尼。这款药物不仅在慢性髓细胞白血病&#xff08;CML&#xff09;的治疗上屡创佳绩&#xff0c;更是胃肠道间质瘤&#xff08;GIST&#x…

哪个牌子的护眼台灯性价比高?网上排名前列的护眼台灯推荐

现在市面上形形色色的打着“护眼”口号的台灯太多了&#xff0c;因为眼睛对于我们来说很重要&#xff0c;我们看到美丽的事物都因为有他&#xff0c;所以大家一听到护眼就会选择购买。很多商家为了赚钱&#xff0c;随便贴个标签就说护眼&#xff0c;其实一点用都没有。哪个牌子…

AJAX Jquery $.get $.post $.getJSON

AJAX AJAX Asynchronous JavaScript and XML (异步的J avascript和XML)。 Ajax $.ajax <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…

828华为云征文|基于华为云Flexus云服务器X实现个人博客搭建

文章目录 ❀前言❀部署前准备❀宝塔安装❀安全组开放❀web访问验证❀安装docker❀安装wordpress❀安全组开放18040端口❀访问博客网址❀发布个人博客❀总结 ❀前言 大家好&#xff0c;我是早九晚十二。 近期华为云推出了最新的华为云Flexus云服务器X&#xff0c;这款云主机在算…

服务器自动巡检(Server automatic inspection)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Microsoft Edge 五个神级插件

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏 插件_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 Microsoft Edge 一.安装游览器 ​编辑 二.找到插件商店 1.打开游览器后&#xff0c;点击右上角的设置&#x…