Vue框架(一)——Vue导读、Vue实例(挂载点el、数据data、过滤器filters)、Vue指令(文本指令v-text、事件指令v-on、属性指令v-bind、表单指令v-model)
Vue导读
- 1.Vue框架
vue是可以独立完成前后端分离式web项目的js框架- 三大主流框架之一:Angular、React、Vue
- vue:结合其他框架优点、轻量级、中文API、数据驱动、双向绑定、MVVM设计模式、组件化开发、单页面应用
- Vue环境:本地导入和cdn导入
- 2.Vue是渐进式js框架
- 通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目。
3.怎么使用vue
去官网下载然后导入
- <div id="app">
- {{ }}
- </div>
- <script src="js/vue.min.js"></script>
- <script>
- new Vue({
- el: '#app'
- })
- </script>
Vue实例
1、实例成员-挂载点 (el:实例) vue如何与html页面结构建立关联:挂载点
- <div id="wrap">
- {{ }}
- <hr>
- <div class="main">
- {{ }}
- </div>
- <hr>
- <div class="main">
- {{ }}
- </div>
- </div>
- <script src="js/vue.js"></script>
- <script>
- new Vue({
- el: '#wrap' // el表示挂载点
- })
- </script>
注意:(******)
- html和body不能作为挂载点
- 一个vue对象挂载点只能索引一个匹配结果,就算有几个类名取一样的,也是只能匹配第一个,所以挂载点一般用id标识。
- 一个页面中可以出现多个实例对应多个挂载点
- 实例只操作挂载点内部内容
js对象(字典)补充
- let b = 20;
- let dic = {
- a: 10, // 字典本身就是对象,key都是字符串形式可以省略引号
- b // 值为变量时,且与key同名,可以简写
- };
- console.log(dic)
2、实例成员-数据 (data:数据)
- 1.在实例成员data为vue环境提供数据,数据采用字典{}形式
- 2.显示数据的时候在插值表达式{{}}中,直接书写数据的key来访问数据
- 3.如果需要在外部获取数据可以通过接受实例的变量app(标签id值或者class值),访问实例成员(实例成员用$开头),间接访问到数据 app.$data.info
- 4.在外部获取数据也可以通过实例变量app(标签id值或者class值)直接访问数据 app.info
- 5.在vue实例内部的方法methods中,使用变量,this.info(this其实就相当于app)
- <div id="app">
- <!-- {{}}是插值表达式,中间出现的info是vue变量 -->
- <p>{{ info }}</p>
- <p>{{ info }}</p>
- <p>{{ num }}</p>
- <p>{{ arr }}</p>
- <p>{{ dic }}</p>
- </div>
- <script src="js/vue.js"></script>
- <script>
- let app = new Vue({ #取一个变量名app,方便外面取值
- el: '#app',
- data: {
- info: 'message',
- num: 100,
- result: true,
- arr: [1, 2, 3, 4, 5],
- dic: {
- name: 'Owen',
- age: 17.5
- }
- }
- })
- </script>
- <script>
- console.log(app);
- console.log(app.$data.info); #外部间接访问数据
- console.log(app.info); #外部直接访问数据
- </script>
3、实例成员-过滤器 (filters:过滤函数)
- 1.过滤器本身就是数据处理函数,可以将插值表达式中的数据作为参数进行处理,得到的函数返回值就是处理后的结果
- 2.过滤器的使用语法{{ ...变量 | 过滤器(...变量) }} #()里面的变量可以全部写在前面的变量中
- 3.过滤器在实例中用filters成员提供
- <div id="app">
- <!--插值表达式也可以直接做简单运算-->
- <p>{{num*2}}</p> #200
- <p>{{num | f1 }}</p> #101
- <p>{{10,20,30,40 | f2 }}</p> #100
- <p>{{10,20 | f2(30,40) }}</p> #100
- <p>{{ 120 | f2 }}</p> #NaN <!--120 undefined undefined undefined-->
- </div>
- <script src="js/vue.min.js"></script>
- <script>
- new Vue({
- el:'#app',
- data:{
- num:100
- },
- filters:{
- f1(num){
- return num+1
- },
- f2:function (a,b,c,d) {
- console.log(a,b,c,d);
- return a+b+c+d
- }
- }
- })
- </script>
注意:(******)
- 在插值表达式中可以用多种方式传值{{a,b,c,d | f2 }} ,也可以{{a,b,c | f2(d)}},等等,它们的结果都是一样的
- 定义函数可以直接写 函数名(){},可以不写 :function
Vue指令
1.文本指令 v-text/v-html
- 1.插值表达式同v-text 指令,渲染普通文本
- 2.v-html指令可以渲染有html语法的文本,能够解析html语法
- 3.文本指令中可以渲染变量也可以渲染常量
- <div id="app">
- <p>{{ info }}</p>
- <!--1)v-指令名="变量",变量是需要data提供数据值的 -->
- <p v-text="info"></p>
- <!--2)v-指令名="常量",常量采用常量基本的语法,数字与布尔类型等可以直接书写的直接书写,字符串等需要特殊符号的需要添加符号-->
- <p v-text=""></p>
- <p v-text="true"></p>
- <p v-text="'abc' + info"></p>
- <p v-text="[1, 2, 3]"></p>
- <!--3)v-html可以解析html语法-->
- <p v-html="`<b style='color:red'>好的</b>`"></p>
- <p v-text="'<b>好的</b>'"></p>
- </div>
- <script src="js/vue.js"></script>
- <script>
- new Vue({
- el: '#app',
- data: {
- info: 'data提供的数据',
- }
- })
- </script>
反引号补充
- 1.js多行字符串 反引号 ``
- 2.反引号字符串中可以直接填充变量,语法为`${变量名}`
- let s1=`第一行
- 第二行
- 结束行;
- `;
- console.log(s1);
- -----------------------
- let name='jason';
- let age=18;
- let s2=`
- name:${name}
- age:${age}
- `;
- console.log(s2)
2.事件指令 v-on (v-on重点需要记住是可以简写成@格式,并需要记住语法格式)
- 1.语法: v-on:事件名='函数名(参数们)'
- 2.简写: @事件名='函数名(参数们)'
- 3.用methods实例成员提供事件函数的实现
- 4.事件传参:函数名 | 函数名() | 函数名(自定义参数) | 函数名($event,自定义参数)
- <!DOCTYPE html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style>
- body {
- /*页面文本不允许选择*/
- user-select: none;
- }
- .low-num {
- cursor: pointer;
- }
- .low-num:hover {
- color: red;
- }
- </style>
- </head>
- <body>
- <div id="app">
- <!-- 事件指令:v-on:事件名="事件函数名" -->
- <p class="low-num" v-on:click="lowNum">
- <span>点击减一:</span>
- <span>{{ num }}</span>
- </p>
- <p v-on:dblclick="dblAction">双击</p>
- <!-- v-on:事件名="事件函数" 可以简写为 @事件名="事件函数" -->
- <p @mouseover="overAction()">悬浮</p>
- <p @mouseover="overAction(10)">悬浮1</p>
- <p @mouseover="overAction(10, 20)">悬浮2</p>
- <p @mouseover="overAction(10, 20, $event)">悬浮3</p>
- </div>
- </body>
- <script src="js/vue.js"></script>
- <script>
- let app = new Vue({
- el: '#app',
- data: {
- num: 99
- },
- methods: {
- lowNum: function () {
- // 在vue实例内部的方法中,使用变量
- // alert(this.num)
- this.num -= 1;
- },
- dblAction (ev) {
- // alert('双击事件');
- console.log(ev)
- },
- overAction(a, b, c) {
- console.log(a, b, c)
- }
- }
- })
- </script>
- </html>
- v-on:click='事件函数名' 鼠标点击事件
- v-on:dbclick='事件函数名' 双击事件
- v-mouseover='事件名函数' 鼠标悬浮事件
注意:(******)
- 事件的两种写法:
- 1. v-on:事件名='事件函数名'
- 2.@事件名='事件函数名'
- 事件传参的四种方法:
- 1.@事件 = '事件函数' 默认传入事件对象 $event
- 2.@事件 = '事件函数()' 不传递任何参数
- 3.@事件 = '事件函数(参数1,参数2,...)' 只传递自定义参数
- 4.@事件 = '事件函数($event,参数1,参数2...)' 自定义传参是传递事件对象
3.属性指令 v-bind (需要注意的是style、class属性设置)
- 1.语法: v-bind:属性名 = '变量'
- 2.简写 :属性名 = '变量'
- 3.单值属性绑定: :title='变量' | :id='变量' | :自定义属性='变量'
- 4.style属性绑定: :style='字典变量' | :style='{css属性1:变量1,...,css属性n:变量n}'
- 5.class属性绑定: :class='变量' | :class='[变量1,...,变量n]' | :class='{类名:布尔变量}'
- <!DOCTYPE html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8">
- <title>属性指令</title>
- <style>
- [index] {
- color: orange;
- }
- .ccc {
- background-color: yellowgreen;
- color: greenyellow;
- border-radius: 50%;
- }
- .ccc1 {
- background-color: yellowgreen;
- }
- .ccc2 {
- color: greenyellow;
- }
- .ccc3 {
- border-radius: 50%;
- }
- .ttt {
- background-color: gold;
- color: orange;
- }
- </style>
- </head>
- <body>
- <div id="app">
- <!--1) 语法:v-bind:属性名="变量" -->
- <p id="p1" class="p1" style="" title="" index="">属性指令1</p>
- <p id="p2" v-bind:class="p1" style="" title="" index="">属性指令2</p>
- <p v-bind:index="p1">自定义属性也可以被vue绑定1</p>
- <!--2) v-bind:属性名="变量" 简写 :属性名="变量" -->
- <p :index="p1">自定义属性也可以被vue绑定2</p>
- <p :title="'文本提示'">悬浮文本提示</p>
- <!--3) style样式属性绑定 -->
- <p :style="myStyle">样式绑定1</p>
- <p :style="{backgroundColor: c1, color: c2, 'border-radius': '50%'}">样式绑定2</p>
- <!--4) class类属性绑定 -->
- <p :class="myc1">样式绑定3</p>
- <p :class="[myc2,myc3,myc4,'bbb']">样式绑定4</p>
- <!--xxx是类名,是否起作用有布尔类型变量yyy值决定 -->
- <p :class="{xxx:yyy}">样式绑定5</p>
- <!--案例:点击切换类名是否起作用-->
- <p @click="clickAction" :class="{ttt:yyy}">点击切换类</p>
- </div>
- </body>
- <script src="js/vue.js"></script>
- <script>
- new Vue({
- el: '#app',
- data: {
- p1: 'q1',
- myStyle: { #style样式属性绑定
- backgroundColor: 'pink',
- color: 'deeppink',
- 'border-radius': '50%'
- },
- c1: 'cyan',
- c2: 'tan',
- myc1: 'ccc', #class类属性绑定
- myc2: 'ccc1',
- myc3: 'ccc2',
- myc4: 'ccc3',
- yyy: true, // false
- },
- methods: {
- clickAction() {
- this.yyy = !this.yyy;
- }
- }
- })
- </script>
- </html>
注意:style样式属性绑定、class类属性绑定
属性指令的用处:原来是一个属性,有固定的值,但是我们想这个属性值是可以动态变化的,所以就把这个属性变成变量,在属性名前面加:就行
动态修改文本样式案例
- <!DOCTYPE html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style>
- .box {
- width: 200px;
- height: 200px;
- background-color: orange;
- }
- .center {
- text-align: center;
- line-height: 200px;
- }
- .rcenter {
- text-align: right;
- line-height: 200px;
- }
- .right {
- text-align: right;
- }
- .top {
- line-height: 21px;
- }
- .bottom {
- line-height: calc(400px - 21px);
- }
- </style>
- </head>
- <body>
- <div id="app">
- <div class="box" :class="[c1, {right:r, top:t, bottom:b}]" @mouseover="a1" @mousedown="a2" @mouseup="a3" @mouseout="a4">{{ msg }}</div>
- </div>
- </body>
- <script src="js/vue.js"></script>
- <script>
- new Vue({
- el: '#app',
- methods: {
- a1(){
- this.msg = '被悬浮';
- // 正中
- this.c1 = 'center';
- this.r = 0;
- this.t = 0;
- this.b = 0;
- },
- a2(){
- this.msg = '被按下';
- // 右上
- this.r = 1;
- this.t = 1;
- this.b = 0;
- },
- a3(){
- this.msg = '被抬起';
- // 右中
- this.c1 = 'rcenter';
- this.r = 0;
- this.t = 0;
- this.b = 0;
- },
- a4(){
- this.msg = '被移开';
- // 右下
- this.r = 1;
- this.t = 0;
- this.b = 1;
- },
- },
- data: {
- msg: '',
- c1: '',
- r:0,
- t:0,
- b:0,
- }
- })
- </script>
- </html>
4、表单指令 v-model 设置属性值(******)
- 1.语法: v-model='控制value值的变量'
- 2. :value='变量' 直接绑定数据不会时时更新(修改表单标签值,值不会时时映射给绑定的变量)
- 3. v-model='变量' 绑定数据会时时更新(修改表单标签值,值会时时映射给绑定的变量)
- 4.单独复选框作为确认框时,v-model绑定的变量为布尔类型变量
- 5.多复选框,v-model绑定的变量值是一个列表(数组),存放复选框选项值(谁被选中就存放了谁)
- 6.单选框,v-model绑定的变量值是某一个选项的值(值是哪个选项的值,那个选项就被选中)
- <!DOCTYPE html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style>
- .p1 {
- width: 500px;
- height: 21px;
- background-color: orange;
- }
- </style>
- </head>
- <body>
- <div id="app">
- <form action="">
- <!--1) 对表单标签value进行绑定操作变量,不能时时检测绑定的变量-->
- <input class="inp1" type="text" :value="info">
- <input class="inp2" type="text" :value="info">
- <p class="p1">{{ info }}</p>
- <hr>
- <!--2) 表单标签的值由 v-model="变量" 来绑定控制,操作的还是value,但是拥有时时变量值的检测 -->
- <input class="inp1" type="text" v-model="info">
- <input class="inp2" type="text" v-model="info">
- <p class="p1">{{ info }}</p>
- <hr>
- <!-- 2) v-model操作单独复选框 - 确认框 -->
- 是否同意:<input type="checkbox" name="agree" v-model="isAgree">
- <!--是否同意:<input type="checkbox" name="agree" true-value="yes" false-value="no" v-model="isAgree">-->
- <p>{{ isAgree }}</p>
- <!-- 3) 单选框-->
- 性取向:
- 男 <input type="radio" name="sex" value="male" v-model="mysex">
- 女 <input type="radio" name="sex" value="female" v-model="mysex">
- 哇塞 <input type="radio" name="sex" value="others" v-model="mysex">
- <p>{{ mysex }}</p>
- <!-- 4) 复选框-->
- 兴趣爱好:
- 男 <input type="checkbox" name="hobbies" value="male" v-model="myhobbies">
- 女 <input type="checkbox" name="hobbies" value="female" v-model="myhobbies">
- 哇塞 <input type="checkbox" name="hobbies" value="others" v-model="myhobbies">
- <p>{{ myhobbies }}</p>
- <hr>
- <input type="submit">
- </form>
- </div>
- </body>
- <script src="js/vue.js"></script>
- <script>
- new Vue({
- el: '#app',
- data: {
- info: '',
- isAgree: 0,
- // isAgree: 'no',
- mysex: 'others',
- myhobbies: ['male', 'female']
- }
- })
- </script>
- </html>
Vue框架(一)——Vue导读、Vue实例(挂载点el、数据data、过滤器filters)、Vue指令(文本指令v-text、事件指令v-on、属性指令v-bind、表单指令v-model)的更多相关文章
- Vue框架(二)——Vue指令(v-once指令、v-cloak指令、条件指令、v-pre指令、循环指令)、todolist案例、Vue实例(计算、监听)、组件、组件数据交互
Vue指令 1.v-once指令 单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) <!DOCTYPE html> <html lang=" ...
- vue框架(一)
一.介绍 1.Vue是什么? Vue.js (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关 ...
- Vue框架初识01
摘要 vue简介 vue使用 一.Vue简介: 简介: Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 A ...
- VUE框架概括+模块语法使用(上)
vue是什么 官网(https://cn.vuejs.org/) Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计: Vue 的核心库只关注视图 ...
- Vue框架的介绍及使用
Vue框架 定义:渐进式 JavaScript 框架 渐进式:可以控制一个页面的一个标签,可以控制一系列标签,也可以控制整个页面,甚至可以控制整个前台项目. 通过对框架的了解与运用程度,来决定其在整个 ...
- 前端--vue框架
1.下载 查看已安装好的版本 -------渐进式的JS框架--------- vue是什么 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架 ...
- Vue框架H5商城类项目商品详情点击返回弹出推荐商品弹窗的实现方案
需求场景: 非推荐商品详情页返回的时候弹出弹窗推荐商品,点击弹窗按钮可以直接访问推荐商品: 只有直接进入商品详情页返回才会弹出推荐商品弹窗: 每个用户访问只能弹一次(除非清除缓存). 需求分析: 1. ...
- Vue框架基础02
摘要 条件指令 循环指令 评论案例 实例成员之computed 实例成员之watch 分隔符 组件:局部组件和全局组件 局部组件与全局组件之间信息传输 一.条件指令扩展 <!DOCTYPE ht ...
- Vue框架基础概要
Vue.js是什么? Vue.js(读音 /vjuː/,类似于 view 的读音)是一套构建用户界面(user interface)的渐进式框架.与其他重量级框架不同的是,Vue 从根本上采用最小成本 ...
- vue 框架,入门必看
vue 的 入门 el 的挂载点: el 是用来设置vue实例挂载,(管理)的元素 vue会管理el选项命中的元素以及内部的后代元素 可以使用其他的选择器,但是不建议使用ID选择器 可以使用其他的双标 ...
随机推荐
- 面向开发人员的Windows错误报告(WER)
Windows错误报告是更新的Windows XP上Dr.Watson的替代品.它监视故障并收集可以发送到要分析的服务器(如果用户允许)的有用信息.这项功能帮助微软修复了很多错误——由于收到的报告,微 ...
- 超实用文件监控多线程FTP上传工具
这是自己很久以前写的一个多线程FTP 上传工具,支持多账户,自定义线程数,自定义文件监控目录,可用做文件发布使用,非常实用,今天有小伙伴问起,现分享出来: using System; using Sy ...
- GSEA 基因集富集分析
http://software.broadinstitute.org/gsea/index.jsp GSEA(Gene Set Enrichment Analysis)是一种生物信息学的计算方法,用于 ...
- error: 'for' loop initial declaration used outside C99 mode的解决方法
for(int i = 0;i<10;i++)这样写循环时可能会出现如题编译错误,解决方法有两种,如下:1 将文件后缀名由".c"改为".cpp"2 in ...
- [原创]敏捷管理实践Scrum思维导图
[原创]敏捷管理实践Scrum思维导图
- 方法型混淆js代码
const fs = require('fs'); const acorn = require('acorn'); const walk = require("acorn-walk" ...
- 一句命令激活windows/office (https://03k.org/kms.html)
https://03k.org/kms.html 本站上线KMS服务~一句命令激活windows/office kissshot2015年11月1日 装机必备, 软件下载 240 条评论 服务器地址: ...
- javascript常用方法 - String
// 1.长字符串 // 1.1 let longString1 = "This is a very long string which needs " + "to wr ...
- 爬虫数据提取之JSON与JsonPATH
数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...
- centos7.5系统elasticsearch使用滚动和全新安装升级到最新的elasticsearch7.4.2版本
背景: 生产环境大量使用 elasticsearch 集群,不同的业务使用不同版本的elasticsearch es经常曝出一些大的漏洞,需要进行版本升级,并且使用x-pack的基本验证功能,避免用户 ...