vue基础知识点
首先介绍用 HTML 写结构 + script 里写 Vue,不需要环境
1.差值表达式{{ }}
<! DOCTYPE html >
< html>
< head> < meta charset = " UTF-8" > < title> Hello Vue</ title> < script src = " https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js" > </ script>
</ head>
< body> < div id = " app" > {{ message }}</ div> < script> new Vue ( { el : '#app' , data : { message : 'Hello Vue!' } } ) ; </ script>
</ body>
</ html>
代码 作用 <div id="app">
页面上定义一个区域,Vue 会控制这个区域 {{ message }}
插值表达式,显示 data
中的变量 message
的值 new Vue({...})
创建一个 Vue 实例(最核心的部分) el: '#app'
让 Vue 接管 id="app"
的 HTML 部分(#为id) data: { message: ... }
定义数据,Vue 会自动和页面绑定
2.属性绑定 v-bind(简写为 :)
<! DOCTYPE html >
< html>
< head> < meta charset = " UTF-8" > < title> v-biuld</ title> < script src = " https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js" > </ script>
</ head>
< body> < div id = " app" > < img :src = " imageUrl" alt = " 示例图片" > </ div> < script> new Vue ( { el : '#app' , data : { imageUrl : 'https://vuejs.org/images/logo.png' } } ) ; </ script>
</ body>
</ html>
代码 作用 :src="imageUrl"
动态绑定图片地址,等价于 v-bind:src
imageUrl
是你在 data
中定义的变量,比如图片地址 使用场景 动态图片、链接、class 等都可用 v-bind
3. 事件处理 v-on:click(简写为 @click)
<! DOCTYPE html >
< html lang = " en" >
< head> < meta charset = " UTF-8" > < meta name = " viewport" content = " width=device-width, initial-scale=1.0" > < title> 事件处理</ title> < script src = " https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js" > </ script>
</ head>
< body> < div id = " app" > < button @click = " count++" > 你点了 {{ count }} 次</ button> </ div> < script> new Vue ( { el : '#app' , data : { count : 0 } } ) ; </ script> </ body>
</ html>
代码 作用 @click="count++"
当按钮被点击时,变量 count
自动加一 {{ count }}
实时显示点击次数(插值表达式)
4. 双向绑定 v-model
<! DOCTYPE html >
< html lang = " en" >
< head> < meta charset = " UTF-8" > < meta name = " viewport" content = " width=device-width, initial-scale=1.0" > < title> 事件处理</ title> < script src = " https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js" > </ script>
</ head>
< body> < div id = " app" > < input v-model = " name" placeholder = " 输入你的名字" > < p> 你好,{{ name }}</ p> </ div> < script> new Vue ( { el : '#app' , data : { name : '' } } ) ; </ script>
</ body>
</ html>
代码 作用 v-model="name"
让输入框和 name
数据双向同步 {{ name }}
实时显示你输入的内容 场景 表单、输入框、下拉框等都可以用 v-model
5. 条件渲染 v-if
<! DOCTYPE html >
< html lang = " en" >
< head> < meta charset = " UTF-8" > < meta name = " viewport" content = " width=device-width, initial-scale=1.0" > < title> 事件处理</ title> < script src = " https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js" > </ script>
</ head>
< body> < div id = " app" > < button @click = " show = !show" > 切换显示</ button> < p v-if = " show" > 你现在能看到这句话。</ p> < p v-else > 你现在看不到原来的那句话了。</ p> </ div> < script> new Vue ( { el : '#app' , data : { show : true } } ) ; </ script> </ body>
</ html>
代码 作用 v-if="show"
当 show
是 true
时,显示这段文字 @click="show = !show"
点击按钮会让 show
变成相反值,达到隐藏/显示的效果
6. 列表渲染 v-for
<! DOCTYPE html >
< html lang = " en" >
< head> < meta charset = " UTF-8" > < meta name = " viewport" content = " width=device-width, initial-scale=1.0" > < title> 事件处理</ title> < script src = " https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js" > </ script>
</ head>
< body> < div id = " app" > < ul> < li v-for = " fruit in fruits" > {{ fruit }}</ li> </ ul> </ div> < script> new Vue ( { el : '#app' , data : { fruits : [ '苹果' , '香蕉' , '橘子' ] } } ) ; </ script> </ body>
</ html>
代码 作用 v-for="fruit in fruits"
遍历数组 fruits
{{ fruit }}
显示每一项的值 场景 渲染列表、表格、选项等
7. 计算属性 computed
<! DOCTYPE html >
< html lang = " en" >
< head> < meta charset = " UTF-8" > < meta name = " viewport" content = " width=device-width, initial-scale=1.0" > < title> 事件处理</ title> < script src = " https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js" > </ script>
</ head>
< body> < div id = " app" > < input v-model = " firstName" > +< input v-model = " lastName" > < p> 全名是:{{ fullName }}</ p> </ div> < script> new Vue ( { el : '#app' , data : { firstName : '张' , lastName : '三' } , computed : { fullName ( ) { return this . firstName + this . lastName; } } } ) ; </ script> </ body>
</ html>
代码 作用 v-model="firstName"
输入名字 v-model="lastName"
输入姓氏 computed.fullName
自动计算并返回全名 优势 当依赖的数据变化时,自动重新计算,无需手动调用函数
值得注意的是computed里的函数实际上是一种简写,完整如下:
fullName: function() {return this.firstName + this.lastName;
}
这是因为JavaScript 从 ES6 开始,支持对象方法 的简写写法,即对象作为方法名,返回的直接作为对象的内容
总结
Vue 指令/语法 含义 示例 {{ data }}
插值语法,显示数据值 <p>{{ name }}</p>
v-bind
or :
绑定 HTML 属性 <img :src="imageUrl">
@click
绑定点击事件 <button @click="do()">
v-model
双向数据绑定 <input v-model="name">
v-if/v-else
条件显示/隐藏 <p v-if="isVisible">
v-for
遍历数组,渲染列表 v-for="item in items"
Vue进阶
前置知识
模块化开发:大程序拆成多个小模块,每个模块完成特定功能,最终组合起来构建完整应用。在 Vue 中,每个 .vue 文件就是一个模块(组件模块) Vue CLI 与 Vite 这两者是 Vue 项目的两种构建工具:
特性 Vue CLI Vite 技术年代 较早(Webpack) 较新(基于原生 ES 模块) 编译速度 慢(初始构建慢) ⚡ 极快(冷启动秒开) 配置复杂度 高 低,开箱即用 推荐使用 Vue2 项目 Vue3 项目官方推荐
my-project/
├── public/ # 静态资源
├── src/
│ ├── main.js # 入口文件
│ ├── App.vue # 根组件
│ └── components/
├── package.json # 项目信息 & 依赖
Node.js 环境:一个 运行 JavaScript 的服务器端环境;让你在本地运行 npm 命令来安装和运行项目;不是 Vue 专属,是前端工具生态的底层。
创建vue
1.环境配置请见其他博客 2.在代码文件夹输入
vue create test2
选择vue版本 这时会出现如下文件夹和终端信息 输入下面代码,是运行整个文件用的
npm run serve
进入Local,出现这个页面就是成功了。