V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ghostgril
V2EX  ›  问与答

请教一下前端盆友, vue.extend 主要是干啥用的呢?

  •  
  •   ghostgril · 2018-04-23 17:09:02 +08:00 · 5304 次点击
    这是一个创建于 2166 天前的主题,其中的信息可能已经有所发展或是发生改变。

    搞不清除 vue.extend 的用途和 extends 的区别

    还有 Vue.extend(require('./message.vue'))这是什么意思呢,为何不适应 import 呢

    5 条回复    2019-08-03 22:13:46 +08:00
    ghostgril
        1
    ghostgril  
    OP
       2018-04-23 17:12:23 +08:00
    之前一直就只是使用.vue 文件,没注意过这个 vue.extend 的用途?
    yuanbeibei
        2
    yuanbeibei  
       2018-04-23 17:30:07 +08:00
    new Vue 是一个实例
    vue.extend 组件构造器 需要传入 component 进行注册
    vue.component 直接注册组件内部已经自动构造了
    SilentDepth
        3
    SilentDepth  
       2018-04-23 21:03:30 +08:00   ❤️ 3
    Vue 是怎么用的相信你是知道的。我们把 new Vue({}) 生成的东西称为「赤果果的实例」,就是 options 里啥都没有,单纯一个空对象。

    那么,new Vue({ /* something */ }) 就可以叫「有内容的实例」,options 对象里有内容了。

    Vue.extend({ /* something */ }) 返回一个「有内容的类」,假定赋值给一个 VueWithSomething,然后你就可以这么用:new VueWithSomething()。你猜它返回什么?「有内容的实例」,因为这个构造器本身带着「内容」,即使 new 的时候没有传 options 那它也是有内容的,天生骄傲。

    require('./message.vue') 返回什么?在 loader 配置正确的情况下,*.vue 文件会被 vue-loader 转换成一个 options 对象(不难想象,是吧)。那么 Vue.extend(require('./message.vue')) 就变成了什么呢?

    Vue.extend({ /* options-from-message */ }),一个「有内容的类」,而这个「内容」来自 message.vue 。

    import 跟 Vue.extend() 没关系,跟 require 有关系,但超出这个主题的讨论范围了。

    extends 是啥? TypeScript 的 extends ?那相当于语言语法层面的 Vue.extend()。
    sunzongzheng
        4
    sunzongzheng  
       2018-04-23 22:23:21 +08:00 via Android
    可以在逻辑层 new 一个 vue 组件进行操作。用途比如各种 modal 组件。没有显式挂在#app 下,但是可以动态创建
    xtrueman83
        5
    xtrueman83  
       2019-08-03 22:13:46 +08:00
    没一个说得明白的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1127 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:54 · PVG 06:54 · LAX 15:54 · JFK 18:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.