搭建Vue前端项目的流程

一、搭建Vue项目流程

1、安装nodejs
测试安装是否成功

$ npm -v
6.14.16
$ node -v
v12.22.12

2、全局安装npm install -g @vue/cli,后续会使用到vue命令

$ vue --version
@vue/cli 5.0.8

3、使用vue create demo_project_fe命令创建项目,使用箭头键来选择,确认使用回车键
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/61bdb06ab6a44da3890b7d8b0c0caf27.png请添加图片描述
成功界面
请添加图片描述
查看新建项目

$ cd demo_project_fe
$ ll
total 408
-rw-rw-r--   1 work work     73 Dec  6 20:59 babel.config.js
-rw-rw-r--   1 work work    279 Dec  6 20:59 jsconfig.json
drwxrwxr-x 571 work work  20480 Dec  6 20:59 node_modules
-rw-rw-r--   1 work work    891 Dec  6 20:59 package.json
-rw-rw-r--   1 work work 366868 Dec  6 20:59 package-lock.json
drwxrwxr-x   2 work work   4096 Dec  6 20:59 public
-rw-rw-r--   1 work work    327 Dec  6 20:59 README.md
drwxrwxr-x   4 work work   4096 Dec  6 20:59 src
-rw-rw-r--   1 work work    118 Dec  6 20:59 vue.config.js

4、执行npm run serve启动项目
请添加图片描述

二、使用element-ui前端框架

官网:https://element.eleme.cn/#/zh-CN/component/installation
1、安装element-ui,使用命令npm i element-ui -S
2、在main.js中导入element-ui以及对应的css文件

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import App from './App.vue'
import router from './router'Vue.config.productionTip = false
Vue.use(ElementUI)new Vue({router,render: h => h(App),
}).$mount('#app')

三、使用Vue Router实现页面导航栏功能

官网:https://router.vuejs.org/zh/guide/advanced/dynamic-routing.html
1、使用npm install vue-router@3命令安装Vue Router
2、在src目录下新建一个router目录,并新建一个index.js文件

import Vue from 'vue'
import Router from 'vue-router'
import MainComponent from '../components/MainComponent.vue'
import HelloWorld from '../components/HelloWorld.vue'
import Child1 from '../components/Child1Test.vue'
import Child2 from '../components/Child2Test.vue'Vue.use(Router);// 1. 定义一些路由
// 每个路由都需要映射到一个组件
const routes = [{path: '/',component: MainComponent,leaf: false,name: 'MainComponent',children: [{path: 'child1', component: Child1,leaf: true,name: 'Child1'},{path: 'child2', component: Child2,leaf: true,name: 'Child2'},]},{path: '/',component: HelloWorld,leaf: false,name: 'HelloWorld',children: [{path: 'child3', component: Child1,leaf: true,name: 'Child3'},{path: 'child4', component: Child2,leaf: true,name: 'Child4'},]},
]let router = new Router({mode: 'history',routes: routes
});export default router;

3、App.vue文件中使用<router-view>组件作为路由主出口

<template><div id="app"><router-view></router-view></div>
</template><script>export default {name: 'App',components: {}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

4、MainComponent.vue实现了使用<router-link>组件跳转新路由地址,也通过引入CommonAside组件实现了导航栏功能
备注:<router-view>组件可以在多处使用

<template><div><h1>我是Main组件</h1><p><!-- 使用 router-link 组件来导航 --><!-- 通过传入 `to` 属性指定链接 --><!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --><router-link to="/child1">Go To Ghild1</router-link><router-link to="/child2">Go To Ghild2</router-link></p><!-- 路由出口 --><!-- 路由匹配到的组件将渲染在这里 --><router-view></router-view><CommonAside/></div>
</template>
<script>import CommonAside from '@/components/CommonAside.vue'export default {components: {CommonAside},data() {return {}},mounted() {console.log('router:', this.$router);}}
</script>

5、CommonAside.vue中通过<el-menu>组件的router属性可以实现在激活导航时以 index 作为 path 进行路由跳转。当然也可以不使用router属性,而是使用<router-link :to="{ name: subItem.name}">{{ subItem.name }}</router-link>也可以实现子菜单内容跳转

<template><div><el-container><el-aside width="200px"><el-menu default-active="1-2"routerclass="el-menu-vertical-demo"@open="handleOpen"@close="handleClose":collapse="isCollapse"><!-- index用于确定选中的菜单项,是唯一标识 --><!-- v-bind:(简写为:,用于属性绑定) --><div v-for="item in $router.options.routes" :key="item.name" :index="item.name"><!-- 一级菜单、二级菜单 --><el-submenu :key="item.name" index="item.name"><!-- slot表示插槽 --><template slot="title"><!-- <i :class="`el-icon-${item.icon}`"></i> --><span slot="title">{{ item.name }}</span></template><!-- 对子菜单进行渲染 --><el-menu-item-group v-for="subItem in item.children" :key="subItem.path"><el-menu-item :index="subItem.path">{{ subItem.name }}</el-menu-item></el-menu-item-group></el-submenu></div></el-menu></el-aside><el-main><router-view></router-view></el-main></el-container></div>
</template><script>
export default {data() {return {//控制导航栏为展开模式isCollapse: false}},methods: {handleOpen() {},handleClose() {}},mounted() {console.log('router:', this.$router);}
}
</script>

页面效果:
请添加图片描述

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

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

相关文章

lv13 内核模板编译方法 7

1 内核模块基础代码解析 Linux内核的插件机制——内核模块 类似于浏览器、eclipse这些软件的插件开发&#xff0c;Linux提供了一种可以向正在运行的内核中插入新的代码段、在代码段不需要继续运行时也可以从内核中移除的机制&#xff0c;这个可以被插入、移除的代码段被称为内…

Android画布Canvas drawPath绘制跟随手指移动的圆,Kotlin

Android画布Canvas drawPath绘制跟随手指移动的圆&#xff0c;Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.os.Bundle import android.…

深入Mybatis数据源

数据源是持久层框架中最核心的组件之一&#xff0c;在实际工作中比较常见的数据源有 C3P0、Apache Common DBCP、Proxool 等。作为一款成熟的持久化框架&#xff0c;MyBatis 不仅自己提供了一套数据源实现&#xff0c;而且还能够方便地集成第三方数据源。 javax.sql.DataSourc…

MySQL数据库的安装与环境配置

下载 下载MySQL8 安装 解压 配置MySQL环境变量 系统环境变量path D:\ProgramFiles\mysql-8.0.20-winx64\bin 1.点击属性 2.点击高级系统设置 3.点击环境变量 4.在系统变量中找到path 注意这里不是用户变量 5.新建后输入解压的地址 MySQL初始化和启动 以管理员身份运行cmd…

基于Python的短视频APP大学生用户数据分析预测

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目背景 本项目以国内高校大学生在一段时间内对某短视频平台的使用数据为基础。通过数据分析和建模方法&#xff0c;我们深入挖掘这些数据中所蕴含的信息&#xff0c;以实现对高校和大学生维度的统计分析。…

iptables 防火墙

目录 1. Linux防火墙基础 1.1 iptables 的表、链结构 1.规则表 2.规则链 1.2 数据包过滤的匹配流程 1.2.1 规则表之间的顺序 1.2.2 规则链之间的顺序 1.2.3 规则链内部各条防火墙规则之间的顺序 1.3 编写防火墙规则 1.3.1 安装iptables 1.3.2 基本语法、数据包控制…

为什么TCP会粘包

硬核图解|tcp为什么会粘包&#xff1f;背后的原因让人暖心 数据包报文格式&#xff08;IP包、TCP报头、UDP报头&#xff09; TCP&#xff0c;Transmission Control Protocol。传输控制协议&#xff0c;是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP粘包是指发…

Gamma LUT PG285笔记

1 gamma校正应用背景 探测器响应为线性亮度或RGB值&#xff0c;而显示器并非线性&#xff0c;需要算法做校正。 2 reg 可以配置3张LUT表&#xff0c;每张表最大1024个16bit参数。表中0x0800仅是第一张表的起始地址&#xff0c;地址每次加4。 3 数据输入的格式 按照RBG的顺序…

Vue Echarts 多折线图只有一条X轴(合并X轴数据并去重排序) - 附完整示例

echarts&#xff1a;一个基于 JavaScript 的开源可视化图表库。 目录 效果 一、介绍 1、官方文档&#xff1a;Apache ECharts 2、官方示例 二、准备工作 1、安装依赖包 2、示例版本 三、使用步骤 1、在单页面引入 echarts 2、指定容器并设置容器宽高 3、数据处理&am…

显示器与按键(LCD 1602 + button)

一、实验目的&#xff1a; &#xff08;1&#xff09;学习lcd 1602的编程与使用、 &#xff08;2&#xff09;机械式复位开关button软件消抖的方法。 二、实验内容&#xff1a; 1、必做&#xff1a;先显示开机画面&#xff0c;&#xff1a;在1602显示器上&#xff0c;分两行…

机器学习中的一些有趣点【Attack 和 Defence】

什么是机器学习中的攻击 “攻击机器学习模型” 指的是试图危害或操纵机器学习模型的概念。有各种类型的攻击机器学习模型的方法&#xff0c;它们可以广泛分为几类&#xff1a; 对抗攻击&#xff1a; 定义&#xff1a; 对抗攻击涉及对输入数据进行微小的、通常是难以察觉的更改…

【电商项目实战】MD5登录加密及JSR303自定义注解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…