Vue笔记-环境搭建、模板语法、计算属性、Class 与 Style 绑定

目录

环境搭建:

创建Vue项目

Vue 基础-模板语法

v-html

v-bind

表达式列举

条件directives(指令)

自定义directives

Vue基础-计算属性

computed vs methods

计算属性VS侦听属性

计算属性的setter

Class 与 Style 绑定


环境搭建:

安装node,npm,(npm -v 查看版本)

再安装cnpm:(sudo npm install -g cnpm --registry=https://registry.npm.taobao.org 淘宝镜像)

全局安装vue/cli : sudo cnpm install -g @vue/cli,vue -V 查看版本

创建Vue项目

vue create 项目名称

 到该目录下:cd vue-learn

 运行服务: npm run serve,(不需要额外设置就default回车)

成功:

 

  App running at:

  - Local:   http://localhost:8080

  - Network: http://192.168.3.59:8080/

 

  Note that the development build is not optimized.

  To create a production build, run npm run build.

Vue 基础-模板语法

基本组成:template(模板)+script+style(样式)

Template:一般有directives(指令)之类相关API:

v-html

(div v-html="html"></div>)HTML

应用:更新元素的innerHTML。注意,内容是作为普通HTML插入的——它们不会被编译为Vue模板。如果您试图使用v-html编写模板,请尝试通过使用组件来重新考虑解决方案。

动态地在您的网站上呈现任意的HTML是非常危险的,因为它很容易导致XSS攻击。只在受信任的内容上使用v-html,绝不在用户提供的内容上使用。)

v-bind

(div v-bind:id="id"></div>)属性,缩写为:id

.prop -绑定作为DOM属性而不是属性。(有什么区别?)

.camel -(2.1.0+)将the kebab-case属性名转换为camelCase。

.sync -(2.3.0+)一个语法糖,扩展成一个v-on处理程序,用于更新绑定值。

应用:将一个或多个属性或组件道具动态绑定到表达式。

当用于绑定类或样式属性时,它支持附加值类型,如数组或对象。

当用于道具绑定时,道具必须在子组件中正确声明。

不带参数使用时,可用于绑定包含属性名-值对的对象。注意,在此模式中,类和样式不支持数组或对象。

表达式列举

{{number+1}}、{{ok?`YES`:NO}}、

{{message.split(separator,howmany).reverse().join(‘’)}},(spilt:分割字符      串,reverse:转置数组,join:返回一个字符串,该字符串是通过把 arrayObject   的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入    separator 字符串而生成的。)

条件directives(指令)

v-if、v-else、v-else-if、v-show

if与show的差别:v-if是“真实的”条件呈现,因为它确保在切换期间正确地销毁和重             新创建条件块中的事件监听器和子组件。

v-if也是惰性的:如果条件在初始渲染时为false,那么它将不做任何事情——直到条件第一次变为true时,条件块才会被渲染。

相比之下,v-show要简单得多——元素总是在不考虑初始条件的情况下呈现,只使用简单的基于css的切换。

一般来说,v-if具有较高的切换成本,而v-show具有较高的初始渲染成本。所以,如果你需要经常切换某些东西,最好选择v-show,如果条件在运行时不太可能改变,最好选择v-if。

自定义directives

指令文件:

import Vue from "vue";

// 注册一个全局自定义指令

 

Vue.directive('custom',{

//只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。基于缓存

bind:function (el,binding) {

el.textContent = Math.pow(binding.value,2);//Math.pow返回value的2次幂

// var s=(binding.arg==='red'?'black':'red');

// el.style.color=s;

},

//所在组件的 VNode 更新时调用

update:function (el,binding) {

el.textContent = Math.pow(binding.value,3);

//var s=(binding.arg==='red'?'red':'black');

el.style.color=binding.arg;//为传入参数

}

//inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

//componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

//unbind:只调用一次,指令与元素解绑时调用。

})

/*el(可读可写):指令所绑定的元素,可以用来直接操作 DOM 。

binding:一个对象,包含以下属性:

name:指令名,不包括 v- 前缀。

value:指令的绑定值,例如:v-my-directive="1 + 1" 中,绑定值为 2。

oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。

expression:字符串形式的指令表达式。例如 v-my-directive="1 + 1" 中,表达式为 "1 + 1"。

arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 "foo"。

modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。

vnode:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。

oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。 */

template中的语句:<div v-custom:[color]='2'></div><!--color为了动态调整数据的传参-->

提醒:要在APP.vue中事先导入指令import './components/custom_directive.js'

Vue基础-计算属性

应用场景:具有依赖关系的数据监听

作用:将计算得到的属性混合到Vue实例中。所有的getter和setter都将其上下文自动绑定到Vue实例。

注意,不应该使用箭头函数来定义计算属性(例如aDouble: () => this)。a * 2).原因是arrow函数绑定了父上下文,所以这不是你所期望的Vue实例。a没有定义。

计算得到的属性被缓存,并且仅在响应性依赖项更改时重新计算。请注意,如果某个依赖项超出了实例的范围(即非响应性),则计算的属性将不会更新。

computed vs methods

计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。

计算属性VS侦听属性

当你有一些数据需要随着其它数据变动而变动时,你很容易滥用 watch

计算属性的setter

 下面这段是某教程上抄了一下的:

var vm = new Vue({ el: '#app', data: { name: 'Google', url: 'http://www.google.com' }, computed: { site: { // getter get: function () { return this.name + ' ' + this.url }, // setter set: function (newValue) { var names = newValue.split(' ') this.name = names[0] this.url = names[names.length - 1] } } } }) // 调用 setter, vm.name 和 vm.url 也会被对应更新 vm.site = 'zouzouzou; document.write('name: ' + vm.name); document.write('<br>'); document.write('url: ' + vm.url);

现在再运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。

Class 与 Style 绑定

https://cn.vuejs.org/v2/guide/class-and-style.html

例:

<div v-bind:class="obj">

我借你{{money}},你还我{{a}},还剩{{b}}

</div>

data(){}中添加:

obj:{

active:true,

isClass:false

},

最终class:active

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值