@
和${__dirname}
环境变量各自在哪儿才能使用?
vue.config.js中有定义@:
chainWebpack: config => {
config.resolve.alias
.set('@', resolve('src'))
.set('src', resolve('src'))
.set('common', resolve('src/common'))
.set('components', resolve('src/components'));
},
xxx.vue 的js中能使用@
和${__dirname}
吗?
@
是webpack
配置,所以在webpack
环境可以用,也就是你的业务代码,需要经过webpack
打包后运行在浏览器上。__dirname
在node
环境用,因为你的代码最终运行在浏览器环境,所以__dirname
只能在非业务代码里用(例如一些配置文件或脚本里使用)这里就有个区分,打包构建相关的代码和业务代码,一个运行在node环境,一个将会运行在浏览器环境
xxx.vue
里的代码能使用@
,默认是不能使用__dirname
,因为你业务代码运行在网页,获取项目文件目录干什么不过
webpack
可以通过配置来实现使用__dirname
,需要开启node
配置webpack node,原因是:有一些npm包里面可能会使用__dirname
变量,所以webpack
做了兼容处理