Vue的Options用法说明


Posted in Javascript onAugust 14, 2020

el:挂载点

与$mount有替换关系

new Vue({
 el: "#app"
});

new Vue({}).$mount('#app')

注:被你选为挂载点的那个元素,如果在index.html里那个元素里面本来就有内容,在渲染时会消失(网速慢可以看到),被这个vue实例的对应内容所覆盖。

data:内部数据

支持对象和函数,优先用函数

new Vue({
 //优先使用函数
 data() {
  return {
   n: 0,
  }
 }
}).$mount("#app");

注:能写函数尽量写函数,否则有可能有BUG;

methods:方法

事件处理函数

new Vue({
   data (){
    return{
      n:0
    }
   },
  template:`
    <div class="red">
      {{n}}
      <button @click="add">+1</button>
    </div>
  `,
 //add必须写到methods里面
  methods:{
     add(){
       this.n+=1
     }
  }
}).$mount('#app')

普通函数:methods代替filter

import Vue from "vue";
Vue.config.productionTip = false;

new Vue({
 data() {
  return {
   n: 0,
   array: [1, 2, 3, 4, 5, 6, 7, 8]
  };
 },
 template: `
 <div class=red>
 {{n}}
 <button @click="add">+1</button> //事件处理函数
 <hr>
 {{filter()}}  //普通函数(JS的filter直接在视图里调用,每一次更新渲染都会调用一次)
 </div>
 `,//主动在模板里面调用
 methods: {
  add() {
   this.n += 1; //事件处理函数
  },
  filter() {
   return this.array.filter(i => i % 2 === 0); //普通函数
  }
 }
}).$mount("#app");

components:方法

使用Vue组件,注意大小写

(建议用法) 模块化:

新建一个vue文件Demo.vue,这个vue文件就是一个组件

在main.js中引入这个vue文件

在vue实例的components中声明这是我要用的组件,并且命名为Demo

这样在这个Vue实例的template中就可以直接使用这个组件<Demo/>

import Vue from "vue";
import Demo from "./Demo.vue"; //引入这个vue文件  ---文件名最好小写 组件名最好大写
Vue.config.productionTip = false;

new Vue({
 components: {
  Demo //在vue实例的components中声明这是我要用的组件,并且命名为Demo
  //如果组件名就叫Demo,即Demo:Demo,那就写Demo --ES6缩写
  //components: {Demo},
 },
 data() {
  return {
   n: 0
  };
 },
 template: `
 <div class=red>
 {{n}}
 <button @click="add">+1</button>
 <Demo/>  //这样在这个Vue实例的template中就可以直接使用这个组件`<Demo/>`
 </div>
 `,
 methods: {
  add() {
   this.n += 1;
  },
 }
}).$mount("#app");

四个钩子

created -- 实例出现在内存中后触发
created(){
     debugger
     console.log('这玩意出现在内存中')
  },

mounted-- 实例出现在页面中(挂载了)后触发

mounted(){
  debugger
     console.log('这玩意儿已出现在页面中')
  },

updated -- 实例更新了后触发

updated(){
     console.log('更新了')
    console.log(this.n) 
  },
 //当你+1的时候,能证明他在更新的时候触发,还可以拿到最新的n

destroyed -- 实例从页面和内存中消亡了后触发

props:外部属性

外部来传值

message="n"传入字符串

:message="n"传入vue实例的this.n数据

:fn="add"传入vue实例的this.add函数

示例

补充知识:vue $options初始化

vue实例化时,对$options进行初始化

vue/src/core/instance/init.js

Vue.prototype._init = function (options?: Object) {
  const vm: Component = this
  // a uid
  vm._uid = uid++

  let startTag, endTag
  /* istanbul ignore if */
  if (process.env.NODE_ENV !== 'production' && config.performance && mark) {
   startTag = `vue-perf-start:${vm._uid}`
   endTag = `vue-perf-end:${vm._uid}`
   mark(startTag)
  }

  // a flag to avoid this being observed
  vm._isVue = true
  // merge options
  if (options && options._isComponent) {
   // optimize internal component instantiation
   // since dynamic options merging is pretty slow, and none of the
   // internal component options needs special treatment.
   initInternalComponent(vm, options)
  } else {
  //初始化$options
   vm.$options = mergeOptions(
    resolveConstructorOptions(vm.constructor),
    options || {},
    vm
   )
  }
  /* istanbul ignore else */
  if (process.env.NODE_ENV !== 'production') {
   initProxy(vm)
  } else {
   vm._renderProxy = vm
  }
 }
}

以上这篇Vue的Options用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript入门之事件、cookie、定时等
Oct 21 Javascript
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 Javascript
纯js写的分页表格数据为json串
Feb 18 Javascript
Underscore源码分析
Dec 30 Javascript
简单实现js间歇或无缝滚动效果
Jun 29 Javascript
jquery UI Datepicker时间控件冲突问题解决
Dec 16 Javascript
Vue组件之Tooltip的示例代码
Oct 18 Javascript
babel的使用及安装配置教程
Feb 22 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
VUE中使用MUI方法
Feb 12 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 Javascript
Vue 构造选项 - 进阶使用说明
Aug 14 #Javascript
vue 扩展现有组件的操作
Aug 14 #Javascript
如何HttpServletRequest文件对象并储存
Aug 14 #Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
Aug 14 #Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 #Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 #Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 #Javascript
You might like
php标签云的实现代码
2012/10/10 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
Python re模块介绍
2014/11/30 Python
Python中的集合类型知识讲解
2015/08/19 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
Python错误的处理方法
2020/06/23 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
上课迟到检讨书
2014/02/19 职场文书
挂职个人工作总结
2015/03/05 职场文书
二胎满月酒致辞
2015/07/29 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android