摘要

  在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的方式的更多相关文章

  1. webpack + ts 配置路径别名无死角方法总结

    webpack + ts 配置路径别名总结 自我体验加总结:在配置脚手架时,定制别名很有必要,可以使得代码更优雅,可读性更强.但在使用ts的时候,即便项目能够运行,vscode 确时长会提示 can' ...

  2. 【vue-cli 3.0】 vue.config.js配置 - 路径别名

    如何配置vue-cli 3中vue.config.js的路径别名? 前段时间更新电脑重装了一下vue-cli,发现了vue-cli已经更新到3.0版.用来搭建项目后发现简化了很多,而且配置文件现在可以 ...

  3. typescript项目配置路径别名(路径映射)

    在vue项目中,我们可以利用“@”来指代src目录,在普通webpack项目中,我们也可以通过配置webpack的config来指定路径别名,但是在typescript+webpack项目中我们该怎么 ...

  4. vue配置config ‘./.../.../***/**.vue’路径别名

    cli-4的脚手架配置 因为组件的引用,经常会遇到import * from  '../../../components/common/***.vue‘这样的引入格式,太复杂了,所以可以在vue里面配 ...

  5. day16模块,导入模板完成的三件事,起别名,模块的分类,模块的加载顺序,环境变量,from...import语法导入,from...import *,链式导入,循环导入

    复习 ''' 1.生成器中的send方法 -- 给当前停止的yield发生信息 -- 内部调用__next__()取到下一个yield的返回值 2.递归:函数的(直接,间接)自调用 -- 回溯 与 递 ...

  6. 使用import简化spring的配置 spring import 标签的解析 使用import或加载spring配置时,报错误There is no ID/IDREF 多个Spring配置文件import resource路径配置

    spring-import 标签的解析.使用案例: 对于spring配置文件的编写,我想,对于经历过庞大项目的人,都有那种恐惧的心理,太多的配置文件.不过,分模块都是大多数人能想到的方法,但是,怎么分 ...

  7. Vue 导入文件import、路径@和.的区别

    ***import: html文件中,通过script标签引入js文件.而vue中,通过import xxx from xxx路径的方式导入文件,不光可以导入js文件. from前的:“xxx”指的是 ...

  8. 自学Zabbix10.1 Configuration export/import 配置导入导出

    自学Zabbix10.1 Configuration export/import 配置导入导出 通过导入/导出zabbix配置文件,我们可以将自己写好的模板等配置在网络上分享,我们也可以导入网络上分享 ...

  9. Python import搜索路径相关

    import搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONPATH 中指定的路径列表中依次搜索 在 Python 安装路径的 lib 库中搜索 查看当前的搜索路径 import sys p ...

随机推荐

  1. BGP多线 有些BGP IP也会被极少数运营商劫持 取Ip逻辑

    小结: 1.租用的服务器只有一个IP,用户的访问路线是由路由器根据访客的实际访问速度选择最优访问路径,来选择访问的.而且不占用任何的服务器资源.服务器的上行和下行都是有路由器来选择最佳的路线,所以这样 ...

  2. 《你不知道的JavaScript(上)》笔记——函数作用域和块作用域

    关于函数声明:如果 function 是声明中的第一个词, 那么就是一个函数声明, 否则就是一个函数表达式.例如匿名函数这种形式,函数会被当作函数表达式而不是一个标准的函数声明来处理. (functi ...

  3. Winform中利用委托实现窗体之间的传值

    点击打开按扭,打开传输值窗体 public partial class Form1 : Form { public Form1() { InitializeComponent(); } public ...

  4. Python扫描器-爬虫基础

    0x1.基础框架原理 1.1.爬虫基础 爬虫程序主要原理就是模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或文件中 1.1.基础原理 1.发起HTTP请求 2 ...

  5. laravel 加载指定版本的mongodb

    composer require jenssegers/mongodb:3.3 注意开启 php的mongodb的扩展 pecl install mongodb

  6. webdriervAPI(警告框处理)

    from  selenium  import  webdriver driver  =  webdriver.Chorme() driver.get("http://www.baidu.co ...

  7. ubuntu安装以及卸载软件

    dpkg安装以及卸载软件 deb文件是linux发行版debian系统的安装包格式,还有像基于debian系统的发型版ubuntu等系统就是使用的deb格式安装包,我们可以使用dpkg命令进行安装管理 ...

  8. bootstrap table checkbox获得选中得数据

    var idlist = $('#table').bootstrapTable('getAllSelections');     for (var i = 0; i < idlist.lengt ...

  9. 如何克服社交恐惧症?zz

    zhang Bavol 清华大学核能与新能源技术研究院——核科学与技术/电子爱好者     你说的这个恐惧症我也有一点点,不过现在我是只对那种不是很熟悉的七姑八婆之类的亲戚才会有这种憋屈感觉,对朋友和 ...

  10. Nginx04---实现直播

    比如树莓派开启一个直播服务如何开启: 百度搜索:搭建自己的直播服务器(nginx + RTMP)