Vue'导出默认'与'新Vue'

roc*_*ie2 88 vue.js vue-component vue-cli

我刚刚安装了Vue,并且一直在使用vue-cli webpack模板创建项目.当它创建组件时,我注意到它将我们的数据绑定在以下内容中:

export default {
    name: 'app',
    data: []
}
Run Code Online (Sandbox Code Playgroud)

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

new Vue({
    el: '#app',
    data: []
)}
Run Code Online (Sandbox Code Playgroud)

有什么区别,为什么看起来两者之间的语法不同?我无法从我在vue-cli生成的App.vue中使用的标签内部获取"新Vue"代码.

小智 111

当你声明:

new Vue({
    el: '#app',
    data () {
      return {}
    }
)}
Run Code Online (Sandbox Code Playgroud)

这通常是应用程序其余部分来自的根Vue实例.这会挂掉html文档中声明的根元素,例如:

<html>
  ...
  <body>
    <div id="app"></div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

另一种语法是声明一个可以在以后注册和重用的组件.例如,如果您创建单个文件组件,如:

// my-component.js
export default {
    name: 'my-component',
    data () {
      return {}
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以稍后导入它并使用它:

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

此外,请务必将您的data属性声明为函数,否则它们不会被动反应.

  • 好的,所以无论何时您在“MyApp.vue”组件文件中工作,您都将使用“export default {}”语法,否则如果您只是在纯 HTML 文件中使用 Vue,您将正在使用“new Vue({})”,对吗? (8认同)
  • 一般来说,是的。无论您是在HTML文档本身中创建根实例还是在外部文件(即“ main.js”)中都没有关系,只知道它是应用程序的起点,类似于int main()。 C.`Component.vue`文件将始终使用`export default {...}`语法。该文档很好地解释了组件之间的区别,[global](https://vuejs.org/v2/guide/components.html#Global-Registration),[local](https://vuejs.org/v2 /guide/components.html#Local-Registration)和[单个文件](https://vuejs.org/v2/guide/single-file-components.html) (2认同)

She*_*lum 9

第一种情况( export default {...}) 是 ES2015 语法,用于使某些对象定义可用。

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

第一个将在 JS 中用于引导 Vue,而两个都可用于构建组件和模板。

有关更多详细信息,请参阅https://vuejs.org/v2/guide/components-registration.html


小智 5

export default 用于为Vue组件创建本地注册。

这是一篇很棒的文章,解释了有关组件的更多信息 https://frontendsociety.com/why-you-shouldnt-use-vue-component-ff019fbcac2e


DHR*_*PTA 5

每当您使用

export someobject
Run Code Online (Sandbox Code Playgroud)

并且某个对象是

{
 "prop1":"Property1",
 "prop2":"Property2",
}
Run Code Online (Sandbox Code Playgroud)

以上您可以使用import或在任何地方导入module.js然后你可以使用 someobject。这不是限制某个对象将是一个对象,只是它也可以是一个函数、一个类或一个对象。

当你说

new Object()
Run Code Online (Sandbox Code Playgroud)

就如你所说的

new Vue({
  el: '#app',
  data: []
)}
Run Code Online (Sandbox Code Playgroud)

在这里,您正在启动 Vue 类的对象。

我希望我的回答能更全面、更明确地解释您的查询。