Vue X-Template 与 手动挂载实例

前面的话

这篇文章将介绍两个Vue中高级用法,虽在开发中很少用到,但了解一下也是好的。

X-Template

如果没有使用webpack、gulp等工具,当我们使用组件template拼接HTML代码时,效率很低。Vue提供了一种定义模板的方式,在< script>标签里使用text/x-template类型,并且指定一个id,将这个id赋给template。

<div id="app1">
        <my-component></my-component>
        <script type="text/x-template" id="myComponent">
        <div>这里是模板内容</div> 
        </script>
    </div>
    <script>
     Vue.component('my-component',{
        template: '#myComponent'
    })
    var app1 = new Vue({
        el: '#app1'
    })
     </script>

在这里插入图片描述
[template]
也可以使用元素来写HTML代码,不需要type属性,还是要指定id

    <div id="app2">
        <m-component></m-component>
    </div>
    <template id="mComponent">
            <div>这是模板内容</div>
    </template>
   <script>
 var app2 = new Vue({
        el: '#app2',
        components: {
            'm-component': {
                template: '#mComponent'
            }
        }
    })
</script>

这两种模板分离可以满足一般的小型产品的开发。在后面会介绍使用webpack来编译.vue的单文件,更好的解决HTML书写问题 .

手动挂载实例

我们现在创建的实例都是通过new Vue()的形式创建出来的。在一些特殊的情况在,我们需要动态地去创建Vue实例。

Vue提供了Vue.extend和$ mount两个方法来手动挂载一个实例。

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

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

  <div id="mount-div"></div>
  <script>
// 创建一个子类组件,参数是一个包含template选项的对象
    var app3 = Vue.extend({
        template:`
        <div>hello:{{name}}</div>
        `,
        data() {
            return {
                name: 'Arean'
            }
        }
    });
    // $mount 手动挂载一个未挂载的实例
    new app3().$mount("#mount-div");  
</script>

运行后,id为mount-div的div元素会被替换为组件app3的template的内容:
在这里插入图片描述
除了这种写法,还有两种写法:

第一种:

new app3({
        el: '#mount-div'
   })

第二种: 在文档之外渲染并且随后挂载

    var component = new app3().$mount();
    document.getElementById('mount-div').appendChild(component.$el);
Vue3中引入和挂载Vue3-emoji插件通常涉及以下几个步骤: 1. **安装插件**:首先你需要通过npm或yarn将`vue3-emoji`添加到你的项目依赖中。在命令行中输入: ``` npm install vue3-emoji 或者 yarn add vue3-emoji ``` 2. **导入并导出组件**:然后在你的主入口文件`main.js`或`src/main.js`中导入组件,并将其导出以便在其他文件中使用。示例: ```javascript import VueEmoji from 'vue3-emoji'; // 如果你是按需引入,可以考虑使用 // import { VueEmoji } from 'vue3-emoji'; export default Vue.extend({ components: { VueEmoji, }, }); ``` 3. **注册组件**:在`App.vue`或其他Vue组件中,你需要创建一个新的Vue实例并注册包含Vue3-emoji的组件。这一步通常在`<script>`部分进行: ```html <template> <div id="app"> <!-- 其他内容 --> <VueEmoji :options="yourEmojiOptions" /> <!-- 使用插件的地方 --> </div> </template> <script> import Vue from 'vue'; import App from './App.vue'; import VueEmoji from '@/components/VueEmoji'; // 如果你把组件移到了单独的文件 export default { name: 'App', components: { VueEmoji, }, data() { return { yourEmojiOptions: {} // 根据需要提供配置项 }; }, }; </script> ``` 确保`yourEmojiOptions`中有正确的配置,如字体路径或表情列表。 4. **启动应用**:最后,在你的打包构建脚本(如`build`或`serve`)中启动应用,让Vue实例加载并挂载Vue3-emoji组件。 现在,你应该能够在页面上看到Vue3-emoji的表情了。如果你遇到问题,可以在Vue的开发者工具中检查组件的状态,看是否有加载错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值