zoukankan      html  css  js  c++  java
  • vue组件使用技巧(附带vuex的modules引入)

    正常我们想要使用一个组件,需要经过三步:

    //1.引入
    import comonentName from './comonentName'
    //2.注册
    comonents:{
      comonentName,
    }
    //3.使用
    <comonentName></comonentName>

    这样做本身没有问题,但是组件多了的话就麻烦了,看了网上一些资料,说可以借助一下webpack,使用require.context()方法来创建自己的模块,从而实现自动动态require组件。

    思路是:在src文件夹下面main.js中,借助webpack动态将需要的基础组件统统打包进来。

    import Vue from 'vue'
    import upperFirst from 'lodash/upperFirst'
    import camelCase from 'lodash/camelCase'
     
    // Require in a base component context
    const requireComponent = require.context(
     ‘./components', false, /base-[w-]+.vue$/
    )
     
    requireComponent.keys().forEach(fileName => {
     // Get component config
     const componentConfig = requireComponent(fileName)
     
     // Get PascalCase name of component
     const componentName = upperFirst(
      camelCase(fileName.replace(/^.//, '').replace(/.w+$/, ''))
     )
     
     // Register component globally
     Vue.component(componentName, componentConfig.default || componentConfig)
    })

    这样我们要使用组件就只需要第三步就可以了。

    附带vuex的modules引入,留着下次验证使用

    对于store文件的结构,通常是这样的:

    // ...
    - src
    - components
    - store
        -index.js
        -modules
            -user.js
            -posts.js
            -comments.js
    - utils
    // ...

    index.js中的内容通常是这样的:

    import user from './modules/user'
    import posts from './modules/posts'
    import comments from './modules/comments'
    // ...
     
    export default new Vuex.Store({
     modules: {
      auth,
      posts,
      comments,
      // ...
     }
    })

    分别引入modules中的子模块,然后再注册到Vuex.Store中

    精简的做法和上面类似,也是运用require.context()读取文件,代码如下:

    import camelCase from 'lodash/camelCase'
    const requireModule = require.context('.', false, /.js$/)
    const modules = {}
    requireModule.keys().forEach(fileName => {
     // Don't register this file as a Vuex module
     if (fileName === './index.js') return
     
     const moduleName = camelCase(
      fileName.replace(/(./|.js)/g, '')
     )
     modules[moduleName] = {
            namespaced: true,
            ...requireModule(fileName),
           }
    })
    export default modules

    这样我们只需如下代码就可以了:

    import modules from './modules'
    export default new Vuex.Store({
     modules
    })
  • 相关阅读:
    Unix Vi 命令详解
    硬盘安装 solaris
    Oracle 10g RAC OCR 和 VotingDisk 的备份与恢复
    Unix vmstat 命令
    Unix Vi 命令详解
    How do I rename a data file
    Oracle 购买价格 和 服务费 计算方式
    Solaris 更改系统语言
    硬盘安装 solaris
    How do I rename a data file
  • 原文地址:https://www.cnblogs.com/chao202426/p/11481257.html
Copyright © 2011-2022 走看看