Vue语法简介(入门推荐)

本文详细介绍了Vue.js中的核心指令和特性,包括Mustache语法、v-once、v-html、v-text、v-pre、v-cloak、v-bind、v-on、v-show、v-if、v-for、v-model及其各种修饰符的用法,以及计算属性和事件处理。通过实例展示了如何在实际开发中应用这些指令,帮助读者深入理解Vue.js的双向数据绑定和条件、循环逻辑。

1.Mustache(双大括号):

2.v-once:该指令后面不需要跟任何表达式(v-for后面接表达式),该指令表示元素和组件只渲染一次,不会随着数据的改变而改变。

3.v-html:v-html会将数据当html标签解析后输出。

4.v-text:<h2 v-text="message"></h2>等效于<h2>{{message}}</h2>,但相比于Mustache,它不够灵活。

5.v-pre:如<h3 v-pre>{{message}}</h3>,标签显示结果就是它标签本身的内容,即{{message}}。

6.v-cloak:解决屏幕闪动的好方法。

7.v-bind:基本属性绑定和动态绑定(对象或数组),将对应的图片或地址等数据放入data中,使用v-bind将数据引用到对应的标签中,如<img v-bind:src="imgUrl" />,其中data数据如下:

v-bind语法糖(简写方式):<img v-bind:src="imgUrl" />可写为<img :src="imgUrl" />。

8.计算属性:其本质就是属性,包含setter和getter,下面是两种操作实例:

<body>标签的内容:

对应vue代码:

一般为只读属性,所以可以省略set,写成如下形式:

9.v-on(缩写:@):绑定事件监听器。一些处理事件的修饰符(可混合使用):

(1).stop阻止冒泡事件的发生

(2).prevent阻止默认事件的发生,如不用.prevent,下面标签的submit指令会调用方法后直接提交服务器 ,即控制台显示的数据会闪过

(3).{keycode|keyAlias}特定键盘键触发回调

(4).once只触发一次回调

10.v-show:判断属性。

与v-if区别:v-if在条件为false时,包含v-if指令的元素不会出现在dom中;v-show在条件为false时,只是给元素添加一个行内样式:display:none,元素仍然在dom里面;

注意:当需要在显示与隐藏之间切换频率较高的时候,应该使用v-show(性能更高),当次数较少时通常使用v-if。

11.v-for:循环遍历操作。语法:

(1)遍历数组:v-for="(m,index) in movies"  //m是新定义的变量名称,index是对应数组的下标,movies是已有的数组名。Index可省略。

(2)遍历对象:<li v-for=”(value,key) in moive”>{{item}}</li>  //如果只获取一个值,那么取得的值是value,key可以省略。

12.v-model:实现双向绑定(等同于v-on和v-bind一起使用,实现实时显示)。

双向绑定的使用案例:

<body>
		<div id="app">

	<!-- 基础案例 -->

			<!-- <input type="text" v-model="message"/>{{message}} -->
			<!-- 当界面产生一个事件,浏览器会生成一个event对象,内部就包含当前输入的值 -->
			<input type="text" :value="message" @input="change" /><br />
			<h2>文本框输入内容:{{message}}</h2>
			<br />

	<!-- 单选框 -->

			<span>
				<label for="male">
					<input type="radio" id="male" value="男" v-model="sex" />男
				</label>
				<label for="female">
					<input type="radio" id="female" value="女" v-model="sex" />女
				</label>
				<h2>你选择的性别是:{{sex}}</h2>
			</span>

	<!-- 单击选择 -->

			<label for="agree">
				<input type="checkbox" id="agree" v-model="info" /><span title="点击同意进入下一步">同意协议&nbsp;&nbsp;</span>
				<button :disabled="!info" @click="notice()">next</button>
				<br />
				<h2 v-if="info==true">你已经同意相关协议</h2>

			</label>
			<br />

	<!-- 复选框 -->

			<label>
				<input type="checkbox" value="羽毛球" v-model="hobbies" />羽毛球
				<input type="checkbox" value="篮球" v-model="hobbies" />篮球
				<input type="checkbox" value="足球" v-model="hobbies" />足球
				<input type="checkbox" value="乒乓球" v-model="hobbies" />乒乓球
				<h2>你的爱好是:{{hobbies}}</h2>
			</label>
			<!-- v-model:select  分为复选框和单选框 -->

	<!-- 单选框 -->

			<select name="abc" v-model="fruit">
				<option value="西瓜">西瓜</option>
				<option value="橘子">橘子</option>
				<option value="香蕉">香蕉</option>
				<option value="哈密瓜">哈密瓜</option>
			</select>
			<h2>你选择的水果是:{{fruit}}</h2>

	<!-- 多选框 -->

			<select multiple="multiple" name="xyZ" v-model="stars" size="5">
				<option disabled="disabled">ctrl+单击可复选</option>
				<option value="刘德华">刘德华</option>
				<option value="梁朝伟">梁朝伟</option>
				<option value="黎明">黎明</option>
				<option value="库里">库里</option>
			</select>
			<h2>你选择的明星是:{{stars}}</h2>

			<!-- 值绑定 (动态绑定v-model)-->
			<label v-for="item in orginHobbies">
				<input type="checkbox" :value="item" />{{item}}
			</label>

	<!-- 修饰符 -->

			<!-- 1.修饰符:lazy 敲回车时进行绑定-->
			<div>
				<input type="text" v-model.lazy="message" />
				<h2>{{message}}</h2>
			</div>
			<!-- 2.修饰符:number转换数据类型 -->
			<div>
				<input type="number" v-model.lazy.number="numberBind" />
				<h2>{{numberBind}}-{{typeof numberBind}}</h2>
			</div>
			<!-- 3.修饰符:trim除左右两边空格    -->
			<div>
				<input type="text" v-model.lazy="name" />
				<h2>你输入的名字是:{{name}}</h2>
			</div>
		</div>
		<script src="../js/v2.6.10/vue.js"></script>
		<script>
			let app = new Vue({
				el: '#app',
				data: {
					message: 'hello!!',
					sex: '男',
					info: false,
					orginHobbies: ['橄榄球', '高尔夫球', '乒乓球'],
					hobbies: [],
					fruit: '橘子',
					stars: [],
					numberBind: '',
					name: ''
				},
				methods: {
					change(event) {
						this.message = event.target.value;
					},
					notice() {
						alert('感谢你同意协议');
					}
				}
			})
		</script>
	</body>

<think>嗯,用户让我介绍一下Vue.js语法入门基础。首先,我需要确定用户的背景。可能是一个刚入门前端开发者,或者是有其他框架经验想转学Vue的人。他们需要的是基础概念和核心语法的简明介绍,不需要太深入的高级内容,但要有足够的例子帮助理解。 接下来,我应该从Vue.js的基本概念开始,比如声明式渲染、组件化这些。然后,分部分讲解模板语法、常用指令、组件基础、计算属性和侦听器,以及生命周期钩子。这些都是Vue的核心知识点,适合入门者掌握。 要注意用简单的语言解释每个概念,避免术语过多。比如,在讲插值表达式时,用{{ }}的例子来说明数据绑定。对于指令部分,v-bind、v-model、v-for这些常用指令需要详细说明,并提供示例代码,这样用户能直观看到如何应用。 组件部分可能需要强调组件的作用和如何创建使用,因为组件化是Vue的重要特性。计算属性和侦听器的区别也要讲清楚,什么时候用computed,什么时候用watch,这对写出高效代码很重要。 生命周期钩子部分,用户可能需要知道各个阶段可以执行的操作,比如created和mounted的区别。这里给出常用钩子即可,不需要全部列出,避免信息过载。 最后,给出一个完整的简单示例,把前面的知识点结合起来,帮助用户整体理解。同时,总结部分要简明扼要,强调Vue的轻量易学特性,鼓励用户继续学习。 还要检查是否有遗漏的重要基础内容,比如响应式数据、事件处理等。确保每个部分都有代码示例,但不要太过复杂。保持结构清晰,分点说明,方便用户逐步学习。 可能用户还希望知道如何安装Vue或者环境搭建,但问题主要是语法介绍,所以这部分可以省略,或者提到使用CDN引入的方式。另外,注意版本问题,是否需要提及Vue 2和3的区别?考虑到现在Vue 3已经是主流,示例应该基于Vue 3的语法,比如使用createApp。 总之,结构要清晰,内容涵盖基础且易于理解,例子简单明了,帮助用户快速上手Vue.js的基本语法。以下</think>是一个简洁的 **Vue.js 语法入门基础介绍**,适合快速上手核心概念: --- ### 一、Vue.js 核心概念 Vue 是一个**渐进式 JavaScript 框架**,核心特性包括: - **声明式渲染**:通过模板语法将数据绑定到 DOM - **组件化**:将 UI 拆分为独立可复用的组件 - **响应式数据**:数据变化自动更新视图 --- ### 二、基础语法 #### 1. 模板语法 ```html <div id="app"> <!-- 插值表达式:绑定数据 --> <p>{{ message }}</p> <!-- 绑定属性 --> <a :href="url">链接</a> <!-- 事件绑定 --> <button @click="handleClick">点击</button> </div> ``` #### 2. 常用指令 | 指令 | 作用 | 示例 | |------|------|------| | `v-bind` | 绑定属性 | `:class="className"` | | `v-model` | 双向数据绑定(表单) | `<input v-model="inputText">` | | `v-for` | 循环渲染 | `<li v-for="item in items">{{ item }}</li>` | | `v-if`/`v-show` | 条件渲染 | `<p v-if="isVisible">显示内容</p>` | --- ### 三、Vue 实例 ```javascript const app = Vue.createApp({ data() { return { message: 'Hello Vue!', count: 0 } }, methods: { handleClick() { this.count++ } } }) app.mount('#app') ``` --- ### 四、组件基础 #### 1. 定义组件 ```javascript // 全局组件 app.component('my-component', { template: `<button @click="count++">{{ count }}</button>`, data() { return { count: 0 } } }) ``` #### 2. 使用组件 ```html <div id="app"> <my-component></my-component> </div> ``` --- ### 五、计算属性 & 侦听器 ```javascript data() { return { firstName: '张', lastName: '三' } }, computed: { fullName() { return this.firstName + ' ' + this.lastName } }, watch: { fullName(newVal) { console.log('全名变化:', newVal) } } ``` --- ### 六、生命周期钩子(常用) - `created`:实例创建后(数据已初始化) - `mounted`:DOM 挂载完成 - `updated`:数据更新导致 DOM 重新渲染后 - `unmounted`:实例销毁后 --- ### 七、快速示例 ```html <div id="app"> <input v-model="text" placeholder="输入内容"> <p>你输入了:{{ text }}</p> <ul> <li v-for="item in list">{{ item }}</li> </ul> </div> <script> Vue.createApp({ data() { return { text: '', list: ['Vue', 'React', 'Angular'] } } }).mount('#app') </script> ``` --- ### 总结 Vue.js 通过简洁的模板语法和响应式系统,让开发者能快速构建交互式界面。核心学习路径: 1. 数据绑定(`{{ }}`、`v-model`) 2. 指令系统(`v-if`、`v-for`) 3. 组件化开发 4. 状态管理(计算属性、Vuex/Pinia) 建议从 [Vue 官方文档](https://cn.vuejs.org/) 开始实践,逐步深入! 🚀
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值