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

【React 】react 创建项目配置 jsconfig.json 的作用

在 React 项目中,jsconfig.json 文件扮演着重要的角色,它主要用于配置 JavaScript 或 TypeScript 项目的根目录和其他一些选项,以帮助编辑器(如 VS Code)更好地理解项目的结构和提供智能提示。对于熟悉 Vue 的前端工程师来说,这个概念类似于 Vue 项目中的 .editorconfig 或者 tsconfig.json(对于 TypeScript 项目)。

jsconfig.json 的主要作用

  • 定义项目根目录:通过指定 "baseUrl""paths",你可以帮助编辑器理解模块引用路径,使得导入语句更加简洁。
  • 配置编译选项:虽然 React 项目通常使用 Babel 进行编译,但 jsconfig.json 可以用来设置一些 JavaScript 编译相关的选项,如严格模式、允许的语言特性等。
  • 提供智能提示:当你在 VS Code 等支持该文件的编辑器中工作时,jsconfig.json 有助于提供更准确的代码补全、类型检查和其他智能提示功能。

示例:创建并配置 jsconfig.json

假设你的 React 项目结构如下:

my-react-project/
├── src/
│   ├── components/
│   └── utils/
└── public/

你想要简化对 src/componentssrc/utils 目录的导入路径。你可以在项目根目录下创建一个 jsconfig.json 文件,并添加以下内容:

{"compilerOptions": {"baseUrl": ".","paths": {"@components/*": ["src/components/*"],"@utils/*": ["src/utils/*"]}},"include": ["src"]
}

这样配置后,你就可以使用 @components/ComponentName@utils/utilityName 这样的路径来导入组件和工具函数了,比如:

import MyComponent from '@components/MyComponent';
import myUtility from '@utils/myUtility';

这使得导入语句更加清晰,同时也方便了项目的维护。

注意事项

  • 确保你的编辑器支持 jsconfig.json 并正确配置了以利用这些功能。
  • 对于 TypeScript 项目,应使用 tsconfig.json 来代替 jsconfig.json,因为它提供了更多针对 TypeScript 的配置选项。

通过适当配置 jsconfig.json,你可以提升开发效率和代码质量,特别是在大型项目中,这将变得尤为重要。

个人推荐配置

{"compilerOptions": {"target": "es5","module": "esnext","baseUrl": "./","moduleResolution": "node","paths": {"@/*": ["src/*"]},"jsx": "preserve","lib": ["esnext","dom","dom.iterable","scripthost"]}
}

配置解释:

  • target: "es5" 指定了输出的 ECMAScript 目标版本为 ES5。这意味着 Babel 或 TypeScript 编译器将会把你的代码转换成兼容 ES5 的语法,以确保在老旧浏览器中也能正常运行。

  • module: "esnext" 表示模块系统使用的是最新的 ECMAScript 模块标准(ESM)。这允许你使用 importexport 语句来导入和导出模块,而不是传统的 CommonJS 模块系统。

  • baseUrl: "./" 设置了基础路径,所有相对路径的导入都会以此作为起点。在你的配置中,它被设置为了当前目录,这意味着当你使用路径别名时,路径解析将从项目根目录开始。

  • moduleResolution: "node" 表示采用 Node.js 风格的模块解析策略。这意味着编辑器在查找模块时,将遵循 Node.js 的模块查找算法,即从当前文件夹开始向上查找 node_modules 目录。

  • paths: 这里定义了路径别名。"@/*" 表示任何以 @/ 开头的导入路径都将被映射到 src/ 目录下的相应位置。这使得你可以使用更简洁的路径来导入模块,例如 import Button from '@/components/Button'; 实际上导入的是 src/components/Button

  • jsx: "preserve" 指定 JSX 代码的处理方式为“保留”。这意味着 JSX 代码不会被转换成 React.createElement 调用,而是保持原样。这通常用于你希望由其他工具(如 Next.js)进一步处理 JSX 时。

  • lib: 这个数组列出了项目中使用的库文件,这些库包含了一系列预定义的类型声明。你的配置中包括了 "esnext", "dom", "dom.iterable", 和 "scripthost",它们分别代表最新的 ECMAScript 功能、DOM API、可迭代 DOM 集合以及脚本主机环境的类型支持。这有助于编辑器提供更准确的类型检查和智能提示。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Axure RP界面设计初探:基础操作与实用技巧
  • JavaScript青少年简明教程:异常处理
  • Java 面试常见问题之——static 的用法
  • Android 在布局中tools使用
  • Linux 调试追踪: trace-cmd 和 kernelshark
  • 16个好用到爆的Python实用脚本!
  • 如何用密码保护你的 WordPress 管理员 (wp-admin) 目录
  • 互联网之光与人工智能之光交相辉映,如何抓住5G人工智能红利
  • 为什么企业需要进行能源体系认证?
  • 8.3 字符串中等 306 Additive Number 423 Reconstruct Original Digits from English
  • leetcode 贪心专题——java实现
  • Weblogic 漏洞
  • 【Python系列】Poetry使用指南
  • Excel第33享:借助易用宝将多个表格合并到一个表格
  • 【leetcode】相同的树、另一棵树的子树、翻转二叉树(利用深度优先遍历)
  • CSS3 变换
  • DataBase in Android
  • extjs4学习之配置
  • go append函数以及写入
  • Python进阶细节
  • Python学习之路16-使用API
  • React系列之 Redux 架构模式
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 记一次和乔布斯合作最难忘的经历
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 模型微调
  • 入门级的git使用指北
  • 我是如何设计 Upload 上传组件的
  • 学习笔记TF060:图像语音结合,看图说话
  • 一份游戏开发学习路线
  • 硬币翻转问题,区间操作
  • raise 与 raise ... from 的区别
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • (1)(1.13) SiK无线电高级配置(五)
  • (7) cmake 编译C++程序(二)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (arch)linux 转换文件编码格式
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (纯JS)图片裁剪
  • (多级缓存)多级缓存
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (规划)24届春招和25届暑假实习路线准备规划
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (实战篇)如何缓存数据
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET CORE Aws S3 使用
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net mvc总结
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 跨平台图形库 SkiaSharp 基础应用