Vue整合

基础配置:

1.创建:cmd 中 输入 create vue vue_name

启动命令:npm run serve

2.当node_modules(依赖)丢失时通过 npm install 下载 【根据:package-lock.json下载】

3.下载路由 npm i vue-router@3.5.2 -S

Vue使用:

一.js中的区域:

a.data(){} :用于存放变量:除了布尔和数字外 都需要引号

b.methods:{} :用于存放一般的事件包括自定义的function

c.components:{} :用于注册组件

d.mounted(){} :生命周期,用于获取props,data,methods

e.computed:{} :用于计算渲染

f.filters:{} :用于过滤

g.watch: {} :用于监听

h.created(){} : 生命周期,用于获取数据

二.vue原生的渲染:

1.内容渲染指令:

a. v-text:用在标签中,覆盖原有内容

b. {{}}: 插值表达式,直接接收数据的一种方式

c.v-html:可以携带标签,识别标签

2.属性绑定指令:

v-bind:( 简写为 :)

3.事件绑定

a. v-on:click="" 或者 @click=""

b.事件的修饰符:Ⅰ.@click.prevent 阻止浏览器的默认行为

Ⅱ.@click.once 只触发一次事件

Ⅲ.@click.stop 阻止冒泡

4.双向数据绑定

a. v-model

b. v-model.number: 把内容转为数字类型

c. v-model.trim : 去除前后空格

d. v-model.lazy 失去焦点后触发同步

5.条件渲染指令

a. v-if v-else-if v-else条件判断

b.显隐: v-if:删除节点 达成显隐 更安全

v-show: 增加display-none

6.列表渲染指令

a. <tr v-for="(item,index) in mems" :key="item.id">

<td> {{index}}+{{item.id}}</td> </tr>

b. v-for 里写入索引index,以便在后端使用

c. key :主键,增加查询效率

7.过滤器

a. html使用 :<p>{{ message | upperStr | upperStr 3}}</p>

b. 在filters中使用: upperStr(val){} value为 message

8.监听器

a. html 使用: v-model="watch1

b. 在watch使用: watch1(nval,oval){}( nval 新的值;oval 旧的值 )

9.计算属性

a. html使用 {{rgb}

b. 在computed 使用 :

rgb(){

return `rgb({this.r},{this.g},${this.b})`;

}

  1. 在css中 scoped 会防止组件样式冲突

/deep/ h1{color: yellow; } /deep/ 样式穿透 影响子组件

三、组件的使用

1.组件的使用步骤:

a.创建组件

b.导入组件

import ZuJianName from '@/components/ZuJianName.vue';

c.注册组件

在computed 中 ZuJianName :ZuJianName ,

当组件名和变量名相同可以简写为ZuJianName

d.使用组件 :

<zu-jian-name></zu-jian-name> 小写,使用 - 拼接

2.路由占位符 : <router-view/>

  1. 多个组件只显示一个<component :is="ZuJianName "> </component>

4.父子传值(一个vue在另一个vue里)

父-》子

父:<zi-zu-jian-name :abc="msg"></zi-zu-jian-name >

子:prop接收:与data同级

a. props:['abc']

b. props:{ 'abc':String}

c. props:{abc:{ type:String, default:'ok!' //默认值}}

子-》父:

子:this.$emit('fangda',this.num)

父: html :<zi-zu-jian-name @fangda="handle()"></zi-zu-jian-name>

js: handle(val){ this.fs=val}

5.兄弟传值(没有关系)

a.创建向外界共享vue的js文件,与views同级

b. 传值的vue :

sendMsg(){ bus.$emit('share',this.msg)}

c.接收值的vue:

bus.$on('share',val=>{this.getmsg=val})

6.web缓存

存入:localStorage.setItem ('username',this.username) 页面关闭后数据还存在 不安全

sessionStorage.setItem ('username',this.username) 页面关闭后数据不存在 安全

获取:this.username= localStorage.getItem('username');

this.username= sessionStorage.getItem('username');

四、路由的使用

在路由下载后可使用:

  1. 导入依赖 当导入的依赖时node_modules 时直接写依赖的名称

import Vue from 'vue'

import VueRouter from 'vue-router'

2.导入页面组件 导入自己写的文件时必须使用相对路径

import Page1 from '../views/Page1.vue'

import Page2 from '@/views/Page2.vue' @是src文件

  1. 配置路由规则

a.重定向 :从一个vue直接跳到另一个vue

配置:

{

// 使用时路径,自己定义

//path: '/', 当进入是默认进入这个页面

path: '/page1',

// name自己定义

name: 'page1',

// 导入的页面组件名,与导入页面组件的名字一致

component: Page1

},

使用:

router-link 最终会渲染成a标签 to属性会渲染成href属性

<router-link to="/page2"> 跳转到page2</router-link>

b.嵌套路由 : 相当于在Page1里嵌套了Page2 两个都显示

{

path:'/page1',

// 当配置后无需导入组件

component:()=>import('../views/Page1.vue'),

// 子路径

children:[

// 已经在上面导入组件

{path:'page2',component:Page2}

]

}

使用:

<router-link to="/page1/page2"> 跳转到page2</router-link>

<router-view></router-view> 需要子路由的占位符,多个子路由只用一个占位符

4.跳转路由的其他方式

this.$router.push("/page2"); push:会增加一条历史记录

this.$router.replace("/page2"); replace:不会增加历史记录,而是替换当前的记录

this.$router.go(-1); go:历史记录的前进和后退

this.$router.forward(); forward:历史记录的前一个

this.$router.back(); back:历史记录的后一个

5.全局守卫:防止不经过登录,直接访问重要页面 在router里

to :将要访问的路由信息

from:将要离开的路由信息

next:函数

next():放行

next('/login'):代表没有权限,强制跳转

next(false):代表没有权限,也不强制跳转

router.beforeEach((to,from,next)=>{

//允许访问/跳转

// 如果

if(to.path=='/main'){

const username=sessionStorage.getItem('username');

if(username){

//允许访问/跳转

next();

}else{

// 不存在不允许访问,跳回登录页面

next('/login');}}else{ next();}})

补充:@1:生命周期

A。组件创建阶段 注意:方法按照顺序依次执行1次!!

beforeCreate:组件实例刚被创建,组件的 props/data/methods都不能使用

created:组件实例刚被创建,组件的 props/data/methods已创建好,处于可用状态。但是组件的模板结构尚未生成!

beforeMount:将要把内存中编译好的HTML结构渲染到浏览器中。此时浏览器中没有组件的DOM结构。

mounted:将要把内存中的HTML结构,渲染到了浏览器之中。

B。组件运行阶段 注意:数据源发生变化就会执行,执行多次!!

beforeUpdate:将要根据变化过后,最新的数据,重写渲染组件的模板结构。

updated:已经根据最新的数据,完成了组件DOM结构的重新渲染。

C。组件销毁阶段 注意:方法按照顺序依次执行1次!!

beforeDestroy:将要销毁此组件,此时尚未销毁,组件还处于正常工作的状态。

destroyed:组件已经销毁,此组件在浏览器中对应的DOM结构已被完全移除。

结论:

a。如果要在第一时间获取数据,应该在created里进行数据的获取。

b。如果要在第一时间进行dom的操作,应该在mounted方法里进行

相关推荐
崔庆才丨静觅3 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60614 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了4 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅4 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅4 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅5 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment5 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅5 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊5 小时前
jwt介绍
前端
爱敲代码的小鱼5 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax