Vue实例对象

1465 字
7 分钟
Vue实例对象

创建并绑定 Vue 对象#

Vue 也是一个构造函数,通过 new Vue()可以创建一个 Vue 对象,通过 Vue 对象进行对 DOM 元素以及内部的子孙元素的操作

new Vue({
el: '#div',
/*
在Vue中通过el属性来绑定一个DOM元素,从而让该DOM元素以及内部都绑定Vue的相关操作,一般是通过ID进行查找,因为这样才能够精确绑定
*/
data: {
//data属性中包含着在el中使用的使用的变量或属性
msg: 123,
},
//也可以使用函数形式的
data() {
return {
msg: 123,
}
},
//methods属性包含着需要使用的方法
methods: {
show() {
console.log(this.msg)
},
},
})

注<在实例内部使用定义的属性或方法时不能直接使用>,必须通过 this 来指定需要用的属性

vue 实例中的参数与选项#

  • el:"#id", //DOM 成员(1/3) 提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标。

  • template:"<tag></tag>", //DOM 成员(2/3) 一个字符串模板作为 Vue 实例的标识使用。模板将会 替换 挂载的元素。挂载元素的内容都将被忽略,除非模板的内容有分发

  • slot render: (h)=>{h(App)}, //DOM 成员(3/3) 字符串模板的代替方案,允许你发挥 JavaScript 最大的编程能力。

    // 原理
    render: (h) => {
    return <APP></APP>
    } // 可以代替components和template
  • data //数据成员(1/6)

    data():{ return{ } }

    Vue 实例的数据对象。Vue 将会递归将 data 的属性转换为 getter/setter,从而让 data 的属性能够响应数据变化

  • methods //数据成员(2/6)

    methods:{ func(){ } }

    methods 将被混入到 Vue 实例中,可以直接通过 VM 实例访问这些方法,或者在指令表达式中使用 方法中的 this 自动绑定为 Vue 实例

  • watch //数据成员(3/6)

    watch: {
    key: value,
    $route(newValue, oldValue) {//监控路由}
    }

    Vue的监视属性,整个为一个对象,键是需要观察的表达式,值是对应回调函数

  • computed //数据成员(4/6)

    computed: {
    getTotalCount() {
    const totalCount = 0
    return totalCount
    },
    }

    vue 的计算属性,将被混入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例

  • props //数据成员(5/6)

    props:['counts','ids']

    用于父子组件的 eventbus 传值,是数组或对象,props 的成员是子组件接收的来自父组件的数据

  • propsData //数据成员(6/6) 创建实例时传递 props。主要作用是方便测试。基本不使用。

  • filters //资源(1/3)

    filters(
    'filterName',
    (input,
    function () {
    return newvalue
    })
    )

    包含 Vue 实例可用过滤器的哈希表。

  • directives //资源(2/3) 包含 Vue 实例可用指令的哈希表。

  • components //资源(3/3) (即该组件的子实例)这里是包含 Vue 实例可用组件的哈希表。

  • name //杂项(1/6) 允许组件模板递归地调用自身。注意,组件在全局用 Vue.component() 注册时,全局 ID 自动作为组件的 name。

  • parent //杂项(2/6) 指定已创建的实例之父实例,在两者之间建立父子关系。子实例可以用 this.$parent 访问父实例,子实例被推入父实例的 $children 数组中。

  • mixins //杂项(3/6) mixins 选项接受一个混合对象的数组。Mixin 钩子按照传入顺序依次调用,并在调用组件自身的钩子之前被调用。

  • extends //杂项(4/6) 允许声明扩展另一个组件。这主要是为了便于扩展单文件组件。这和 mixins 类似,区别在于,组件自身的选项会比要扩展的源组件具有更高的优先级。

  • delimiters //杂项(5/6) 改变纯文本插入分隔符。

  • functional //杂项(6/6) 使组件无状态(没有 data )和无实例(没有 this 上下

常用指令实例#

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>startVue</title>
</head>
<body>
<div id="app">
<!-- {{}}双大括号表达式,里面是js代码 -->
<p>{{ msg }}</p>
<!-- 相当于innerText -->
<p v-text="str"></p>
<!-- 相当于innerHTML -->
<p v-html="str"></p>
<!-- 强制绑定事件, 一般用于用于响应式地更新HTML attribute, 简写方式:
从 2.6.0 开始,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数
<a v-bind:[attributeName]="url"> ... </a>
这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。
例如,如果你的 Vue 实例有一个 data 属性 attributeName,其值为 "href"
那么这个绑定将等价于 v-bind:href-->
<a v-bind:href="url">Baidu</a>
<!-- 绑定事件监听,监听 DOM 事件, 简写方式@ -->
<button v-on:click="test">Submit</button>
<!-- 双向绑定事件,动态实时更新里面的内容 -->
<div>
<input type="text" v-model="input" placeholder="Please input" />
<p>{{ input }}</p>
</div>
</div>
</body>
<script text="javascript" src="./vue.js"></script>
<script text="javascript">
const app = new Vue({
//要挂载的位置
//在Vue中通过el属性来绑定一个DOM元素,从而让该DOM元素以及内部都绑定Vue的相关操作
//一般是通过ID进行查找,因为这样才能够精确绑定
el: '#app', // data属性中包含着在el中使用的使用的变量或属性
data: {
msg: 'xhw',
str: '<a href="#">XHW</a>',
url: 'https://www.baidu.com',
input: '',
}, // methods属性包含着需要使用的方法
/**
* 也可以写成(以组件形式里必须写成这个)
* data() {
* return {
*
* }
* },
*/ methods: {
test() {
alert('!!!')
},
},
})
</script>
</html>

vm.$mount#

如果 Vue 实例在实例化时没有收到 el 选项,则它处于“未挂载”状态,没有关联的 DOM 元素。可以使用 vm.$mount() 手动地挂载一个未挂载的实例

**注意:**这个方法返回实例自身,因而可以链式调用其它实例方法

var MyComponent = Vue.extend({ template: '<div>Hello!</div>' }) // 创建并挂载到 #app (会替换 #app)
new MyComponent().$mount('#app') // 同上
new MyComponent({ el: '#app' }) // 或者,在文档之外渲染并且随后挂载 var
component = new MyComponent().$mount()
document.getElementById('app').appendChild(component.$el)

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Vue实例对象
https://sukksa.github.io/posts/vue-shi-li-dui-xiang/
作者
Sukksa
发布于
2022-07-30
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
vue-router
Vuevue router 是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。 我们可以访问其官方网站对其进行学习:https://router.vuejs.org/zh/ vue router 是基于路由和组件的 路由用户设定访问路径的,将路径和组件映射起来。 在 vu…
2
Vue 脚手架
Vue使用前置: 第一步(没有安装过的执行):全局安装 @vue/cli npm install g @vue/cli 第二步:切换到要创建项目的目录,然后使用命令创建项目 vue create xxxxx 第三步:启动项目 npm run serve
3
Vue 插件
Vue插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制,一般有下面几种: 添加全局方法或者 property 。如: vue custom element 添加全局资源:指令/过滤器/过渡等。如 vue touch 通过全局混入来添加一些组件选项。如 vue router 添加 Vue…
4
Vue 组件
Vue组件的出现是为了拆分 Vue 实例的代码量,能够让我们以不同的组件来划分不同的功能模板,将来需要什么样的功能,只需要调用对应的组件就可以了 组件化与模块化的区别 模块化是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一 组件化是从 UI 界面的角度进行划分的,前端的组件化是为…
5
Vue 基本指令
Vuev text ,该指令的用法同原生 JS 中的 innerText ,更新绑定元素内部的文本内容 {{msg}} 与插值语法的区别: v text 会替换掉节点中的内容, {{xx}} 则不会。
随机文章随机推荐
Profile Image of the Author
Sukksa
记录前端学习与日常
公告
博客刚刚上线,内容还在慢慢补齐。欢迎随便逛逛~
分类
标签
最新动态
站点统计
文章
69
分类
16
标签
17
总字数
178,517
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录