vue基本语法 JS补充

1|0一、VUE框架入门

1|11. vue框架的优势

  • 前端框架有:angular,react,vue
  • vue有前面两发框架的优势,去除了他们的缺点,但没有前面俩个框架健全。
  • vue的优点:中文的API,单页面应用、组件化开发、数据双向绑定、虚拟DOM、数据驱动思想(相比于原生JS的DOM驱动)
    • 数据驱动思想:即采用变量来替代原来的各种原生DOM操作,且变量是保存在内存中,即我们进行的是虚拟DOM,这样不但减少了IO操作,还提高了网页的浏览效率,降低了服务端压力。

2|0二、VUE框架的基本使用

2|11. vue的引用

  • Bootstrap一样,vue也是需要下载后导入到要编辑的html页面中使用
    • vue的导入:
      • 官方文档下载
      • 通过script标签导入vue.js环境
      • 通过el挂载

2|22. vue的基本语法结构

  • 注意:vue 不能挂载body标签和html标签
<script> new Vue({ el: '#app', // el 用来挂载标签,挂载标签后,该标签内的所有子标签中的变量都可以找到。一般一个页面只挂载一个标签 注意:vue 不能挂载body标签和html标签 data: { msg: 'message', // data 用来给页面上的变量赋值,格式是:变量名:变量值 (变量名不需要加双单引号,除非当表里名时关键字,要加双单引号) }, methods: { // method 用来书写方法, pClick: function () { this.msg = '信息' } } }) </script>

2|32. 插值表达式

<!--语法--> {{ }} // 例子: <!--为空时--> <p>{{ }}}</p> <!--有值时--> <p>{{ 变量名 }}}</p>
  • 当双大括号内为空时,双大括号中间必须要有一个空格,不然会当做普通文本渲染成{{}},有空格才会正常被解析。

2|43. 文本指令

  • 文本指令指的是,我们赋给变量的值是被解析成html格式数据,还是解析成普通文本,以及解析的次数。

1|0(1)v-text

  • 不能解析html语法的文本,会原样输出
<p v-text="info"></p> <!--最后浏览器上展示的是 <i>info</i> --> <script> new Vue({ el: '#app', data: { info: '<i>info</i>' }, }) </script>

1|0(2)v-html

  • 能解析html语法的文本
<p v-html="info"></p> <!--最后浏览器上展示的是斜体的 info --> <script> new Vue({ el: '#app', data: { info: '<i>info</i>' }, }) </script>

1|0(3)v-once

  • 处理的标签内容只能被解析一次
<p v-on:click="pClick" v-once>{{ msg + info }}</p> <!--此处在浏览器上展示的内容始终是 message我们的 ,因为在浏览器第一次展示时,就已经解析过一次该文本了,所以之后无论发生什么变化,msg + info 的值都是显示最初的值--> <script> new Vue({ el: '#app', data: { msg: 'message', info: '我们的' }, methods: { pClick: function () { this.msg = '信息' } } }) </script>

2|54. 方法指令

  • 方法指令是指在标签中绑定的各种事件

1|0(1)v-on:事件="变量名"

  • 方法指令可以简写成:

    • @事件="变量名"
    • @事件="变量()"
    • @事件="变量($event, ...)"
  • 当变量名不加括号时,vue会自动传一个参数:事件对象($event

  • 当变量名加括号时,代表自定义传参,系统不再自动传入事件对象,但我们也可以手动传。

  • 事件绑定后,在vuemethods中进行书写事件的内容。

  • 下面包含点击事件(click),鼠标悬浮事件(mouseover)和鼠标移动(mousemove)、鼠标离开事件(mouseout)、鼠标按下不放事件(mousedown)、鼠标抬起事件(mouseup

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="app"> <!-- 事件指令: v-on:事件名="方法变量" 简写: @事件名="方法变量" --> <p v-on:click="f1">{{ msg }}</p> <p @click="f1">{{ msg }}</p> <hr> <!--mouseover mouseenter | mouseout mouseleave--> <p @mouseover="f2" @mouseout="f3" @mouseup="f5" @mousemove="f6" @contextmenu="f7">{{ action }}</p> <hr> <!-- 事件变量,不添加(),默认会传事件对象: $event --> <!-- 事件变量,添加(),代表要自定义传参,系统不再传入事件对象,但是可以手动传入事件对象 --> <p @click="f8($event, '第一个')">{{ info }}</p> <p @click="f8($event, '第二个')">{{ info }}</p> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: '#app', data: { msg: '点击切换', action: '鼠标事件', info: '确定点击者' }, methods: { f1 () { this.msg = '点击了' }, f2 () { this.action = '悬浮'; console.log('悬浮') }, f3 () { this.action = '离开' }, f4 () { this.action = '按下' }, f5 () { this.action = '抬起' }, f6 () { this.action = '移动'; console.log('移动') }, f7 () { this.action = '右键'; }, f8 (ev, argv) { console.log(ev, argv); this.info = argv + '点击了'; } } }) </script> </html>

2|65. 属性指令

1|0(1)v-bind:属性名="变量名"

  • 属性指令也可简写成: :属性名="变量名"

  • 属性指令可以对标签添加任意的属性

    • 添加普通属性::title="t1"

    • 添加类属性::class="c1" 或 :class="[c1, c2]" 或 :class="['c1', c2]" 或 :class="{c1: true}"

      • 上面的添加类属性时,若变量名被双单引号引住时,那么在vue中,不用再对该变量进行赋值,该变量的变量值就是它本身,可以直接使用
      • 上面添加类属性的最后一种方式表示当c1对应的是true时,c1类生效,当c1对应的是false时,c1类不生效
    • 添加样式属性::style="s1" 或 :style="{color: c1, fontSize: f1}"

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title></title> <style> .d1 { width: 200px; height: 200px; background-color: orange; } .d2 { border-radius: 50%; } .d3 { border-radius: 20%; } </style> </head> <body> <div id="app"> <!--属性指令: v-bind:属性名="变量" 简写: :属性名="变量" --> <p style="color: red" class="dd1" abc="def" title="悬浮提示">红色字体</p> <!--1、简单使用--> <p v-bind:title="pTitle" :abc="def" @click="changeImg">简单使用</p> <!--<img :src="img_src" alt="">--> <!--2、class属性绑定--> <!--c1变量的值就是类名--> <p :class="c1"></p> <!--多类名可以用[]语法,采用多个变量来控制--> <p :class="[c2, c3]"></p> <!--选择器位可以设置为变量,也可以设置为常量--> <p :class="['d1', c4]"></p> <!--{类名: 布尔值}控制某类名是否起作用--> <!--<p :class="{x1: false}"></p>--> <!--多种语法混用 *****************类似开关灯示例***********************--> <p :class="['d1', {d2: is_true}]" @click="is_true = !is_true"></p> <!--3、style属性绑定(了解)--> <p :style="myStyle">样式属性</p> <p :style="{width: w,height: h, backgroundColor: bgc}">样式属性</p> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: '#app', data: { pTitle: '简单使用', def: '自定义属性', img_src: 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3819296004,574391848&fm=26&gp=0.jpg', c1: 'd1 d2', c2: 'd1', c3: 'd3', c4: 'd3', is_true: true, myStyle: { width: '100px', height: '100px', backgroundColor: 'red' }, w: '200px', h: '100px', bgc: 'green' }, methods: { changeImg() { this.img_src = 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1371195756,4187769521&fm=26&gp=0.jpg' } } }) </script> </html>

2|76. 斗篷指令

  • 斗篷指令的作用是防止页面闪烁。因为,代码的加载和解析是从上到下的,有时候,标签中的内容有些需要vue加载完后才会展示出来,这使,就可能出现页面闪烁。
  • 斗篷指令原理:当加载到让含有v-cloak的标签时,先进行隐藏,等其中的vue相关执行完后,再进行展示。
  • 用法
<style type="text/css"> [v-cloak] { display: none; } </style> <div id="app" v-cloak> {{ msg }} </div> <script src="js/vue.min.js"></script> <script type="text/javascript"> new Vue({ el: "#app", data: { msg: "message" } }) </script> <!-- 避免页面闪烁-->

3|0三、JS补充

  • 箭头函数和function普通函数和面向对象的方法之间的区别

3|11. 首先他们的定义方式不同

// 普通function函数 function f1() { console.log("Hello world!"); } // 箭头函数 var 函数名 = (形参) => 返回值 // 如 var f = () => 5; // 面向对象的方法(如下 fn) methods: { fn () { // axios插件 let _this = this; this.$axios({ url: '', method: 'get', data: { }, }) } }

3|22. 他们内部的this方法作用不同

  • 箭头函数内部的this方法会去找他的上一级的对象(如本箭头函数为ffobj1.obj2.ff ,那么ff内部的this就是obj1
  • 普通function函数和面向对象的方法内部的this方法会去从当前往上面找,找到一个对象就停下(即这两个的this表示调用本函数或本方法的对象)。

__EOF__

本文作者BigSun丶
本文链接https://www.cnblogs.com/Mcoming/p/12051384.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   BigSun丶  阅读(191)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示