VUE 四个常用选项

一、 VUE 四个常用选项

1. filter 过滤器

过滤就是一个数据经过了这个过滤之后出来另一样东西,可以从中取得你想要的,或者给那个数据添加点什么装饰,那么过滤器则是过滤的工具。例如,从[‘abc’,‘abd’,‘ade’]数组中取得包含‘ab’的值,那么可通过过滤器筛选出来‘abc’和‘abd’;把‘Hello’变成‘Hello World’,那么可用过滤器给值‘Hello’后面添加上‘ World’;或者把时间节点改为时间戳等等都可以使用过滤器。

语法1: {{ message | filterA | filterB }}

message 是作为参数传给filterA 函数,而filterA 函数的返回值作为参数传给filterB 函数,最终结果显示是由filterB 返回的。

{{2020|filterA|filterB}}
filters:{
filterA:function(value){
return value+"年"
},
filterB:function(value){
return value+"good luck!"
},

语法 2: {{ message | filterA(‘arg1’, arg2) }}

{{num|filter("10","22")}}
 filters:{
filter:function(value,arg1,arg2){
return value+ "-" + arg1 + "-" + arg2;
},
 }

语法 3 {{a,b,|filter}}

{{a,b,|filter}}
filters:{
 filter:function(value1,value2){
 return value1 + value2
}
}

2. computed 计算 [属性]

*内存*中取出值进行计算

<div id="example">
<p>Original message: "{{ message }}"</p>
<p>Computed reversed message: "{{ reversedMessage }}"</p> 
</div>
var vm = new Vue({
 el: '#example',
 data: {
 message: 'Hello'
 },
 computed: {
 // 计算属性的 getter
 reversedMessage: function () {
 // `this` 指向 vm 实例
 return this.message.split('').reverse().join('')
 }
 }
})

3. methods[方法]

methods 将被混入到 Vue 实例中。可以直接通过 app 实例访问这些方法,或者在指令表达式中使用。
方法中的 this 自动绑定为 Vue 实例不应该使用箭头函数来定义 method 函数 (例如 add: ()
=>this.a++)。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,
this.a 将是 undefined。

{{ a }}
<button v-on:click="add">1</button>
let vm = new Vue({
//挂载元素
el: '#app',
//实例 vm 的数据
data: {
a: 0
 },
methods: {
 add() {
return this.a++;
} }
});

内外交互访问

<body>
<h1>methods</h1>
<div id="app">
<p>a:{{a}}</p>
<p>
<button onclick="adds()">内部访问构造器外部的方法</button>
</p>
</div>
<button onclick="app.add()">外部访问构造器内部的方法</button>
<script>
function adds() {
app.a++;
}
var app = new Vue({
el: "#app",
data: {
a: 1
},
methods: {
add: function () {
this.a++;
}}
})
</script>
</body>

关于事件的处理—事件监听:可以用 v-on 指令监听 DOM 事件,并在触发时运行一些
JavaScript 代码。

<div id="example-1">
<button v-on:click="counter += 1">Add 1</button>
<p>The button above has been clicked {{ counter }} times.</p>
</div>
var example1 = new Vue({
el: '#example-1',
data: {
counter: 0
}
})

事件处理方法:许多事件处理逻辑会更为复杂,所以直接把 JavaScript 代码写在 von 指令中是不可行的。因此 v-on 还可以接收一个需要调用的方法名称。

div id="example-2">
<!-- `greet` 是在下面定义的方法名 -->
<button v-on:click="greet">Greet</button>
</div>
var example2 = new Vue({
el: '#example-2',
data: {
name: 'Vue.js'
},
// 在 `methods` 对象中定义方法
methods: {
greet: function (event) {
// `this` 在方法里指向当前 Vue 实例
alert('Hello ' + this.name + '!')
// `event` 是原生 DOM 事件
if (event) {
alert(event.target.tagName)
}}}
})

内联处理器中的方法:v-on 除了直接绑定到一个方法,也可以在内联 js 语句中调用方法:

<div id="example-3">
<button v-on:click="say('hi')">Say hi</button>
<button v-on:click="say('what')">Say what</button>
</div>
new Vue({
el: '#example-3',
methods: {
say: function (message) {
alert(message)
}}
})

⭐有时也需要在内联语句处理器中访问原始的 DOM 事件,可以用特殊变量 $event 把
它传入方法: 通过 event 可以获得一个 MouseEvent 对象,从而得到鼠标点击时所
在的位置,以及这个事件触发的后关于这个事件的信息。

<button v-on:click="warn('Form cannot be submitted yet.', $event)">Submit</button>
methods: {
warn: function (message, event) {
// 现在我们可以访问原生事件对象
if (event) event.preventDefault()
alert(message)
}
### Vue框架常用语法总结 Vue 是一款用于构建用户界面的渐进式 JavaScript 框架,其语法简洁、灵活且易于上手。以下是 Vue 框架常用语法的总结,涵盖了基础指令、数据绑定、事件处理、组件通信等方面。 #### 一、数据绑定与内容渲染 Vue 提供了多种方式将数据绑定到模板中,常见的指令包括: - `{{ }}`:插值表达式,用于将数据渲染为文本内容。例如:`<p>{{ message }}</p>` 会显示 `message` 的值。 - `v-text`:更新元素的 `textContent`,例如:`<p v-text="message"></p>`。 - `v-html`:更新元素的 `innerHTML`,可以渲染 HTML 内容,但需注意安全性问题,例如:`<div v-html="htmlContent"></div>`。 - `v-bind`:动态绑定属性,例如:`<img v-bind:src="imageUrl">` 或简写为 `:src="imageUrl"`。 #### 二、事件绑定与交互 Vue 提供了 `v-on` 指令用于监听 DOM 事件,并触发相应的 JavaScript 表达式: - `v-on:click="handleClick"` 或简写为 `@click="handleClick"`。 - 事件修饰符如 `.prevent`(阻止默认行为)、`.stop`(阻止事件冒泡)等可结合使用,例如:`@click.prevent="submit"`。 #### 三、条件渲染 Vue 提供了条件渲染指令,根据数据的状态决定是否渲染某个元素: - `v-if="condition"`:根据条件渲染元素。 - `v-else` 和 `v-else-if`:用于与 `v-if` 配合进行条件分支判断。 - `v-show`:通过 CSS 的 `display` 属性切换元素的显示状态,适用于频繁切换的场景。 #### 四、列表渲染 使用 `v-for` 指令可以对数组或对象进行循环渲染: - 基本用法:`<ul><li v-for="item in items">{{ item }}</li></ul>`。 - 可以获取索引值:`<li v-for="(item, index) in items">{{ index }}: {{ item }}</li>`。 - 推荐为 `v-for` 添加 `key` 属性以优化渲染性能,例如:`<li v-for="item in items" :key="item.id">{{ item }}</li>`。 #### 五、双向数据绑定 `v-model` 指令用于在表单元素与 Vue 实例之间建立双向绑定: - 常用于 `<input>`、`<textarea>` 和 `<select>` 等元素,例如:`<input v-model="message">`。 - 支持修饰符如 `.lazy`(失去焦点后更新)、`.number`(自动将输入值转为数字)、`.trim`(自动过滤首尾空格)等。 #### 六、计算属性与侦听器 - **计算属性**:使用 `computed` 属性定义依赖于其他数据的属性,具有缓存机制,适合复杂逻辑的计算,例如: ```javascript computed: { reversedMessage() { return this.message.split('').reverse().join(''); } } ``` - **侦听器**:使用 `watch` 监听数据变化并执行异步或复杂操作,例如: ```javascript watch: { question(newQuestion, oldQuestion) { if (newQuestion.includes('?')) { this.answer = 'Yes'; } else { this.answer = 'No'; } } } ``` #### 七、组件化开发 Vue 的核心特性之一是组件化开发,允许将 UI 拆分为独立、可复用的部分: - 定义组件: ```javascript const MyComponent = { template: `<div>这是一个组件</div>` }; ``` - 注册组件: ```javascript app.component('my-component', MyComponent); ``` - 使用组件:`<my-component></my-component>`。 - 组件间传值: - 父组件向子组件传递数据:通过 `props`。 - 子组件向父组件传递数据:通过 `$emit` 触发事件。 #### 八、Vue 3 的响应式语法 在 Vue 3 中,响应式数据可以通过 `ref` 和 `reactive` 创建: - `ref` 用于基本类型,访问值需要 `.value`,例如: ```javascript import { ref } from 'vue'; const count = ref(0); ``` - `reactive` 用于对象类型,直接操作属性,例如: ```javascript import { reactive } from 'vue'; const user = reactive({ name: 'John', age: 30 }); ``` #### 九、路由与状态管理 - **Vue Router**:用于管理前端路由,支持嵌套路由、动态路由匹配、参数传递等。 - **Vuex**:用于集中管理应用的状态,适用于大型项目中的状态共享。 #### 十、生命周期钩子 Vue 实例和组件具有多个生命周期钩子函数,允许在特定阶段执行代码: - `created`:实例创建完成后调用。 - `mounted`:DOM 挂载完成后调用。 - `updated`:数据更新后调用。 - `destroyed`:实例销毁前调用。 #### 十一、模板语法与指令扩展 - 自定义指令:通过 `directives` 选项定义自定义指令,例如: ```javascript app.directive('focus', { mounted(el) { el.focus(); } }); ``` #### 十二、Axios 与网络请求 Vue 通常与 Axios 结合使用来进行 HTTP 请求,支持 GET、POST 等方法,并可处理跨域请求: ```javascript import axios from 'axios'; axios.get('/api/data') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` #### 十三、Vue 与后端集成 Vue 可以与后端框架如 Spring Boot、Django、Node.js 等集成,实现前后端分离架构,通过 RESTful API 进行数据交互。 --- ### 示例代码 以下是一个简单的 Vue 3 示例,展示响应式数据与事件绑定: ```html <template> <div> <p>计数器:{{ count }}</p> <button @click="increment">增加</button> </div> </template> <script setup> import { ref } from 'vue'; const count = ref(0); const increment = () => { count.value++; }; </script> ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值