Vue框架案例学习

1.项目搭建

利用vite+ts框架进行搭建

npm create vite

启动项目

npm run dev

2.项目配置

①运行项目,浏览器自动打开

package.json

  "scripts": {"dev": "vite --open",}

②配置src文件夹的别名

在根目录下配置tsconfig.json文件

{"compilerOptions": {"baseUrl": "./", // 解析非相对模块的基地址,默认是当前目录"paths": { //路径映射,相对于baseUrl"@/*": ["src/*"] }}
}

③安装scss

npm install -D sass

④跨域请求配置

在根目录下配置vite-config.ts文件

export default defineConfig({plugins: [vue()],resolve: {alias: {"@": path.resolve("./src"), // 相对路径别名配置,使用 @ 代替 src},},server: {host: "localhost",port: 51741,proxy: {"/api": {// 实际请求地址target: " http://xxx",// 是否允许跨域,在本地会创建一个虚拟的服务器// 然后发送请求数据changeOrigin: true,ws: true,// rewrite: (path) => path.replace(/^\/api/, ""),},},},
});

3.项目框架

①main.ts入口文件

// 创建App
import App from "./App.vue";
const app = createApp(App);// 引入路由
import router from "./router";
app.use(router);// 引入仓库
import pinia from "./stores";
app.use(pinia);// 全局组件注册,以TypeNav为例
import TypeNav from "@/components/TypeNav/index.vue";
app.component("TypeNav", TypeNav);// App绑定
app.mount("#app");

②public文件夹

放置静态资源,css样式可在index.html中link引入

③src文件夹

1)api文件夹

封装请求接口,分为request.ts(封装拦截器)和index.js(封装接口,可进行二次拆分)

// request.ts// 对于axios进行二次封装
import axios from "axios";
import { error } from "console";
// 引入进度条
import nprogress from "nprogress";
import "nprogress/nprogress.css";const request = axios.create({// 基础路径,发请求时,路径出现apibaseURL: "/api",// 请求超时时间timeout: 5000,
});// 请求拦截器:发送请求前进行检测处理
request.interceptors.request.use((config) => {nprogress.start();return config;
});// 相应拦截器:服务器返回数据后进行检测处理
request.interceptors.response.use((res) => {nprogress.done();return res.data;},(error) => {return Promise.reject(new Error("faile"));}
);export default request;
// index.ts// 对API进行统一管理
import request from "./request";export const reqCategoryList = () => {return request({url: "/product/getBaseCategoryList",method: "get",});
};

2)components文件夹

放置非路由组件,按板块细分文件夹,每个文件夹封装对应index.vue文件

3)pages / views文件夹

放置非路由组件,可在路由组件配置,当跳转对应路由时显示

4)router文件夹

配置相对应路由

// 配置路由
import { createRouter, createWebHashHistory } from "vue-router";//引入路由组件
import Home from "@/pages/Home/index.vue";
import Search from "@/pages/Search/index.vue";let router = createRouter({history: createWebHashHistory(),routes: [{path: "/home",component: Home,meta: {show: true,},},{path: "/search",component: Search,meta: {show: true,},name: "search",}],scrollBehavior() {return {left: 0,top: 0,};},
});export default router;

5)stores文件夹

包含index.ts文件夹

import { createPinia } from "pinia";let pinia = createPinia();export default pinia;

每个板块再按需制定仓库

import { defineStore } from "pinia";export let useSearchStore = defineStore("SearchStore", {state: () => {return {count: 33,};},actions: {add() {this.count = this.count + 1;},},
});export default useSearchStore;

 4.部分功能实现

 1.路由跳转

1)编程式导航路由跳转

采用router-link的方式,添加to+地址

2)编程时导航路由跳转

// 方式一
const $router = useRouter()
$router.push('字符串跳转')// 方式二
const $router = useRouter()
$router.push('{"name":"search"},"query":{"id":"id"}')

2.事件委托

采用事件委托方式,给父组件添加点击按钮,给子组件添加自定义标签

获取自定义标签进行判断,注意标签都是小写形式!!

  let element = event.target// 获取当前事件的节点,需带有data-categoryname则是a标签// 节点有dataset属性,可以获取当前节点自定义属性与属性值let { categoryname, category1id, category2id, category3id } = element.dataset

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

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

相关文章

依赖的各种java库(工具类) :fastjson,lombok,jedis,druid,mybatis等

lombok 功能&#xff1a; Lombok 是一个实用的Java类库&#xff0c;可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码。 导入包&#xff1a;使用Lombok首先要将其作为依赖添加到项目中&#xff0c;在pom.xml文件中手动添加 <dependency><groupId&g…

提取COCO 数据集的部分类

1.python提取COCO数据集中特定的类 安装pycocotools github地址&#xff1a;https://github.com/philferriere/cocoapi pip install githttps://github.com/philferriere/cocoapi.git#subdirectoryPythonAPI若报错&#xff0c;pip install githttps://github.com/philferriere…

【CTF Web】CTFShow web5 Writeup(SQL注入+PHP+位运算)

web5 1 阿呆被老板狂骂一通&#xff0c;决定改掉自己大意的毛病&#xff0c;痛下杀手&#xff0c;修补漏洞。 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\…

判断视频moov的位置

前言 MP4文件由若干称为Atom&#xff08;或称为box&#xff09;的数据对象组成&#xff0c;每个Atom的起首为四个字节的数据长度&#xff08;Big Endian&#xff09;和四个字节的类型标识&#xff0c;数据长度和类型标志都可以扩展。Atom可以嵌套&#xff0c;即其数据域可以由…

24款奔驰S450升级原厂后排娱乐系统 主动氛围灯有哪些功能

24款奔驰S400豪华升级原厂主动氛围灯与后排娱乐系统&#xff1a;画蛇添足还是锦上添花&#xff1f; 在当今汽车市场竞争激烈的环境下&#xff0c;汽车制造商们为了满足消费者的多元化需求&#xff0c;不断推出各种升级配置和豪华版本。24款奔驰S400豪华版作为奔驰S级的一款重要…

听说部门来了个00后测试开发,一顿操作给我整麻了

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…

uniapp开发vue3监听右滑返回操作,返回到指定页面

想要在uniapp框架中监听左滑或者右滑手势&#xff0c;需要使用touchstart和touchend两个api&#xff0c;因为没有原生的左右滑监听api&#xff0c;所以我们只能依靠这两个api来获取滑动开始时候的x坐标和滑动结束后的x坐标做比对&#xff0c;右滑的话&#xff0c;结束时候的x坐…

飞速提升中文打字,Master of Typing in Chinese for Mac助你一臂之力

Master of Typing in Chinese for Mac是一款专为Mac用户设计的中文打字练习软件。其主要功能包括帮助用户提高打字速度和准确性&#xff0c;培养盲打技巧&#xff0c;使键盘输入更加高效。 打字速度提升&#xff1a;软件提供多种练习模式&#xff0c;如字母、特殊字符、单词和…

FPGA状态机设计详解

一.什么是状态机&#xff1f; 想象一下你正在玩一个电子游戏&#xff0c;角色有多种状态&#xff0c;比如“行走”、“跳跃”、“攻击”等。每当你按下不同的按键或者满足某些条件时&#xff0c;角色的状态就会改变&#xff0c;并执行与该状态对应的动作。这就是状态机的一个简…

Java 类加载和实例化对象的过程

1. 类加载实例化过程 当我们编写完一个*.java类后。编译器&#xff08;如javac&#xff09;会将其转化为字节码。转化的字节码存储在.class后缀的文件中&#xff08;.class 二进制文件&#xff09;。接下来在类的加载过程中虚拟机JVM利用ClassLoader读取该.class文件将其中的字…

GAW-1000D 微机控制钢绞线拉力试验机

一、整机外观图与示意图 外观示意图 性能说明&#xff1a; GAW-1000D型微机控制电液伺服钢绞线拉力试验机主要用于对预应力钢绞线进行抗拉强度测试。由宽调速范围的电液比例伺服阀与计算机及测控单元所组成伺服控制系统&#xff0c;能精确的控制和测量试验全过程。整机由主机…

Unity3D雨雪粒子特效(Particle System)

系列文章目录 unity工具 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、下雨的特效1-1.首先就是创建一个自带的粒子系统,整几张贴图,设置一下就能实现想要的效果了1-2 接着往下看视频效果 &#x1f449;二、下雪的特效&#x1f449;三、下雪有积雪的效果3-1 先把控…

docxtemplater避坑!!! 前端导出word怎么插入本地图片或base64 有完整示例

用docxtemplater库实现前端通过模板导出word&#xff0c;遇到需求&#xff0c;要插图片并转成word并导出&#xff0c;在图片转换这块遇到了问题&#xff0c;网上查示例大多都跑不通&#xff0c;自己琢磨半天&#xff0c;总算搞明白了。 附上清晰完整示例&#xff0c;供参考。 …

SpringCloudAlibaba:6.2RocketMQ的普通消息的使用

简介 普通消息也叫并发消息&#xff0c;是发送效率最高&#xff0c;使用最多的一种 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…

kafka生产者相关

kafka生产者相关 目录概述需求&#xff1a; 设计思路实现思路分析1.kafka 生产者分区策略2.kafka 生产者ISR3.生产者ACK机制4.生产者数据一致性问题5.kafka ExactlyOnce 问题 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfec…

vue的图片上传

关于vue3的图片上传&#xff0c;这里记录一下&#xff0c;有兴趣的朋友可以参考。。。。 <van-uploader:after-read"afterRead"v-model"headImg":max-count"1"class"picture"/> const fileList ref();const afterRead (fil…

【强化学习的数学原理-赵世钰】课程笔记(三)贝尔曼最优公式

目录 学习引用内容梗概1. 第三章主要有两个内容2. 第二章大纲 二.激励性实例&#xff08;Motivating examples&#xff09;三.最优策略&#xff08;optimal policy&#xff09;的定义四.贝尔曼最优公式&#xff08;BOE&#xff09;&#xff1a;简介五.贝尔曼最优公式&#xff0…

Effective C++(3)

3.资源管理 条款13&#xff1a;以对象管理资源 以对象管理资源对于传统的堆资源管理&#xff0c;我们需要使用成对的new和delete&#xff0c;这样若忘记delete就会造成内存泄露。因此&#xff0c;我们应尽可能以对象管理资源&#xff0c;并采用RAII&#xff08;Resource Acqu…

​银发经济:老龄化社会中的机遇与挑战

在21世纪&#xff0c;全球人口结构正经历着前所未有的变化&#xff0c;特别是老龄化现象逐渐凸显。这一趋势不仅对社会结构、经济发展产生深远影响&#xff0c;同时也催生了一个新的经济增长点——银发经济。所谓的银发经济&#xff0c;是指以满足老年人需求为主要目标的经济活…

专为汽车内容打造的智能剪辑解决方案

汽车内容创作已成为越来越多车主和汽车爱好者热衷的活动。然而&#xff0c;如何高效、便捷地将行车途中的精彩瞬间转化为高质量的视频作品&#xff0c;一直是困扰着广大用户的一大难题。美摄科技凭借其深厚的视频处理技术和智能分析能力&#xff0c;推出了专为汽车内容记录而生…