【Web开发手礼】探索Web开发的魅力(十一)-Vue(1)配置环境、创建导航栏、各页面整体框架

主要讲解了vue的下载、配置环境、项目创建、导航栏、页面整体框架!!!

文章目录

前言

配置环境

终端

安装Nodejs

安装@vue/cli

启动vue自带的图形化项目管理界面

基本概念

 script部分

template部分

style部分

第三方组件

 创建导航栏

总结


前言

主要讲解了vue的下载、配置环境、项目创建、导航栏、页面整体框架!!!


配置环境

终端

Linux和Mac上可以用自带的终端。
Windows上推荐用powershell或者cmd。Git Bash有些指令不兼容。

安装Nodejs

安装地址

安装@vue/cli

 打开Git Bash,执行:

npm i -g @vue/cli

 如果执行后面的操作有bug,可能是最新版有问题,可以尝试安装早期版本,比如:npm i -g @vue/cli@4

启动vue自带的图形化项目管理界面

vue ui

常见问题1:Windows上运行vue,提示无法加载文件,表示用户权限不足。
解决方案:用管理员身份打开终端,输入set-ExecutionPolicy RemoteSigned,然后输入y

 安装vue-router插件和vuex插件

安装bootstrap依赖

项目启动

 当我们发现浏览器中的路径中带有#号

去除#号只需要在项目的router文件夹中的index.js文件中

 删除这两个Hash即可。

基本概念

一个.vue文件主要由template、script、style三部分组成。

 script部分

export default对象的属性:

  • name:组件的名称
  • components:存储<template>中用到的所有组件
  • props:存储父组件传递给子组件的数据
  • watch():当某个数据发生变化时触发
  • computed:动态计算某个数据

setup(props, context):初始化变量、函数

  • ref定义变量,可以用.value属性重新赋值
  • reactive定义对象,不可重新赋值
  • props存储父组件传递过来的数据
  • context.emit():触发父组件绑定的函数

template部分

  •  <slot></slot>:存放父组件传过来的children。
  • v-on:click或@click属性:绑定事件
  • v-if、v-else、v-else-if属性:判断
  • v-for属性:循环,:key循环的每个元素需要有唯一的key
  • v-bind:或::绑定属性

style部分

  •  <style>标签添加scope属性后,不同组件间的css不会相互影响。

第三方组件

  •  view-router包:实现路由功能。

vuex:存储全局状态,全局唯一。

  •  state: 存储所有数据,可以用modules属性划分成若干模块
  • getters:根据state中的值计算新的值
  • mutations:所有对state的修改操作都需要定义在这里,不支持异步,可以通过$store.commit()触发
  • actions:定义对state的复杂修改操作,支持异步,可以通过$store.dispatch()触发。注意不能直接修改state,只能通过mutations修改state。
  • modules:定义state的子模块

 创建导航栏

 引入bootstrap框架,在main.js中


import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/js/bootstrap'

 当报以上错误时。我们去装一下@popperjs/core依赖即可

不同页面如果有公共的一部分,我们就可以把公共的部分抽象成一个组件来加以复用。

<template><nav class="navbar navbar-expand-lg bg-body-tertiary"><div class="container"><a class="navbar-brand" href="#">Myspace</a><button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarText"><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link active"  href="#">首页</a></li><li class="nav-item"><a class="nav-link" href="#">好友列表</a></li><li class="nav-item"><a class="nav-link" href="#">用户动态</a></li></ul><ul class="navbar-nav "><li class="nav-item"><a class="nav-link "  href="#">登录</a></li><li class="nav-item"><a class="nav-link" href="#">注册</a></li></ul></div></div>
</nav>
</template><script>export default{name: "NavBar"}
</script><style scoped></style>

 当我们需要在别的页面用该组件时,就需要在别的页面的script中声明该组件并在components中说明该组件

<script>
import NavBar from './components/NavBar.vue';
export default{name: "App",components: {NavBar}}
</script>

在App.vue中如下代码: 

<template><NavBar></NavBar><router-view/>
</template><script>
import NavBar from './components/NavBar.vue';
export default{name: "App",components: {NavBar}}
</script><style>
</style>

当我们将公共部分抽象成组件之后,并且在页面引入后,需要在里面写子类元素,那么组件内部需要加上slot标签。

以上错误是我们文件的命名至少需要两个大写的字母 。

引入卡片,让我们页面展示的内容放在card中,便于展示。 

<template><div class="container"><div class="card"><div class="card-body"><slot></slot></div></div></div>
</template><script>
export default{name: "ContentBase",
}
</script><style scoped>
.container{margin-top: 20px;
}
</style>

分别创建对应的好友列表、用户动态、 首页、注册、404界面

在router文件夹下面的index.js里面写路由来设置,对应的路径访问对应的那个页面

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
import NotFoundView from '@/views/NotFoundView.vue';
import RegisterView from '@/views/RegisterView.vue';
import UserListView from '@/views/UserListView.vue';
import UserProfileView from '@/views/UserProfileView.vue';
import LoginView from '@/views/LoginView.vue';
const routes = [{path: '/',name: 'home',component: HomeView},{path: '/userlist',name: 'userlist',component: UserListView},{path: '/userprofile',name: 'userprofile',component: UserProfileView},{path: '/register',name: 'register',component: RegisterView},{path: '/login',name: 'login',component: LoginView},{path: '/:catchAll(.*)',name: '404',component: NotFoundView}
]const router = createRouter({history: createWebHistory(),routes
})export default router

引入模块和视图组件

  • createRouter 和 createWebHistory 是 Vue Router 提供的函数,用于创建路由实例和指定路由模式。
  • HomeViewNotFoundViewRegisterViewUserListViewUserProfileView 和 LoginView 是从文件路径引入的 Vue 组件,用于在不同的路由路径下显示不同的页面内容。

定义路由配置 (routes 数组)

  • routes 数组包含了每个路由的配置对象。

每个配置对象包括:

  • path: 路径,指定了该路由对应的 URL 路径。
  • name: 路由的名称,用于在程序中标识和调用该路由。
  • component: 路由对应的 Vue 组件,即访问该路径时要渲染的内容。

创建和配置路由实例 (router)

  • 使用 createRouter 函数创建一个 Vue Router 实例。
  • history: createWebHistory() 指定使用 HTML5 history 模式,这种模式允许在不重新加载页面的情况下使用标准的 URL。
  • routes 是之前定义的路由配置数组。

导出路由实例 (router)

  • 通过 export default 将创建的路由实例 router 导出,以便在 Vue 应用中使用。

当我们对链接进行点击希望页面跳转,但是并不想让页面进行刷新(即前端渲染)。那么此时就需要使用<router-link>标签。

<router-link  class="navbar-brand" :to="{name: 'home'}">Myspace</router-link>
<router-link class="nav-link active" :to="{name: 'home'}">首页</router-link>
<router-link class="nav-link" :to="{name: 'userprofile'}">用户动态</router-link>
<router-link class="nav-link " :to="{name: 'login'}">登录</router-link>
<router-link  class="nav-link" :to="{name: 'register'}">注册</router-link>

 通过设置 :to 属性来指定每个链接的目标路由,可以轻松实现页面间的跳转。其中:to中的name的值是router文件夹中的index.js中每个对应对应设置的name值。


总结

主要讲解了vue的下载、配置环境、项目创建、导航栏、页面整体框架!!!

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

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

相关文章

数据结构——单链表OJ题(上)

目录 一、移除链表元素 1.思路 2.注意 3.解题 二、反转链表 思路1&#xff1a;三指针翻转法 &#xff08;1&#xff09;注意 &#xff08;2&#xff09;解题 思路2&#xff1a;头插法 &#xff08;1&#xff09;注意 &#xff08;2&#xff09;解题 三、链表的中间结…

目标检测算法:深入探索与前沿展望

大家好&#xff0c;我是一名测试开发工程师&#xff0c;已经开源一套【自动化测试框架】和【测试管理平台】&#xff0c;欢迎大家联系我&#xff0c;一起【分享测试知识&#xff0c;交流测试技术】 在人工智能的浩瀚星空中&#xff0c;目标检测算法无疑是一颗璀璨的明星&#x…

uniapp的h5,读取本地txt带标签的文件

效果图 使用的回显的标签是u-parse&#xff0c;下面的网址讲了这个标签的相关 https://www.cnblogs.com/huihuihero/p/12978903.html 导入此插件 https://ext.dcloud.net.cn/plugin?id364 使用 uni.request({// 本地文件url: "/static/互联网医院医师端用户协议.txt…

开始尝试从0写一个项目--前端(三)

器材管理板块 添加器材管理导航 src\views\home\Home.vue src\router\index.js src\views\equipment\Equipment.vue <template><div>hello!</div></template> 测试 搜索导航分页查询 src\views\equipment\Equipment.vue <template><div&…

51.TFT_LCD液晶屏驱动设计与验证(4)

&#xff08;1&#xff09;顶层文件&#xff1a; module tft_colorbar(input clk ,input reset_n ,output hsync ,output vsync ,output [23:0] rgb_tft ,output tft_bl ,output …

LeetCode算法——滑动窗口矩阵篇

1、长度最小的子数组 题目描述&#xff1a; 解法&#xff1a; 设一个 for 循环来改变指向窗口末尾的指针&#xff0c;再不断抛弃当前窗口内的首元素 最终确定满足条件的最小长度 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int …

Python 教程(五):理解条件语句和循环结构

目录 专栏列表前言条件语句if 语句elif 语句else 语句示例 循环结构for 循环while 循环break 和 continue实例演示 循环控制语句range 函数enumerate 函数 模式匹配总结 在前四篇教程中&#xff0c;我们学习了 Python 的基本语法和数据结构。本篇教程&#xff0c;我们将深入探讨…

git sendemail使用

教程参考&#xff1a; git-send-email - 以电子邮件形式发送补丁集 1、安装git-email 2、配置 SMTP 服务器 git config --global sendemail.smtpserver smtp.163.com git config --global sendemail.smtpserverport 465 git config --global sendemail.smtpuser xxxxxx163.c…

【故障排查】Docker启动Nacos报错:No DataSource set 问题解决

Nacos报错内容 Nacos Server did not start because dumpservice bean construction failure : No DataSource set原因分析 Nacos 配置的是单机模式&#xff0c;使用mysql 进行存储配置文件&#xff0c;Nacos的启动脚本已经配置了MySQL的连接方式&#xff0c;根据错误提示&a…

大话成像公众号文章阅读学习(二)--- 下一代 AI-ISP会更好

系列文章目录 大话成像公众号文章阅读学习&#xff08;一&#xff09;---- 索尼Alpha 9 III 大话成像公众号文章阅读学习&#xff08;二&#xff09;— 下一代 AI-ISP会更好 文章目录 系列文章目录前言一、AI-ISP1.1 定义与工作原理1.2 应用场景 二、展望总结 前言 这篇是 下…

AWS-Lambda的使用

介绍 Lambda 是一种无服务器(Serverless), 而且设计成事件驱动的计算服务器. 简单来说, 你可以将你的 code 上传, 当有事件产生(例如cronjob , 或者S3有新的文件被上传上來) , 你的code 就会在瞬间(零点几秒以內)被叫起來执行. 由于你不用管 Server如何维护, 或者自动扩展之类…

【Android】安卓四大组件之广播知识总结

文章目录 动态注册使用BroadcastReceiver监听Intent广播注册Broadcast Receiver 静态注册自定义广播标准广播发送广播定义广播接收器注册广播接收器 有序广播修改发送方法定义第二个广播接收器注册广播接收器广播截断 使用本地广播实践-强制下线使用ActivityCollector管理所有活…

微信答题小程序产品研发-UI界面设计

高保真原型虽然已经很接近产品形态了&#xff0c;但毕竟还不能够直接交付给开发。这时就需要UI设计师依据之前的原型设计&#xff0c;进一步细化和实现界面的视觉元素&#xff0c;包括整体视觉风格、颜色、字体、图标、按钮以及交互细节优化等。 UI设计不仅关系到用户的直观感…

Scrapy 爬取旅游景点相关数据(四)

本节内容主要为&#xff1a; &#xff08;1&#xff09;创建数据库 &#xff08;2&#xff09;创建数据库表 &#xff08;3&#xff09;爬取数据进MYSQL库 1 新建数据库 使用MYSQL数据库存储数据&#xff0c;创建一个新的数据库 create database scrapy_demo;2 新建数据表 CR…

tensorflow2(快速入门)

版本问题 导包 import tensorflow as tf 加载数据 加载并准备 MNIST 数据集。将样本数据从整数转换为浮点数&#xff1a; mnist tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) mnist.load_data() x_train, x_test x_train / 255.0, x_test / 255.0 搭…

Redis:AOF持久化

1. 简介 以日志的形式来记录每个写操作&#xff0c;将redis执行的每个写操作记录下来&#xff08;读操作不记录&#xff09;&#xff0c;只需追加文件但不可以改写文件&#xff0c;redis启动之初会重新构建数据&#xff0c;即redis重启后会将日志中的所有写指令重新执行一遍以达…

WordPress主题追格企业官网主题免费开源版V1.1.6

追格企业官网主题免费开源版由追格开发的一款开源wordpress主题&#xff0c;专为企业建站和追格企业官网小程序&#xff08;开源版&#xff09;PC配套而设计&#xff0c;功能集新闻动态、留言反馈、产品与服务、公司简介、联系我们等模块。

Transformer,注意力机制。

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

QT总结——图标显示坑

最近写代码遇到一个神仙大坑&#xff0c;我都怀疑我软件是不是坏了&#xff0c;这里记录一下。 写qt工程的时候我们一般会设置图标&#xff0c;这个图标是窗体的图标同时也是任务栏的图标&#xff0c;但是我发现生成的exe没有图标&#xff0c;这个时候就想着给他加一个图标&…

前端开发知识(一)-html

1.前端开发需掌握的内容&#xff1a; 2.前端开发的三剑客&#xff1a;html、css、javascript Vue可以简化JavaScpript流程。 Element&#xff08;饿了么开发的&#xff09; &#xff1a;前端组件库。 Ngix&#xff1a;前端服务器。 3.前端开发工具&#xff1a;vscode 1)按…