'export default' 与 'new Vue' 有何区别?

Vue.js

我刚安装了 Vue,并且已经按照一些教程使用 vue-cli webpack 模板创建了一个项目。创建组件时,我注意到它将我们的数据绑定在以下内容中:

export default {
    name: 'app',
    data: []
}

而在其他教程中,我看到数据绑定在:

new Vue({
    el: '#app',
    data: []
)}

区别是什么,为什么两者的语法看起来不同? 我对 vue-cli 生成的 App.vue 中 ‘new Vue’ 相关代码感到很迷惑。

jasonandmonte 答道:

当您声明:

new Vue({
    el: '#app',
    data () {
      return {}
    }
)}

这通常用于应用程序的 Vue 根实例。根实例通常挂在 html 文档中声明的根元素,比如:

<html>
  ...
  <body>
    <div id="app"></div>
  </body>
</html>

其他用法是申明一个组件,它可以被延迟注册和重用。举个栗子,如果创建了如下所示的单文件组件:

// my-component.js
export default {
    name: 'my-component',
    data () {
      return {}
    }
}

之后就随时可以导入并使用组件,就像:

// another-component.js
<template>
  <my-component></my-component>
</template>
<script>
  import myComponent from 'my-component'
  export default {
    components: {
      myComponent
    }
    data () {
      return {}
    }
    ...
  }
</script>

当然,确保你已声明 data 属性为一个函数,否则他们不会自动响应。

评论:

  • 好的,所以无论何处编写了 “MyApp.vue” 组件,都需要使用 “export default {}” 语法,不过在只需要在 HTML 文件中使用 Vue 时,需要使用 “new Vue{}” 对吗?

  • 总的来说,是的。无论何处为 HTML 文档或者一个外部的 JS - 如 main.js 创建根实例的时候,不用过于迷惑,只需要知道这是应用的起点即可,类似于 C 语言中的 int main()Component.vue 文件通常使用 export default{...} 语法。如下文档详细描述了两种组件之间的不同, 全局本地,以及 单文件

  • 我使用第一种方式 new Vue({ el: '#app', data () { return {msg: 'A'} } )}去定义,然后尝试使用 {{msg}} 属性或 “msg” 方法,但它未在实例上定义却可以引用,为啥?

  • 第一眼看到这里的 Vue.js ,我感觉有点迷。就你的组件来说,已经在 export default 中声明了 data()样式 估摸也一样定义好了。为何组件引入之后还要再执行其他操作?

Shellum 答道:

第一种方式 (export default {...}) 是 ES2015 语法中用于指定可用对象的方法。

第二种方式 (new Vue (...)) 是用于实例化已定义对象的标准语法。

第一种方式将在 JS 中用于启动 Vue,而两者均可用于构建组件和模板。

有关详细信息,请参阅 vuejs.org/v2/guide/components-regi... 。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://stackoverflow.com/questions/4872...

译文地址:https://learnku.com/vuejs/t/54044

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!