dva 中使用绝对路径/别名的方法
2019独角兽企业重金招聘Python工程师标准>>>
问题背景
- 在使用 dva 框架进行项目开发过程中,起初都是使用相对路径的,比如这样:
../../../Models
; - 但是项目做到后面,新增了很多目录,导致目录结构很杂乱,这时候就想要整理下项目的目录结构,也就将目录换一个位置;
- 这时候随便换一个文件就会报找不到文件的错误,遂决定使用绝对路径,像这样:
D:/work/antd-admin/src/models/Models
; - 这样也埋了一个坑,就是以后将项目antd-admin移动到 e 盘下,不是又需要重新改路径吗?????
解决方法
问题出现了,就该寻找解决方法。
找了很多资料发现 Webpack 的配置文件中有个 alias 文件,可以解决这个问题。参考资料,详见62-68行
但是在 dva 的配置文件 roadhog 中又明确说道:“你最好不要用 webpack 的配置文件,因为我们之后会更新 roadhog,并不保证兼容 webpack”。考虑到毕竟整体框架还是用人家 dva 的,这里就不埋坑了。
接着找解决办法,在 github 上给 dva 作者 sorrycc 提了这个问题,他提供的解决方案是使用 babel-plugin-module-alias 这个包。
查询上述包的使用发现该包已经废弃了,替代品是 babel-plugin-module-resolver,写法上更加简单。
介绍下 babel-plugin-module-resolver 在 dva 中的使用方法:
- 安装包:
$ npm install --save-dev babel-plugin-module-resolver
- 在 .roadhogrc.js 中配置:(主要添加的是 3-9 行)
0 "env": { 1 "development": { 2 "extraBabelPlugins": [ 3 ["module-resolver", { 4 "root": ["./src"], 5 "alias": { 6 "utils": '/utils', 7 "underscore": "lodash" 8 } 9 }] 10 ] 11 }, 12 }
// 配置前的写法 import utils from './src/utils'; // 配置后的写法 import utils from 'utils';
如果你没有使用 ESlint,到这里就算是解决了,如果你使用 ESlint,会发现
import utils from 'utils';
这里的utils
会报错,信息是:can not find utils module
,原因是把 utils 当成是一个诸如 fs 这样的模块了,而事实上它只是一个别名。网上有说用 eslint-import-resolver-babel-module 在 .eslintrc 进行配置即可解决这个问题,作者试了好久都没成功,只能把它当成是使用别名的副作用了。
- 在 .eslintrc 中配置:
"settings": {"import/resolver": {"babel-module": {}}},
后来也询问了 dav 作者 sorrycc 这问题咋解决,大拿给的答案:
这是使用 alias 的副作用,副作用还包括不能在 IDE 里直接跳转到指定模块或者函数, 这也是我为啥不推荐用 alias 并且没有把 webpack 的 alias 配置暴露出来的原因。
转载于:https://my.oschina.net/dkvirus/blog/1499600
dva 中使用绝对路径/别名的方法相关推荐
- vue项目,webpack中配置src路径别名及使用
默认会有'@'别名,指向src目录,还可以添加自定义别名等等. 使用方法 使用别名一般就三种情况:在js中用,在css中用,在html文档内用 js中用,最简单: import {getName} f ...
- PHP中在公用PHP文件中使用相对路径的正确方法
公用PHP在不同路径的文件中被引用时,就要让公用PHP文件中的href为一个绝对url,考虑到我们的网站变化移植等因素,我们采用动态获取相对url的办法. <!DOCTYPE html> ...
- 【vue】vue中设置路径别名
前言 转载:https://blog.csdn.net/panchang199266/article/details/90145638 在 CSS 或者 JS 中,有时候需要引入其他相关文件,若目录层 ...
- linux中磁盘多路径使用方法
Linux下多路径multipath配置 一.multipath在linux中的基本配置: 通过命令:lsmod |grep dm_multipath 检查是否正常安装成功.如果没有输出说明没有安装那 ...
- mysql在计算机管理中的路径怎么修改_Rstudio中修改工作路径的三种方法
原文链接: Rstudio中修改工作路径的三种方法_weixin_44370085的博客-CSDN博客_rstudio改变工作目录blog.csdn.net Rstudio中修改工作路径的三种方法 ...
- php设置路径别名,react设置文件路径别名的具体方法你知道么
文章环境: "react": "^16.13.1" 版本 react官方脚手架默认是将webpack配置隐藏起来了,在进行配置之前需要将webpack给暴露出来 ...
- H3C模拟器中文路径问题(提示:“当前系统用户名中包含非ASCII字符”! )方法尝试:
H3C模拟器中文路径问题(提示:"当前系统用户名中包含非ASCII字符"! )方法尝试: 我的电脑->属性->高级系统设置->高级->环境变量,分别点击TM ...
- php img本地图片路径,php 替换文章中的图片路径,下载图片到本地服务器的方法
php 替换文章中的图片路径,下载图片到本地服务器 /** * 获取替换文章中的图片路径 * @param string $xstr 内容 * @param string $oriweb 网址 * @ ...
- linux java获取路径_linux中java获取路径的方法
linux中java获取路径的方法 发布时间:2020-05-06 11:11:26 来源:亿速云 阅读:700 作者:小新 今天小编给大家分享的是linux中java获取路径的方法,相信很多人都不太 ...
最新文章
- openssh windows_WINDOWS环境配置SSH服务
- 网络营销——网络营销专员如何做好网站外链优化工作?
- 图书大甩卖(操作系统、C语言、Linux) 已成交
- php str splice,php中array_replace、array_splice与str_replace函数的比较
- 制造业ai中台_如何建立自己的制造者工作台
- 破碎纪念---记第二次Nexus4换屏
- python从入门到精通pdf-跟老齐学Python+从入门到精通 PDF 下载
- android sharedpreference 清空,Android 从SharedPreferences中存储,检索,删除和清除数据...
- 公司培训笔记(1):沟通的技巧
- C++常用数据类型和Windows常见数据类型
- 鸿蒙开放远程测试,跟阿斌一起学鸿蒙(3). 远程虚拟设备的限制和使用方法
- C++ Primer 5th ed.pdf
- crm系统哪家公司做的最好?企业如何选择crm供应商
- 对java.lang.UnsupportedOperationException 异常的分析
- GitHub 上史上最全的 iOS 开源项目分类汇总
- gwt 测试_GWT应用程序的单元和集成测试
- 安装python解释器的时候遇到user installations are disabled via policy on the machine”
- uniapp拍照上传功能
- HtmlUnit使用体会
- wargame v2.1 Web Wrtteup By Assassin