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的面向对象(一)
Nov 09 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
Mar 14 Javascript
解决json日期格式问题的3种方法
Feb 02 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
jquery使用经验小结
May 20 Javascript
JavaScript中的Object对象学习教程
May 20 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
vue watch监听对象及对应值的变化详解
Feb 24 Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 Javascript
vue修改对象的属性值后页面不重新渲染的实例
Aug 09 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
jQuery插件simplePagination的使用方法示例
Apr 28 jQuery
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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
PHP与以太坊交互详解
2018/08/24 PHP
event.srcElement+表格应用
2006/08/29 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Python实现图片转字符画的示例
2017/08/22 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
python pygame实现2048游戏
2018/11/20 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
求职自荐信范文格式
2013/11/29 职场文书
财务经理的岗位职责
2013/12/17 职场文书
超市国庆节促销方案
2014/02/20 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书