当前位置: 首页 > news >正文

React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)

一、简介

  • Vue 项目当中,可以使用 @ 来表示 src/,但在 React 项目中,默认却没有该功能,因此需要进行手动的配置来实现该功能。

    别名主要解决的问题:每个页面都使用路径的方式进行引入,这样很麻烦,效率很低,这个时候可以配置一个别名,来直接使用别名引入。

  • 使用 @craco/craco 可以在不释放 React 隐藏配置($ npm run eject)的情况下就能配置好别名,参考文章。

二、js + react 项目

// 第一步:释放 React 项目的配置文件,如果已经释放,则省略此步
// 注意:这里也可以不用释放,安装某些库来实现部分修改配置,看个人需要
$ npm run eject// 第二步:找到 webpack.config.js 文件
// 找到 resolve 下的 alias 配置项,添加以下两行配置:
resolve: {// 配置别名alias: {// 自定义别名"@": paths.appSrc,"HOOkS": path.resolve(paths.appSrc, "hooks/index"),// ....其他的一些配置}
}// 第三步:创建相关测试文件
// 在 src 目录下,创建一个 hooks 目录,里面创建一个 index.js
// index.js 当中,分别暴露两个函数:
// export function test1(){ console.log(111); }
// export function test2(){ console.log(222); }// 第四步:启动项目并使用
// 以下两种导入方式都可以成功进行导入
import { test1, test2 } from "@/hooks/index";
import { test1, test2 } from "HOOkS";test1();
test2();

三、ts + react 项目

// 第一步:释放 React 项目的配置文件,如果已经释放,则省略此步
// 注意:这里也可以不用释放,安装某些库来实现部分修改配置,看个人需要
$ npm run eject// 第二步:找到 webpack.config.js 文件
// 找到 resolve 下的 alias 配置项,添加以下配置:
resolve: {// 配置别名alias: {// 自定义别名"@": paths.appSrc,"interface": ["src/interface"],"api": path.resolve(paths.appSrc, "api"),"utils": path.resolve(paths.appSrc, "utils"),// ....其他的一些配置}
}// 第三步:在项目根路径下创建:paths.json 文件,内容如下所示:
// 这里单独创建一个 paths.json 文件,是为了跟 tsconfig.json 原始文件区分开,如果不需要区分开也可以直接在 tsconfig.json 中进行追加。
// baseUrl 设置为 ./ 也就是设置为了基于 tsconfig.json 的 ./
// paths当中的配置,都是基于baseUrl的
// "api/*": ["src/api/*"]
// 代表遇到 import {} from "api/*" 时,就从 src/api/* 中引入
// 这里的规则可以参考 TS 的文档:https://www.tslang.cn/docs/handbook/module-resolution.html
{"compilerOptions": {"baseUrl": "./","paths": {"@/*": ["src/*"],"interface": ["src/interface"],"api/*": ["src/api/*"],"utils/*": ["src/utils/*"]}}
}// 第四步:在项目根路径下的 tsconfig.json 当中添加以下代码:
// 即往 compilerOptions 当中添加:"extends": "./paths.json"
{"compilerOptions": {"extends": "./paths.json"}
}// 第五步:创建以下目录和文件
// src/api/rights.ts
// src/utils/menuUtils.ts
// src/interface/index.ts// 第六步:使用
// 注意:(getMenuList、filterMenuForRender、menuItemInterface是对应文件当中导出的内容,这里就是根据个人情况进行导出)
import { getMenuList } from "api/rights";
import { filterMenuForRender } from "utils/menuUtils";
import { menuItemInterface } from "interface";

相关文章:

React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)

一、简介 在 Vue 项目当中,可以使用 来表示 src/,但在 React 项目中,默认却没有该功能,因此需要进行手动的配置来实现该功能。 别名主要解决的问题:每个页面都使用路径的方式进行引入,这样很麻烦&#xff…...

Android 在TextView前面添加多个任意View且不影响换行

实现效果如下: 如上,将头像后面的东西看作一个整体,因为不能影响后面内容的换行,且前面控件的长度是可变的,所以采用自定义View的方法来实现: /*** CSDN深海呐 https://blog.csdn.net/qq_40945489/articl…...

字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。 示例 1: 输入&#xff…...

uni-app直播从0到1实战

1.安装开发工具 2.创建项目 参考:uniapp从零到一的学习商城实战_云澜哥哥的博客-CSDN博客...

Python UI自动化 —— pytest常用运行参数解析、pytest执行顺序解析

pytest常用Console参数: -v 用于显示每个测试函数的执行结果-q 只显示整体测试结果-s 用于显示测试函数中print()函数输出-x 在第一个错误或失败的测试中立即退出-m 只运行带有装饰器配置的测试用例-k 通过表达式运行指定的测试用例-h 帮助 首先来看什么参数都没加…...

LeetCode刷题笔记【25】:贪心算法专题-3(K次取反后最大化的数组和、加油站、分发糖果)

文章目录 前置知识1005.K次取反后最大化的数组和题目描述分情况讨论贪心算法 134. 加油站题目描述暴力解法贪心算法 135. 分发糖果题目描述暴力解法贪心算法 总结 前置知识 参考前文 参考文章: LeetCode刷题笔记【23】:贪心算法专题-1(分发饼…...

java基础面试题 第四天

一、java基础面试题 第四天 1. String 为什么不可变? **不可变对象:**不可变对象在java中就是被final修饰的类就称为不可变对象,具体含义是,不可变对象一但被赋值以后,他的引用地址就不能被修改(它的属性…...

postgresql-常用日期函数

postgresql-常用日期函数 简介计算时间间隔获取时间中的信息截断日期/时间创建日期/时间获取系统时间时区转换 简介 PostgreSQL 提供了以下日期和时间运算的算术运算符。 获取当前系统时间 select current_date,current_time,current_timestamp ;-- 当前系统时间一周后的日…...

【业务场景】用户连点

处理用户连点 1.时间戳处理 思路:通过检查当前时间和上一次触发事件的时间之间的间隔,判断是否允许继续执行。 代码如下: // clickThrottle.js /* 防止重复点击 */ let clickTimer 0function clickThrottle(interval 3000) {let now n…...

zabbix企业微信告警

目前,企业微信使用要设置可信域名 华为云搜索云函数 创建函数 选择http函数,随便输入函数名字 回到函数列表,选择刚创建的函数,创建触发器,安全模式选择none 点击右上角管理 选刚创建的api,右边操作点…...

(高频面试1)Redis缓存穿透、缓存击穿、缓存雪崩

目录 一:缓存数据 1.1 应用场景 1.2:缓存数据出现的问题 1.2.1 缓存穿透 1.2.2 解决办法 1.2.3 缓存击穿 1.2.4 解决办法 1.2.5 缓存雪崩 1.2.6 解决办法 一:缓存数据 1.1 应用场景 数据库查询结果缓存是一种常见的缓存应用场景&a…...

c++推箱子小游戏

上代码: #include <stdio.h> #include <stdlib.h> #include <conio.h>int map[2][7][8] {//0:空的 1:■ :墙//3&#xff1a;☆ 4&#xff1a;★ //目的地和箱子//5&#xff1a;※ //人//7:⊙ //目的(3)和箱子(4)在一起//8&#xff1a;※ //人(5…...

SpringMVC:从入门到精通

一、SpringMVC是什么 SpringMVC是Spring提供的一个强大而灵活的web框架&#xff0c;借助于注解&#xff0c;Spring MVC提供了几乎是POJO的开发模式【POJO是指简单Java对象&#xff08;Plain Old Java Objects、pure old java object 或者 plain ordinary java object&#xff0…...

jmeter 数据库连接配置 JDBC Connection Configuration

jmeter 从数据库获取变量信息 官方文档参考&#xff1a; [jmeter安装路径]/printable_docs/usermanual/component_reference.html#JDBC_Connection_Configuration 引入数据库连接&#xff1a; 将MySQLjar包存放至jemter指定目录&#xff08;/apache-jmeter-3.3/lib&#xff09…...

TVC广告片制作成本多少

电视是广告传播的主要媒介之一&#xff0c;具有广泛的受众群体和较高的覆盖率。通过在电视上播放广告片&#xff0c;企业可以将产品或者服务的信息传达给大量潜在客户&#xff0c;提高知名度和曝光度。接下来由深圳TVC广告片制作公司老友记小编从以下几个方面浅析制作一条TVC广…...

【Express.js】代码规范

代码规范 编程规范&#xff0c;对于一个优秀的项目是不可或缺的&#xff0c;有了良好的代码规范&#xff0c;有益于项目的维护与拓展。 命名规范 命名的第一要义是明了&#xff0c;要让阅读者看到命名就能大概猜测出其意义或用处。 以用户身份&#xff08;userRole&#xff…...

Vue2+Vue3基础入门到实战项目(前接六 副线一)—— 面经 项目

day1 接口文档地址&#xff1a;https://www.apifox.cn/apidoc/project-934563/api-20384515 一、项目功能演示 1.目标 启动准备好的代码&#xff0c;演示移动端面经内容&#xff0c;明确功能模块 2.项目收获 二、项目创建目录初始化 vue-cli 建项目 1.安装脚手架 (已安装…...

QT tcpserver

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 服务端有QTcpServer库&#xff0c;封装了监听操作server new QTcpServer();// 直接监听&#xff0c;内部根…...

Android adb shell svc 知识详解

adb shell svc 详解 文章目录 adb shell svc 详解一、svc 常用命令&#xff1a; 二、svc 命令和使用示例&#xff1a;查看系统是否安装了svc1、svc2、svc help3、svc power svc wifi has been migrated to WifiShellCommand,simply perform translation to cmd wifi set-wifi-e…...

Debian12系统下LAMP环境中Nubuilder4.5的安装

一、环境搭建 按照官方的说法&#xff0c;Apache2和Nginx都可以的&#xff0c;实际上&#xff0c;你最好直接按照 Mariadb\Apache2\Php8.2 这个顺序&#xff0c;搭建LAMP环境较好。不然各种调试&#xff0c;还不一定能够成功。 相关搭建方法&#xff0c;属于一般操作&#xf…...

KITTI 3D目标检测评估工具evaluate_object.cpp编译与使用避坑指南(附修改代码)

KITTI 3D目标检测评估工具深度解析&#xff1a;从编译优化到实战技巧 在自动驾驶算法研发领域&#xff0c;KITTI数据集及其评估工具链已成为行业事实上的黄金标准。作为计算机视觉与自动驾驶研究的重要基础设施&#xff0c;KITTI评估工具的正确使用直接关系到算法性能评估的准确…...

用华为ENSP模拟器复现智慧小区网络:从VLAN划分到三层架构的保姆级配置教程

华为ENSP模拟器实战&#xff1a;智慧小区网络从零搭建全流程指南 当你第一次拿到智慧小区网络设计方案时&#xff0c;那些抽象的拓扑图和配置参数是否让你望而生畏&#xff1f;作为网络工程师成长路上的必经之路&#xff0c;企业级网络搭建从来不是纸上谈兵的游戏。本文将带你用…...

开箱即用!LongCat动物百变秀本地部署指南,小白也能快速上手

开箱即用&#xff01;LongCat动物百变秀本地部署指南&#xff0c;小白也能快速上手 1. 什么是LongCat动物百变秀&#xff1f; LongCat动物百变秀是一款基于美团开源模型开发的AI图片编辑工具&#xff0c;专门用于动物图片的创意编辑。它最大的特点是能够通过简单的自然语言描…...

智能体间通信实践指南

每个雄心勃勃的 AI 项目都会遇到这样的时刻&#xff1a;你碰壁了。你有一个强大的语言模型&#xff0c;你让它做一些复杂的事情——也许从三十个不同角度研究一个主题,或者从头开始构建整个营销活动——但它就是……无法把所有东西整合在一起。上下文变得太大。任务太分散。输出…...

在 Docker 中,如何实现容器之间的通信?

在 Docker 中&#xff0c;容器之间的通信主要通过 Docker 网络&#xff08;Docker Networking&#xff09; 实现。Docker 提供了多种网络驱动和机制&#xff0c;允许容器安全、高效地相互通信。以下是实现容器通信的核心方法和最佳实践&#xff1a;一、核心网络模式 1. Bridge …...

Dexter深度解析:如何用多Agent架构打造自主金融研究AI

一、为什么需要金融AI Agent&#xff1f; 1.1 传统金融研究的痛点 作为开发者&#xff0c;你是否遇到过这样的场景&#xff1a;需要分析一家上市公司的财务状况&#xff0c;却要花费数小时甚至数天时间&#xff1f; 传统金融研究面临三大挑战&#xff1a; 数据分散&#xff1a;…...

当multisim遇见ai助手:快马平台如何智能分析与优化你的电路设计

作为一名电子设计爱好者&#xff0c;最近在InsCode(快马)平台尝试了一个特别有意思的项目——用AI辅助优化Multisim电路设计。整个过程就像有个专业的电子工程师在旁边实时指导&#xff0c;分享下我的实践心得&#xff1a; 直流工作点智能诊断 输入一个简单的晶体管放大电路后&…...

超越单一工具:在快马平台探索多模型ai辅助开发的全新工作流

在开发过程中&#xff0c;AI辅助工具已经逐渐成为提升效率的利器。最近我在尝试使用InsCode(快马)平台时&#xff0c;发现它提供的多模型AI辅助开发能力&#xff0c;远比单一工具更加强大和灵活。下面分享一个我实践的综合示例项目&#xff0c;展示如何利用平台的多模型能力优化…...

气候降尺度全流程实战:从 CMIP6 数据到极端气候预估,科研人一站式通关

做水文气象、气候学、地理遥感、生态环境等领域的科研人&#xff0c;是不是都逃不过这些噩梦&#xff1a;尺度鸿沟难跨越&#xff1a;GCM 粗网格&#xff08;>100km&#xff09;和流域 / 城市精细尺度&#xff08;<10km&#xff09;不匹配&#xff0c;动力降尺度成本太高…...

别再死记硬背PCA公式了!用Python+Open3D实战点云法向量估计(附代码)

用Python实战点云法向量估计&#xff1a;从数学原理到Open3D实现 点云处理是计算机视觉和三维重建中的基础任务&#xff0c;而法向量估计则是理解点云局部几何特征的关键步骤。传统教学中&#xff0c;PCA&#xff08;主成分分析&#xff09;往往被简化为一堆数学公式&#xff…...