在用vue-cli搭建的vue项目中常常会引用各个地方的文件,而在webpack.base.conf.js这个文件里能够为一些经常使用的目录设置一个简短且易懂的别名。html
在webpack.base.conf.js文件中能够找到这样一段代码:vue
resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src') } },
import HelloWorld form '../components/HelloWorld'
这里省略了.vue后缀。node
例如这里用@表明src目录,在引入组件的时候则能够这么写:webpack
import HelloWorld form '@/components/HelloWorld'
这样依然不是特别方便,由于components目录是咱们常常会引用组件的目录,在alias里再加一行:web
resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), '@components': resolve('src/components') } },
就能够这样引入组件了:vue-cli
import HelloWorld form '@components/HelloWorld'
[ 好像只去掉了一个/ ] ((ー̀дー́)不要在乎这些细节)json
首先看到这段代码里的resolve方法,在同一个文件里能够找到这样一段代码:api
const path = require('path') function resolve (dir) { return path.join(__dirname, '..', dir) }
path是node里面的一个模块,主要做用是对路径进行处理。函数
path.join() 方法会把给定的path片断连在一块儿。具体用法请查看node文档_path.join。ui
__dirname表示的是文件所在的当前目录。
resolve函数的含义就是把文件指向到和build文件夹同级的文件夹下。
再看咱们刚刚那段代码:
resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), '@components': resolve('src/components') } },
resolve('src')就指向了src目录。要配置其余别名也能够依葫芦画瓢了~