zoukankan      html  css  js  c++  java
  • vue路径优化之resolve

    通过vue-cli来创建vue+webpack的项目时,已经有很多都配置好了,但是路径方面为了方便开发,还可以优化。

      

    1. resolve.extensions 

      在webpack.base.conf.js中,我们可以看到resolve配置,其中的extengsions是一个数组,如下所示:

        extensions: ['.js', '.vue', '.json'],

      通过这样的配置,我们在组件中过着路由中应用组件时,就可以更为方便的应用,比如:

      import Hello from '@components/Hello';

      即Hello.vue这个组件我们不需要添加.vue后缀就可以引用到了,如果不用extensions, 我们就必须要用@components/Hello.vue来引入这个文件。 

    2. resolve.alias

      在组件之间相互引用时,可能是下面这样的:

      import Hello from '../src.components/Hello';

      其中的路径是相对于当前页面的。 但是如果嵌套等更为复杂,那么写起来会比较麻烦。但是如果我们通过这样的配置:

    复制代码
      resolve: {
        extensions: ['.js', '.vue', '.json'],
        alias: {
          'vue$': 'vue/dist/vue.esm.js',
          '@pages': path.join(__dirname, "..", "src", "pages"),
          "@components": path.join(__dirname, "..", "src", "components"),
          // 注意: 静态资源通过src,不能这么设置。
          // "@assets": path.join(__dirname, "..", "src", "assets"),
        }
        
    复制代码

      其中vue$表示引入vue,就可以像下面这么写:

    import Vue from 'vue'

      另外,对于@pages和@components我们就可以直接引用了,而省去了一大堆的复杂应用,另外通过@可以消除歧义。如下所示:

      import Hello from '@components/Hello';
    import App from '@pages/App'

      值得注意的时: 在webpack.config.js中我们不能使用../ 以及./这种形式的路径方式,而是通过 path.join 和 __dirname 这种形式来表示路径,否则会报错。

      另外: 在组件中,我们会引用一些静态文件,即static下的文件, 这时我们就不能用 alias 下的配置了,而必须使用一般的配置方式。

  • 相关阅读:
    JavaScript模态对话框类
    事件模块的演变(1)
    html5中可通过document.head获取head元素
    How to search for just a specific file type in Visual Studio code?
    What do 'lazy' and 'greedy' mean in the context of regular expressions?
    正则非获取匹配 Lookahead and Lookbehind ZeroLength Assertions
    regex length 正则长度问题
    Inversion of Control vs Dependency Injection
    How to return View with QueryString in ASP.NET MVC 2?
    今天才发现Google Reader
  • 原文地址:https://www.cnblogs.com/raind/p/8874436.html
Copyright © 2011-2022 走看看