vue devtools面板没有显示_vue 基础入门(四)

vue 基础入门(四)

1.全局配置

  • Vue.config 是一个对象,包含 Vue 的全局配置。可以在启动应用之前修改下列 property:

1.1 silent

  • 类型:boolean

  • 默认值:false

  • 用法:

Vue.config.silent = true

取消 Vue 所有的日志与警告。

1.2 devtools

  • 类型:boolean

  • 默认值:true (生产版为 false)

  • 用法:

// 务必在加载 Vue 之后,立即同步设置以下内容
Vue.config.devtools = true

配置是否允许 vue-devtools 检查代码。开发版本默认为 true,生产版本默认为 false。生产版本设为 true 可以启用检查。

1.3 errorHandler

  • 类型:Function

  • 默认值:undefined

  • 用法:

Vue.config.errorHandler = function (err, vm, info) {
  // handle error
  // `info` 是 Vue 特定的错误信息,比如错误所在的生命周期钩子
  // 只在 2.2.0+ 可用
}

指定组件的渲染和观察期间未捕获错误的处理函数。这个处理函数被调用时,可获取错误信息和 Vue 实例。

从 2.2.0 起,这个钩子也会捕获组件生命周期钩子里的错误。同样的,当这个钩子是 undefined 时,被捕获的错误会通过 console.error 输出而避免应用崩溃。

从 2.4.0 起,这个钩子也会捕获 Vue 自定义事件处理函数内部的错误了。

从 2.6.0 起,这个钩子也会捕获 v-on DOM 监听器内部抛出的错误。另外,如果任何被覆盖的钩子或处理函数返回一个 Promise 链 (例如 async 函数),则来自其 Promise 链的错误也会被处理。

错误追踪服务 Sentry 和 Bugsnag 都通过此选项提供了官方支持。

1.4 warnHandler

  • 类型:Function

  • 默认值:undefined

  • 用法:

Vue.config.warnHandler = function (msg, vm, trace) {
  // `trace` 是组件的继承关系追踪
}

为 Vue 的运行时警告赋予一个自定义处理函数。注意这只会在开发者环境下生效,在生产环境下它会被忽略。

1.5 ignoredElements

  • 类型:Array

  • 默认值:[]

  • 用法:

Vue.config.ignoredElements = [
  'my-custom-web-component',
  'another-web-component',
  // 用一个 `RegExp` 忽略所有“ion-”开头的元素
  // 仅在 2.5+ 支持
  /^ion-/
]

须使 Vue 忽略在 Vue 之外的自定义元素 (e.g. 使用了 Web Components APIs)。否则,它会假设你忘记注册全局组件或者拼错了组件名称,从而抛出一个关于 Unknown custom element 的警告。

1.6 keyCodes

  • 类型:{ [key: string]: number | Array }

  • 默认值:{}

  • 用法:

Vue.config.keyCodes = {
  v: 86,
  f1: 112,
  // camelCase 不可用
  mediaPlayPause: 179,
  // 取而代之的是 kebab-case 且用双引号括起来
  "media-play-pause": 179,
  up: [38, 87]
}
"text" @keyup.media-play-pause="method">

给 v-on 自定义键位别名,给键位数字定义别名。

1.7 performance

  • 类型:boolean

  • 默认值:false (自 2.2.3 起)

  • 用法:

设置为 true 以在浏览器开发工具的性能/时间线面板中启用对组件初始化、编译、渲染和打补丁的性能追踪。只适用于开发模式和支持 performance.mark API 的浏览器上。

1.8 productionTip

  • 类型:boolean

  • 默认值:true

  • 用法:

设置为 false 以阻止 vue 在启动时生成生产提示。

2.全局 API

2.1 Vue.extend

  • Vue.extend( options )

  • 参数:

{Object} options

  • 用法:

使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。

data 选项是特例,需要注意 - 在 Vue.extend() 中它必须是函数

  • 示例
<div id="mount-point">div>
// 创建构造器
var Profile = Vue.extend({
  template: '

{{firstName}} {{lastName}} aka {{alias}}

',
  data: function () {
    return {
      firstName: 'Walter',
      lastName: 'White',
      alias: 'Heisenberg'
    }
  }
})
// 创建 Profile 实例,并挂载到一个元素上。
new Profile().$mount('#mount-point')

结果如下:

<p>Walter White aka Heisenbergp>

总结 使用extend扩展一些通用组件,如 confirm 功能组件

2.2 Vue.nextTick

  • Vue.nextTick( [callback, context] )
  • 参数:
{Function} [callback]
{Object} [context]
  • 用法:

在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

  • 示例
const NextTick = {
  data() {
    return { msg: 'nextTick' };
  },
  template: `

    nextTick 使用
`,
  mounted() {
    // 正常执行
    console.log(1);
    // 宏任务
    setTimeout(() => {
      console.log(2);
    });
    const p = new Promise((resolve, reject) => {
      resolve('succ');
    });
    // 微任务
    p.then((res) => {
      console.log(3);
    });
    // nextTick
    this.$nextTick(() => {
      console.log(4);
    });
    // 输出结果 1 3 4 2
    //  nextTick 宏任务2之前,执行
  }
};

总结

  1. 若果想在 dom 更新后做一些操作可以使用nextTick
  2. Vue 在内部对异步队列尝试使用原生的 Promise.thenMutationObserversetImmediate,如果执行环境不支持,则会采用 setTimeout(fn, 0) 代替。在支持环境下,优先使用Promise.then实现, 这时nextTick是属于微任务参考[1]

2.3 Vue.set

  • Vue.set( target, propertyName/index, value )

  • 参数:

{Object | Array} target
{string | number} propertyName/index
{any} value
  • 返回值:设置的值。

  • 用法:

向响应式对象中添加一个 property,并确保这个新 property 同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新 property,因为 Vue 无法探测普通的新增 property (比如 this.myObject.newProperty = 'hi')

  • 示例
let pNum = 1;

const vueSet = {
  data() {
    return {
      msg: '123',
      show: false,
      showNum: false,
      data: {}
    };
  },
  methods: {
    // 不使用set 直接改变数据,数据改变后页面不会自动更新数据
    addProps() {
      this.data.count = this.data.count ? this.data.count + 1 : 1;
      this.show = true;
      console.log('this: ', this);
    },
    //  使用set 增加新数据后,数据被vue监听。会自动更新数据
    setProps() {
      this.data.num ? (this.data.num += 1) : this.$set(this.data, 'num', 1);
      this.showNum = true;
      console.log('this: ', this);
    },
    //  可以通过 更新引用对象。使vue重新监听整个对象。这样新增的属性也会被监听
    setData() {
      this.data = { count: pNum++ };
      this.show = true;
    }
  },
  template: `

    Vue.set 使用
msg:{{msg}}
msg=click
count:{{data.count}}
增加count属性
    使用set增加响应式属性
num:{{data.num}}
增加count属性
    设置对象
count:{{data.count}}
增加count属性
`
};

总结

  1. 通过直接向 vm 中增加数据。vue 不会去监听数据变化。需要使用Vue.setthis.$set
  2. 通过更新引用对象。使 vue 重新监听整个对象。这样新增的属性也会被监听

2.4 Vue.delete

  • Vue.delete( target, propertyName/index )

  • 参数:

{Object | Array} target
{string | number} propertyName/index
仅在 2.2.0+ 版本中支持 Array + index 用法。
  • 用法:

删除对象的 property。如果对象是响应式的,确保删除能触发更新视图。这个方法主要用于避开 Vue 不能检测到 property 被删除的限制,但是你应该很少会使用它。

2.5 Vue.directive

  • Vue.directive( id, [definition] )
  • 参数:
{string} id
{Function | Object} [definition]
  • 用法:

注册或获取全局指令。

参考 vue 基础入门二[2]

2.6 Vue.filter

  • Vue.filter( id, [definition] )

  • 参数:

{string} id
{Function} [definition]
  • 用法:

注册或获取全局过滤器。

// 注册
Vue.filter('my-filter', function (value) {
  // 返回处理后的值
})

// getter,返回已注册的过滤器
var myFilter = Vue.filter('my-filter')

参考管道操作符vue 过滤器[3]

2.7 Vue.component

  • Vue.component( id, [definition] )

  • 参数:

{string} id
{Function | Object} [definition]
  • 用法:

注册或获取全局组件。注册还会自动使用给定的 id 设置组件的名称

// 注册组件,传入一个扩展过的构造器
Vue.component('my-component', Vue.extend({ /* ... */ }))

// 注册组件,传入一个选项对象 (自动调用 Vue.extend)
Vue.component('my-component', { /* ... */ })

// 获取注册的组件 (始终返回构造器)
var MyComponent = Vue.component('my-component')

总结

  1. Vue.component传入的id就是组件name,definition 就是options 对象

2.8 Vue.use

  • Vue.use( plugin )

  • 参数:

{Object | Function} plugin
  • 用法:

安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法调用时,会将 Vue 作为参数传入。

该方法需要在调用 new Vue() 之前被调用。

当 install 方法被同一个插件多次调用,插件将只会被安装一次。

  • 示例
const vueUse = {
  install(Vue){
    // 一些操作,如使用Vue.components()批量注册全局组件。
  }
}

function vueUseFn(Vue){
  // 一些操作,如使用Vue.components()批量注册全局组件。
}

// 使用
Vue.use(vueUse);
Vue.use(vueUseFn)

总结

  1. 一些组件库通过Vue.use,批量注册多个组件,简化手动调用Vue.components
  2. 自定义封装的一些操作,简化引入初始化过程可考虑使用

2.9 Vue.mixin

-Vue.mixin( mixin )

  • 参数:

{Object} mixin

  • 用法:

全局注册一个混入,影响注册之后所有创建的每个 Vue 实例。插件作者可以使用混入,向组件注入自定义的行为。不推荐在应用代码中使用。

  • 示例
const vueMixin = {
  // vue的options,包括life cycle,methods,computed 等。被混入的对象都可以使用混入对象的属性
};

Vue.mixin(vueMixin);

总结

  1. 不推荐全局混入。优先使用局部混入。
  2. 混入过多对代码阅读增加成本

2.10 Vue.compile

  • Vue.compile( template )

  • 参数:

{string} template

  • 用法:

将一个模板字符串编译成 render 函数。只在完整版时可用。

var res = Vue.compile('
{{ msg }}
')

new Vue({
  data: {
    msg: 'hello'
  },
  render: res.render,
  staticRenderFns: res.staticRenderFns
})

总结

  1. Vue.compile将字符串模板转换成 render 函数,要获得更多的自由度需要手动写 render 函数
  2. vue 编译[4]

2.11 Vue.observable

  • Vue.observable( object )

  • 参数:

{Object} object

  • 用法:

让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象。

返回的对象可以直接用于渲染函数计算属性内,并且会在发生变更时触发相应的更新。也可以作为最小化的跨组件状态存储器,用于简单的场景:

const state = Vue.observable({ count: 0 })

const Demo = {
  render(h) {
    return h('button', {
      on: { click: () => { state.count++ }}
    }, `count is: ${state.count}`)
  }
}

总结

  1. 使数据对象变为响应式。
  2. 通过在渲染函数计算属性内使用,可以实现 vuex 的状态共享

2.12 Vue.version

  • 细节:

提供字符串形式的 Vue 安装版本号。这对社区的插件和组件来说非常有用,你可以根据不同的版本号采取不同的策略。

  • 用法:
var version = Number(Vue.version.split('.')[0])

if (version === 2) {
  // Vue v2.x.x
} else if (version === 1) {
  // Vue v1.x.x
} else {
  // Unsupported versions of Vue
}
c4bce0086bbd0087f3eb4561d49af795.png
关注不迷路

Reference

[1]

参考: https://cn.vuejs.org/v2/guide/reactivity.html#%E5%BC%82%E6%AD%A5%E6%9B%B4%E6%96%B0%E9%98%9F%E5%88%97

[2]

参考 vue 基础入门二: https://github.com/FearlessMa/FENotes/blob/master/docs/vue/vueBase/vue%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8%E4%BA%8C.md

[3]

vue 过滤器: https://cn.vuejs.org/v2/guide/filters.html

[4]

vue 编译: https://cn.vuejs.org/v2/guide/render-function.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 生命周期_Vue生命周期小白看了都会的

最近一直在学习Vue&#xff0c;而vue生命周期是我们不可能绕开的一个很核心的知识点&#xff0c;今天来简单的梳理一下大概的内容。一、钩子函数在一开始学习的时候&#xff0c;总有钩子函数这个名词冒出来&#xff0c;而且在vue官网文档中也频繁出现&#xff0c;也相信给很多初…

实例7:python

#将一个列表的数据复制到另一个列表中。 #程序分析&#xff1a;使用列表[:]。 #程序源代码&#xff1a; #!/usr/bin/python -- coding: UTF-8 -- #a [1, 2, 3] #b a[:] #print (b) #import copy #a [1, 2, 3] #bcopy.copy(a) #print(b) #[1, 2, 3] #使用 Python3 的参…

实例8:python

#输出 9*9 乘法口诀表。 #!/usr/bin/python -- coding: UTF-8 -- #for i in range(1, 10): print for j in range(1, i1): print ("%d*%d%d" % (i, j, i*j),) #!/usr/bin/python3 i0 j0 while i<9: i1 while j<9: j1 print(j,“x”,i,"",i*j,…

ant man 什么意思_浅谈为什么很多蓝牙模块厂家选择nRF52832?

浅谈为什么很多蓝牙模块厂家选择nRF52832&#xff1f;现在蓝牙低功耗(BLE)SOC作为新一代蓝牙&#xff0c;以其低功耗的优势&#xff0c;正凸显出强大的市场竞争力&#xff0c;而其中Nordic公司的nRF52832这一款低功耗蓝牙芯片更是受到大家的欢迎。Nordic是一家无晶圆厂半导体公…

实例9:python

#题目&#xff1a;暂停一秒输出。 #程序分析&#xff1a;使用 time 模块的 sleep() 函数 #!/usr/bin/python -- coding: UTF-8 -- import time l[1,2,3,4] for i in range(len(l)): print (l[i]) time.sleep(5) # 暂停一秒输出

php对话框制作,织梦系统“提示窗口对话框类”详解,oxwindow.class.php、catalog_do.php...

如果对织梦系统做过二次开发或学深入研究过的话&#xff0c;一定会知道在我们做织梦二次开发时&#xff0c;一般会把php文件以及对应的模板文件起的名字&#xff0c;除了扩展名外&#xff0c;其它都一样&#xff0c;这是织梦文件起名的一个特点。例如&#xff0c;index_body.ph…

B-JUI文档、下载

概述 特别说明 本文档仅适用于最新版的B-JUI&#xff0c;网站首页或下载页可以查看B-JUI的最后更新时间。 B-JUI前端管理框架适用于快速开发各类WEB管理系统&#xff0c;可与任意后端程序&#xff08;java、php、.net...&#xff09;配合使用。 B-JUI基于Bootstrap样式及jQuery…

vba xml 怎么设置父节点_熊二做了一个xml报文处理的开源库easyxml

❝自信、冷静、专注。—— TM 熊的自我勉励❞1. 前言熊二从去年开始&#xff0c;因项目需求接触到xml报文的处理&#xff0c;也是我第一次学习用C/C的方式处理基于DOM模型的xml报文。因为本人比较懒hhh&#xff0c;所以第一反应就是去看看网上有没有什么大家都在用的比较好的xm…

实例10:python

#题目&#xff1a;暂停一秒输出&#xff0c;并格式化当前时间。 #!/usr/bin/python -- coding: UTF-8 -- import time print (time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime(time.time()))) 暂停一秒 time.sleep(1) print (time.strftime(’%Y-%m-%d %H:%M:%S’,…

iview 可以选择当天 禁用_人脸识别刚要普及,怎么就被禁用了?|人脸识别|人脸信息|世超|rekognition...

点击播放 GIF 0.5M人脸识别大家都不陌生了&#xff0c;从 iPhone 上面的 Face ID 再到支付宝刷脸支付&#xff0c;这个曾经只有在科幻电影上面才能见到的技术逐渐变得越来越司空见惯。点击播放 GIF 0.4M按理来讲&#xff0c;一项方便的技术应该越来越普及才对&#xff0c;不过世…

oracle ytd,hana ytd计算

YTD解答方案要求&#xff1a;输出字段: 年月, YTD金额因为我这边只有system一个账号&#xff0c;就用system账号写合同表的结构和数据如下:create column table "SYSTEM"."CONTRACTS"("CONTRACT_ID" INTEGER null, --合同ID"START_DATE&qu…

linux 识别文件类型,技术|Linux 中 7 个判断文件系统类型的方法

文件通过文件系统在磁盘及分区上命名、存储、检索以及更新&#xff0c;文件系统是在磁盘上组织文件的方式。文件系统分为两个部分&#xff1a;用户数据和元数据(文件名、创建时间、修改时间、大小以及目录层次结构中的位置等)。在本指南中&#xff0c;我们将用 7 种方法来识别你…

二分归并排序算法_第五篇排序算法|归并排序

0x01&#xff0c;前言闲叙最近几年很少看电视了&#xff0c;因为没时间看了&#xff0c;除了偶尔刷刷头条&#xff0c;基本上不会花大块的时间沉迷于电视剧&#xff0c;综艺&#xff0c;这或许就是短视频时代所带来的一些改变吧&#xff0c;我们都会深受其中。0x02&#xff0c;…

linux系统访问文件夹ls,Linux系统目录结构,文件类型以及ls、alias命令

一、Linux目录结构登录系统之后&#xff0c;在当前命令窗口输入以下指令&#xff0c;/是Linux操作系统里最核心的一个目录&#xff0c;所有的文件和目录全部在它下面&#xff0c;所以称为“根目录”&#xff1a;# ls / //列出根目录下的文件得到如图结果&#xff1a;如图上图所…

qq文件对方接收后一定会有提示吗_为什么微信、QQ不推出已读功能?因为它敢出网友就敢卸载...

12月14日&#xff0c;腾讯 QQ突然发起了一个"很吓人"的调查——你希望 QQ 出已读功能吗&#xff1f;在短时间内&#xff0c;有 超过3000 人参与&#xff0c;其中有 2660 人(71.6%)投票 "你出我就卸载 QQ"选项&#xff0c;大家旗帜鲜明地表示&#xff0c;并…

实例11:python

#古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c; #小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少&#xff1f; #!/usr/bin/python -- coding: UTF-8 -- #兔子的规律…

实例12:python

#判断101-200之间有多少个素数&#xff0c;并输出所有素数。 #程序分析&#xff1a;判断素数的方法&#xff1a;用一个数分别去除2到sqrt(这个数)&#xff0c;如果能被整除&#xff0c;则表明此数不是素数&#xff0c;反之是素数。 #!/usr/bin/python -- coding: UTF-8 -- #…

javascript用户登录_SAP HANA XS的JavaScript安全事项

公众号&#xff1a;matinal前言部分我们都知道web程序都有潜在的安全隐患问题&#xff0c;那么SAP HANA XS的JavaScript也是一样&#xff0c;使用服务器端JavaScript编写应用程序代码&#xff0c;也有潜在的外部攻击&#xff08;和风险&#xff09;。注意事项下面列出几点注意事…

实例13:python

#题目&#xff1a;打印出所有的"水仙花数"&#xff0c;所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个"水仙花数"&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方…

spring的基本用法

关于spring的几种注入方式 理解类之间的关联关系 一&#xff0c;set注入 在这之前我们得spring的jar包&#xff0c;可以去官网下&#xff0c;添加到WebContent下 WEB-INF 下 lib里 这种方式就得首先实现set方法&#xff0c;现在以英雄&#xff08;Hero接口&#xff09;和武器&a…