Vue.js--X-Templates、手动挂载Vue实例

X-Templates

Vue提供一种定义模板的方式,在<script>标签里使用text/x-template类型,并且指定一个id,将这个id赋给template。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <title>X-Template</title>
</head>
<body>
    <div id="app">
        <my-component></my-component>
        <script type="text/x-template" id="my-component">
            <div>这是组件的内容</div>
        </script>
    </div>
    <script>
        Vue.component('my-component',{
            template: '#my-component'
        });

        var app = new Vue({
            el: '#app'
        });
    </script>
</body>
</html>
手动挂载Vue实例

大多数情况下,我们都是通过new Vue()的形式创建Vue实例。但是在一些非常特殊的情况下,我们需要动态地去创建Vue实例,Vue提供了Vue.extend和$mount两个方法来手动挂载一个实例。

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

如果Vue实例在实例化时没有收到el选项,它就处于“未挂载”状态,没有关联的DOM元素。可以使用$mount()手动地挂载一个未挂载的实例。这个方法返回实例自身,所以可以链式调用其他实例的方法。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <title>手动挂载实例</title>
</head>
<body>
    <div id="mount-div">

    </div>
    <script>
        var MyComponent = Vue.extend({
            template: '<div>Hello:{{name}}</div>',
            data: function () {
                return {
                    name: 'Aresn'
                }
            }
        });

        new MyComponent().$mount('#mount-div');
    </script>
</body>
</html>

运行后,id为mount-div的div元素会被替换为组件MyComponent的template的内容:
<div>Hello:Aresn</div>
除了这种方法外,以下两种写法也是可以的:

new MyComponent().$mount('#mount-div');
new MyComponent({
	el: '#mount-div'
});

或者在文档之外渲染并且随后挂载:

var component = new MyComponent().$mount();
document.getElementById('mount-div').appendChild(component.$el);

手动挂载实例是一种比较极端的高级用法,在业务中几乎用不到,只在开发一些复杂的独立组件时可能会使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值