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 版本]
Mar 20 Javascript
用jquery实现下拉菜单效果的代码
Jul 25 Javascript
基于jQuery替换table中的内容并显示进度条的代码
Aug 02 Javascript
解析JavaScript中delete操作符不能删除的对象
Dec 03 Javascript
用Jquery选择器计算table中的某一列某一行的合计
Aug 13 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
vue项目中使用scss的方法步骤
May 16 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
Apr 26 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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生成EXCEL的东东
2006/10/09 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
Seajs的学习笔记
2014/03/04 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
python实现关键词提取的示例讲解
2018/04/28 Python
python在每个字符后添加空格的实例
2018/05/07 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
Django-imagekit的使用详解
2020/07/06 Python
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
机修工工作职责
2014/02/21 职场文书
我爱我家教学反思
2014/05/01 职场文书
学校少先队工作总结
2015/08/12 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
浅谈如何提高PHP代码的质量
2021/05/28 PHP
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS
Python first-order-model实现让照片动起来
2022/06/25 Python