这段代码之间的区别是什么:

new Vue({
    data () {
        return {
            text: 'Hello, World'
        };
    }
}).$mount('#app')

还有这个:

new Vue({
    el: '#app',
    data () {
        return {
            text: 'Hello, World'
        };
    }
})

我的意思是,用.$mount()而不是el有什么好处?反之亦然?

推荐答案

$mount允许您在需要时显式装载Vue实例.这意味着您可以延迟安装vue实例,直到页面中存在特定元素或某个异步进程完成,这在将vue添加到向DOM中注入元素的旧应用时尤其有用,当我想在多个测试中使用同一个vue实例时,我也经常在测试(See Here)中使用这一点:

// Create the vue instance but don't mount it
const vm = new Vue({
  template: '<div>I\'m mounted</div>',
  created(){
    console.log('Created');
  },
  mounted(){
    console.log('Mounted');
  }
});

// Some async task that creates a new element on the page which we can mount our instance to.
setTimeout(() => {
   // Inject Div into DOM
   var div = document.createElement('div');
   div.id = 'async-div';
   document.body.appendChild(div);

  vm.$mount('#async-div');
},1000)

 

这里是JSFIDLE:https://jsfiddle.net/79206osr/

Vue.js相关问答推荐

Nuxt 3中间件在部署到Netliy时基于IP国家代码的重定向不起作用

从组件中检索 Shopware CMS 编辑器中的自定义实体数据

Vuetify右侧并排switch

vuetify/mdi 不显示图标

如何在 vue js 的一页路由下显示不同的 category._id

使用 cypress 进行 e2e 测试的 vuejs 期间出现 Webpack 错误

在 VueJS 中存储图像的正确位置是什么 - 公共文件夹或assets文件夹?

在 vue 3 中使用 vue-chartjs:createElement 不是函数

Object.assign 没有正确复制

在 vue 组件中检索配置和环境变量

VueJS 组件中的图像未加载

vue-router的router-link实际刷新?

使用 Vue-cli,我在哪里声明我的全局变量?

如何让 Vue 在 shadow dom 中工作

Vue.js webpack:如何获取目录中的文件列表?

如何从方法内部访问数据

Vue $refs 对象的类型为 unknown未知

Vue组件如何命名

为什么 router.currentRoute.path 没有react?

使用 vuex-persistedstate 仅使一个模块持久化