react import 配置路径别名'@',简化import Component的方式
摘要
在react中,大多数业务逻辑都组件化;极大的减轻了代码的冗余度,如果组件的层次比较深的话,组件的import就比较费劲,在import时使用“../../components/test”的方式,组件的import就会稍显混乱、组件代码不容易维护。为了可高效的、快速的维护组件代码,废弃“../../”的组件引入方式,配置一个组件路径重写的方式引入组件。
配置内容
我在之前就介绍过在react中引入less的配置,同样的为了配置一个路径别名,使用customize-cra来覆写webpack底层配置。(配置覆写webpack需要的插件以及第三方库就不在复述,不清楚的可以去参考Ant Design官方的配置说明)
路径别名重写方式一
const { override } = require('customize-cra');
const path = require("path");
module.exports = override(
config =>{
config.resolve.alias = {
"@": path.resolve(__dirname, "src")
};
return config;
},
);
路径别名重写方式二
const { override, addWebpackAlias } = require('customize-cra');
const path = require("path");
module.exports = override(
addWebpackAlias({
["@"]: path.resolve(__dirname, "src")
}),
);
Example-实例展示
App.js父组件代码
import React, { useState } from 'react'
import style from './App.module.less'
import { Home } from '@/pages/home'; //@方式引入Home组件
class App extends React.Component {
render() {
return (
<div className={style.box}>
<Home name='杰瑞与汤姆'/>
</div>
);
}
}
export default App;
Home.js子组件代码
import React, { Component } from 'react';
import { Button } from 'antd';
export class Home extends Component {
constructor(props) {
super(props);
this.state = { };
}
render() {
return (
<div>
<Button type='danger'>{this.props.name}</Button>
</div>
);
}
}
配置@路径智能提示
在测试过程中,虽然应用了@引入组件的方式,但是在引用过程中没有智能提示组件路径,为了解决智能提示问题,安装Path Intellisence插件来配置提示。
1、vsCode插件:
Path Intellisence(在插件库中查找并下载插件)
2、vsCode中setting.json配置插件功能:(打开vscode编辑器设置,在设置中打开setting.json文件)
// 配置@路径智能提示
"path-intellisense.mappings": {
"@": "${workspaceRoot}/src"
}
3、在项目package.json所在同级目录下创建文件jsconfig.json:
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"allowSyntheticDefaultImports": true,
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
}
},
"exclude": [
"node_modules"
]
}
测试结果

总结
分享一种更高效、快捷的import方式,这样的import方式既保证了组件式代码高内聚性、低耦合度的特性,也提高了项目的可维护性,更好的锁定问题所在。
更多关于customize-cra库API的使用可以访问github的文档说明,customize-cra库地址:https://github.com/arackaf/customize-cra/blob/master/api.md
react import 配置路径别名'@',简化import Component的方式的更多相关文章
- webpack + ts 配置路径别名无死角方法总结
webpack + ts 配置路径别名总结 自我体验加总结:在配置脚手架时,定制别名很有必要,可以使得代码更优雅,可读性更强.但在使用ts的时候,即便项目能够运行,vscode 确时长会提示 can' ...
- 【vue-cli 3.0】 vue.config.js配置 - 路径别名
如何配置vue-cli 3中vue.config.js的路径别名? 前段时间更新电脑重装了一下vue-cli,发现了vue-cli已经更新到3.0版.用来搭建项目后发现简化了很多,而且配置文件现在可以 ...
- typescript项目配置路径别名(路径映射)
在vue项目中,我们可以利用“@”来指代src目录,在普通webpack项目中,我们也可以通过配置webpack的config来指定路径别名,但是在typescript+webpack项目中我们该怎么 ...
- vue配置config ‘./.../.../***/**.vue’路径别名
cli-4的脚手架配置 因为组件的引用,经常会遇到import * from '../../../components/common/***.vue‘这样的引入格式,太复杂了,所以可以在vue里面配 ...
- day16模块,导入模板完成的三件事,起别名,模块的分类,模块的加载顺序,环境变量,from...import语法导入,from...import *,链式导入,循环导入
复习 ''' 1.生成器中的send方法 -- 给当前停止的yield发生信息 -- 内部调用__next__()取到下一个yield的返回值 2.递归:函数的(直接,间接)自调用 -- 回溯 与 递 ...
- 使用import简化spring的配置 spring import 标签的解析 使用import或加载spring配置时,报错误There is no ID/IDREF 多个Spring配置文件import resource路径配置
spring-import 标签的解析.使用案例: 对于spring配置文件的编写,我想,对于经历过庞大项目的人,都有那种恐惧的心理,太多的配置文件.不过,分模块都是大多数人能想到的方法,但是,怎么分 ...
- Vue 导入文件import、路径@和.的区别
***import: html文件中,通过script标签引入js文件.而vue中,通过import xxx from xxx路径的方式导入文件,不光可以导入js文件. from前的:“xxx”指的是 ...
- 自学Zabbix10.1 Configuration export/import 配置导入导出
自学Zabbix10.1 Configuration export/import 配置导入导出 通过导入/导出zabbix配置文件,我们可以将自己写好的模板等配置在网络上分享,我们也可以导入网络上分享 ...
- Python import搜索路径相关
import搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONPATH 中指定的路径列表中依次搜索 在 Python 安装路径的 lib 库中搜索 查看当前的搜索路径 import sys p ...
随机推荐
- MongoDB(mongodb-win32-x86_64-enterprise-windows-64-4.2.1-signed.msi)下载,启动和插入数据,查询
下载链接:https://pan.baidu.com/s/19lM5Q-_BaDbjaO1Pj0SbYg&shfl=sharepset 安装一路Next就行,安装完毕后,进入目录C:\Prog ...
- Oracle SQL的优化
SQL的优化应该从5个方面进行调整:1.去掉不必要的大型表的全表扫描2.缓存小型表的全表扫描3.检验优化索引的使用4.检验优化的连接技术5.尽可能减少执行计划的Cost SQL语句:是对数据库(数据) ...
- charles-mock数据的方法(有空自己写一个)
https://www.jianshu.com/p/75d24f264ce2 这个也可以参考下 https://www.cnblogs.com/kaibindirver/p/9104996.html ...
- webpack 用 webpack-parallel-uglify-plugin 加速打包报错
从新拉了份代码.npm install .npm run dev 都没有问题,但是npm run build 就报上面的错误了 查了好多资料,都没有解决上面的问题,也不知道是哪里出了问题,但是可以肯定 ...
- Java 实现 bash命令
Java 实现 bash命令 1.BASH 命令简介 Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写.1989年发布第一个正式版本,原先是计划用在GNU操作系统 ...
- 面向对象ALV选择列
通过 gs_layout-box_fname = 'SEL'.设置选择行,不能取到 SEL列的值 找资料:作者:f122300349 来源:CSDN 原文:https://blog.csdn.ne ...
- CockroachDB学习笔记——对此的选择
无意间了解到TiDB,然后知道了他是一款国产团队开源的NewSQL数据库, 看了一下官网,有很多中文的文档和技术分享挺不错的. 但是安装起来好像挺麻烦的说. 测试的硬件环境 也吓死我了,我只有一台笔记 ...
- groupby+agg
一.在处理pandas表格数据时,有时会遇到这样的问题:按照某一列聚合后,判断另一列是否出现唯一值,比如安泰杯--跨境电商比赛中,某个商人的ID如果出现在两个国家(xx和yy),则要剔除这样的数据,这 ...
- C#使用MPI进行高性能计算
MPI.NET是用于Microsoft.NET环境的高性能.易于使用的消息传递接口(MPI)实现.mpi是编写在分布式内存系统(如计算集群)上运行的并行程序的事实上的标准,并且得到了广泛的实现.大多数 ...
- 01.02 linux命令(1
=================常用的Linux命令============================Ls 查看当前文件夹下或者其他文件夹的文件列表或者文件夹列表Ls -l 详细信息的列表L ...