账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js自定义模块export 和vue 的mixin有什么区分点?
    • 2018-08-07 00:00
    • 11
    34
    0

    我的想法是vue 的mixin也可以写成js自定义模块export,然后import进来
    都是代码复用
    但是我把mixn改成js模块,出现了一个大问题

    vue.esm.js?efeb:1741 TypeError: Cannot read property 'components' of undefined
        at checkComponents (vue.esm.js?efeb:1330)
        at mergeOptions (vue.esm.js?efeb:1451)
        at mergeOptions (vue.esm.js?efeb:1467)
        at Function.Vue.extend (vue.esm.js?efeb:4803)
        at createComponent (vue.esm.js?efeb:4203)
        at _createElement (vue.esm.js?efeb:4420)
        at createElement (vue.esm.js?efeb:4357)
        at vm._c (vue.esm.js?efeb:4489)
        at Proxy.render (eval at ./node_modules/vue-loader/lib/template-compiler/index.js?{"id":"data-v-0ffbc2a2","hasScoped":true,"transformToRequire":{"video":["src","poster"],"source":"src","img":"src","image":"xlink:href"},"buble":{"transforms":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/news/detail/comment/Item.vue (app.js:7208), <anonymous>:144:13)
        at VueComponent.Vue._render (vue.esm.js?efeb:4544)

    过程是我用js模块方法返回的结果作为组件显示与否v-if

    //lib.js
    let checkIsLogin= async function(){     
        const res = await  api.auth.current({});
        return res.isLoggedIn;     
    };
    //componnts.vue
    lib.checkIsLogin().then(function(res){               
        this.replying =  res;
    })
    
    <child v-if="replying "></child>
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 独孤柳 普通会员 1楼

      在JavaScript中,自定义模块(Module)可以被视为一个对象,它包含一个名为export的方法,以及一个名为export default的方法,这两个方法的目的是在模块被导入时,向其他模块或组件传递特定的值或配置。在Vue中,Mixin是一种设计模式,用于为组件定义基础样式、状态、行为或数据绑定,而模块则是用于包含多个自定义组件的集合。

      1. 自定义模块(Module):
      2. export:在JavaScript中,模块的export方法定义了模块如何被导入并使用。通过这种方式,模块可以在其他组件中导出一个或多个数据结构、函数或方法。模块的export方法通常包含以下参数:
      3. 如果模块是单个对象或类,可以包含任意属性和方法,如: javascript export default { name: 'MyModule', // properties // methods };
      4. 如果模块是数组,可以包含一个或多个对象,每个对象包含任意属性和方法,如: javascript export default [ { name: 'MyModuleComponent', // properties // methods }, { name: 'MyOtherModuleComponent', // properties // methods }, ];
      5. 如果模块是类,可以包含一个或多个属性和方法,如: javascript export default class MyModule { // properties // methods };
      6. 如果模块是对象,可以包含任意属性和方法,如: javascript export default { // properties // methods };
      7. 如果模块包含子模块,可以使用export子模块的export方法,而子模块本身可以包含自己的export方法。子模块的export方法定义在export default子模块中,子模块可以将模块的值或配置导出给其他模块,也可以使用import语句导入模块,导入模块时需要使用当前模块的import关键字。

      8. Vue的Mixin:

      9. Vue的Mixin是一种设计模式,用于为组件定义基础样式、状态、行为或数据绑定,而不是创建一个独立的模块。Mixin通常包含以下属性:
      10. data:用于存储组件的数据,例如: javascript export default { name: 'MyMixin', data() { return { // data properties }; }, };
      11. props:用于传递组件的状态或属性给其他组件,例如: javascript export default { name: 'MyMixin', props: { // props properties }, };
      12. methods:用于定义组件的生命周期方法,例如: javascript export default { name: 'MyMixin', methods: { // methods methods }, };
      13. computed:用于计算组件的属性值,例如: javascript export default { name: 'MyMixin', computed: { // computed computed properties }, };
      14. watch:用于监听组件的状态变化,例如: javascript export default { name: 'MyMixin', watch: { // watch watch properties }, };
      15. mixins:用于包含其他组件的Mixin,作为属性或方法注入到当前组件中,例如: javascript export default { name: 'MyMixin', mixins: [ // mixins mixins ], };
      16. interceptors:用于处理组件的状态和行为,例如: javascript export default { name: 'MyMixin', interceptors: [ // interceptors interceptors ], };
      17. computedOptions:用于在计算属性的值时,提供额外的选项,例如: javascript export default { name: 'MyMixin', computedOptions: { // computedOptions computed options }, };
      18. attributes:用于将组件的状态、属性或行为绑定到HTML元素,例如: javascript export default { name: 'MyMixin', attributes: { // attributes attributes }, };
      19. events:用于监听组件的状态和行为,例如: javascript export default { name: 'MyMixin', events: { // events events }, };
      20. mixins:用于包含其他组件的Mixin,作为属性或方法注入到当前组件中,例如: javascript export default { name: 'MyMixin', mixins: [ // mixins mixins ], };
      21. extend:用于创建一个新的Mixin,继承自其他Mixin,例如: javascript export default { name: 'MyMixin', extend: { // extend extend properties }, };
      22. mounted:用于在组件挂载时执行的生命周期方法,例如: javascript export default { name: 'MyMixin', mounted() { // mounted mounted methods }, };
      23. updated:用于在组件状态发生变化时执行的生命周期方法,例如: javascript export default { name: 'MyMixin', updated() { // updated updated methods }, };
      24. beforeDestroy:用于在组件即将销毁时执行的生命周期方法,例如: javascript export default { name: 'MyMixin', beforeDestroy() { // beforeDestroy beforeDestroy methods }, };
      25. created:用于在组件创建时执行的生命周期方法,例如: javascript export default { name: 'MyMixin', created() { // created created methods }, };
      26. methods:用于定义组件的生命周期方法,例如: javascript export default { name: 'MyMixin', methods: { // methods methods }, };
      27. render:用于渲染组件的模板或内容,例如: javascript export default { name: 'MyMixin', render: (h) => { // render render methods }, };
      28. filters:用于处理和过滤组件的模板内容,例如: javascript export default { name: 'MyMixin', filters: { // filters filters }, };
      29. computed:用于计算组件的模板内容,例如: javascript export default { name: 'MyMixin', computed: { // computed computed properties }, };
      30. props:用于传递组件的状态或属性给其他组件,例如: javascript export default { name: 'MyMixin', props: { // props props }, };
      31. events:用于监听组件的状态和行为,例如: javascript export default { name: 'MyMixin', events: { // events events }, };
      32. mixins:用于包含其他组件的Mixin,作为属性或方法注入到当前组件中,例如: javascript export default { name: 'MyMixin', mixins: [ // mixins mixins ], };
      33. extend:用于创建一个新的Mixin,继承自其他Mixin,例如: javascript export default { name: 'MyMixin', extend: { // extend extend properties }, };
      34. mounted:用于在组件挂载时执行的生命周期方法,例如: javascript export default { name: 'MyMixin', mounted() { // mounted mounted methods }, };
      35. updated:用于在组件状态发生变化时执行的生命周期方法,例如: javascript export default { name: 'MyMixin', updated() { // updated updated methods }, };
      36. beforeDestroy:用于在组件即将销毁时执行的生命周期方法,例如: javascript export default { name: 'MyMixin', beforeDestroy() { // beforeDestroy beforeDestroy methods }, };
      37. created:用于在组件创建时执行的生命周期方法,例如: javascript export default { name: 'MyMixin', created() { // created created methods }, };
      38. methods:用于定义组件的生命周期方法,例如: javascript export default { name: 'MyMixin', methods: { // methods methods }, };
      39. render:用于渲染组件的模板或内容,例如: javascript export default { name: 'MyMixin', render: (h) => { // render render methods }, };
      40. filters:用于处理和过滤组件的模板内容,例如: ```javascript export
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部