react快速开始(三)-create-react-app脚手架项目启动;使用VScode调试react

news2025/1/15 6:29:05

文章目录

  • react快速开始(三)-create-react-app脚手架项目启动;使用VScode调试react
    • 一、create-react-app脚手架项目启动
      • 1. react-scripts
      • 2. 关于better-npm-run
        • better-npm-run安装
    • 二、使用VScode调试react
      • 1. 浏览器插件React Developer Tools
      • 2. 【重点】用 VSCode debugger 来调试

react快速开始(三)-create-react-app脚手架项目启动;使用VScode调试react

一、create-react-app脚手架项目启动

create-react-app(以下简称cra)作为react官方提供的脚手架工具,是目前生成react项目一个非常常用和主流的工具。很多企业级的应用搭建也是基于这个脚手架工具上二次开发

create-react-app脚手架 生成的 package.json中 scripts如下:

在这里插入图片描述
我们看到分别是项目的启动开发环境,构建,测试的命令只有启动,没有debug模式,那么我们要在vscode中添加断点调试如何做呢?

1. react-scripts

react-scripts的工作原理
参考URL: https://www.jianshu.com/p/20362733902a/

react-scripts是create-react-app入门包中的一组脚本;create-react-app可以启动项目而无需进行配置;react-scripts start可以设置开发环境并启动服务器,以及热模块重新加载。

create-reate-app 的使用

npx create-react-app my-app
cd my-app
npm start

从上面代码中可以看出执行npm start 命令时,运行的是react-scripts start,由此可见react-scripts 这个库,是启动这个项目的核心,它这里封装了些什么呢?

.bin/react-scripts.cmd 文件中得出,react-scripts start 等命令,实际上调用的是 …\react-scripts\bin\react-scripts.js这个文件。

正是因为有了react-scripts的集成化能力,项目目录才会如此简洁。
但这也限制了灵活性,使得我们很难对其内部做出修改。

npm run eject

如果熟悉webpack的小伙伴,知道package.json中的配置会很多,而react脚手架中的package.json中,依赖为什么这么少。这是因为像webpack,babel等等都是被creat react app封装到了react-scripts这个项目当中,包括基本启动命令 都是通过调用react-scripts这个依赖下面的命令进行启动的。npm run eject,会将原本creat react app对webpack,babel等相关配置的封装弹射出来,如果我们要将creat react app配置文件进行修改,现有目录下是没有地方修改的,此时,**我们就可以通过eject命令将原本被封装到脚手架当中的命令弹射出来,然后就可以在项目的目录下看到很多配置文件。**但这个操作是不可逆的,我们无法再通过其他方式将这些暴露出来的配置还原回去。

npm run eject 意思是开发者开始管控和自定义处理所有配置项和打包配置,而且是永久性的
如果想要自己修改webpack之类的配置需要执行npm run eject弹出配置文件 但这个操作是不可逆的。

一般不需要做这个操作!

2. 关于better-npm-run

通过better-npm-run这个包,我们把脚本命令写得更具有层次感,虽然代码量增加了,但结构更加清晰。

然后你就可以在你的package.json里面使用一个新的字段—— "betterScripts"字段

better-npm-run安装

npm i better-npm-run

然后你就可以在你的package.json里面使用一个新的字段—— "betterScripts"字段,它和"scripts"字段很像,那么两者间有什么联系呢?

"scripts": {
   "test": "NODE_ENV=production karma start"
}

变成:

"scripts": {
    "test": "better-npm-run test"
},
"betterScripts": {
    "test": {
        "command": "karma start",
        "env": {
            "NODE_ENV": "test"
          }
       }
}

二、使用VScode调试react

背景:
在面向dom开发的时代,我们开发时直接在chrome里打断点是很方便的。
但是,当我们面向组件开发时(react),浏览器拿到的是我们编译过后的代码,还想在浏览器里打断点几乎是不可能的了。

1. 浏览器插件React Developer Tools

官方:https://react.dev/learn/react-developer-tools
**调试使用 React 构建的网站的最简单方法是安装 React Developer Tools 浏览器扩展。**它适用于多种流行的浏览器:
现在,如果您访问使用 React 构建的网站,您将看到“组件”和“分析器”面板。
在这里插入图片描述

2. 【重点】用 VSCode debugger 来调试

  1. 安装 VSCode 调试插件
    Debugger for Chrome 扩展已经被废弃,改为使用 JavaScript Debugger (Nightly)
    这个扩展是 VS Code 自带的新 JavaScript 调试器,可以替代 Debugger for Chrome。
    在这里插入图片描述
    在项目根目录下创建 .vscode/launch.json 文件,添加配置:
{
    "version": "0.2.0",
    "configurations": [
      {
        "type": "chrome",
        "request": "launch",
        "name": "Launch Chrome against localhost",
        "url": "http://localhost:3000",
        "webRoot": "${workspaceFolder}"
      }
    ]
  }
  
  1. 设置断点,启动项目,打开调试面板
  2. 选择刚才的配置,点击启动调试按钮即可在 Chrome 中调试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/960938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mediasoup在node.js下多线程实现

mediasoup基于socket.io的交互消息来完成join-room的请求过程。Join的过程,实际就是获取stream的过程,也就是视频加载时间(video-load-speed)。在RTMP系统,视频加载时间是秒开。Mediasoup给出的第一个frame是I-frame,但由于交互的…

web服务基础以及简单的站点应用部署

一、 简述静态网页和动态网页的区别。 静态网页: 优势: ①访问的效率比较高 ②网页内容是固定不变的,因此,容易被搜索引擎收录 ③网页程序在用户浏览器端解析,当客户端向服务器请求数据时,服务器会直接从磁…

2001-2021年中国城市分产业创新指数(574万+)

2001-2021年中国城市分产业创新指数(574万) 1、时间:2001-2021年 2、来源:中国城市和产业创新力报告 3、指标:包括城市创新指数、产业创新指数、城市-产业创新指数 4、整理方式: 整理方式是基于国家知…

【重要】Nand Flash基础知识与坏块管理机制的介绍

概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block&…

javaee spring 测试aop 切面

切面类 package com.test.advice;import org.aspectj.lang.ProceedingJoinPoint;//增强类 public class MyAdvice {//将这个增强方法切入到service层的add方法前public void before(){System.out.println("添加用户之前");}}目标类 package com.test.service;publi…

怎样获取百度网盘的 “access_token“

怎样获取百度网盘的 “access_token” 文中AppKey、AppID,需要进入百度网盘开放平台 (baidu.com) 申请加入——>开发者认证——>创建应用,然后就有了 授权码模式获取 授权码模式 (baidu.com) # 这是官方网站,我看官方文件的时候&…

echarts自定义Y轴刻度及其颜色

yAxis: [{min:0,max:5,axisLabel: {color: "#999",textStyle: {fontSize: 14,fontWeight: 400,// 设置分段颜色color: function (value) {console.log("试试", value);if (value 1) {return "rgba(140,198,63,1)";} else if (value 2) {return…

CANalyzer panel

(1205条消息) CAPL 脚本中对信号,系统变量,环境变量的 事件响应_capl programs脚本怎么写信号运算_蚂蚁小兵的博客-CSDN博客 注意环境变量是在工程关联的dbc中创建的;而系统变量是在CANoe工程工具栏的”Environment”下的”System Variables”…

three.js(一):认识three.js并创建第一个3D应用

three.js 概述 1-three.js 是什么? three.js是用JavaScript编写的WebGL第三方库;three.js 提供了非常多的3D显示和编辑功能;具体而言,three.js 是一款运行在浏览器中的 3D 引擎,可以用three.js 创建各种三维场景,并对其进行编辑…

事务的总结

数据库事务 数据库事务是一个被视为单一的工作单元的操作序列。这些操作应该要么完整地执行,要么完全不执行。事务管理是一个重要组成部分,RDBMS 面向企业应用程序,以确保数据完整性和一致性。事务的概念可以描述为具有以下四个关键属性描述…

C语言基础知识理论版(很详细)

文章目录 前述一、数据1.1 数据类型1.2 数据第一种数据:常量第二种数据:变量第三种数据:表达式1、算术运算符及算术表达式2、赋值运算符及赋值表达式3、自增、自减运算符4、逗号运算符及其表达式(‘顺序求值’表达式)5…

AOP到底是啥

AOP到底是啥 前言面向切面编程到底是啥意思那么要怎么实现面向切面编程呢?成果 前言 回忆起来,第一次听到这三字母是博主在上大二的时候,那时候看的一脸懵逼,现在马上研二了才想起来回顾下。 只记得当时面向对象编程还没整明白&…

深入理解协同过滤算法及其实现

导语 个性化推荐系统在现代数字时代扮演着重要的角色,协助用户发现他们可能感兴趣的信息、产品或媒体内容。协同过滤是个性化推荐系统中最流行和有效的算法之一。 目录 协同过滤算法的原理 基于用户的协同过滤(User-Based Collaborative Filtering&am…

ubuntu tensorrt 安装

官网,非常详细,比大部分博客写的都好,强烈推荐 具体的点进链接

Vue2项目练手——通用后台管理项目第五节

Vue2项目练手——通用后台管理项目 首页组件布局面包屑&tag面包屑使用组件使用vuex存储面包屑数据src/store/tab.jssrc/components/CommonAside.vuesrc/components/CommonHeader.vue tag使用组件文件目录CommonTag.vueMain.vuetabs.js 用户管理页新增功能使用的组件页面布局…

计算机图形学线性代数相关概念

Transformation(2D-Model) Scale(缩放) [ x ′ y ′ ] [ s 0 0 s ] [ x y ] (等比例缩放) \left[ \begin{matrix} x \\ y \end{matrix} \right] \left[ \begin{matrix} s & 0 \\ 0 & s \end{matrix} \right] \left[ \begin{matrix} x \\ y \en…

74天从构想到“首开式”,长沙建设全球研发中心城市跑出“加速度”

文 | 智能相对论 作者 | 胡静婕 为引鲲鹏入湘,长沙曾做到1天完成工商注册,10天完成土地审批流转,从项目筹建到一期厂房交付仅耗时120天。 “长沙速度”,让华为都感到惊讶,华为技术有限公司徐直军就曾表示&#xff1…

使用远程桌面软件改善工作与生活的平衡

在当今高度互联的世界中,我们的工作和个人生活之间的界限变得越来越模糊。在本文中,我们将探讨像 Splashtop 这样的远程桌面工具如何成为实现和谐工作与生活平衡不可或缺的一部分。 在当今的背景下理解工作与生活的平衡 工作与生活的平衡不仅仅是一个时…

C++、C#、JAVA 、 DELPHI、VB各个程序的优缺点你知道吗?

每种编程语言都有自己的优势和缺点,以下是对C、C#、Java、Delphi和VB的一些常见评价:C:优势:高性能、灵活性和可移植性强,适合对性能要求高的应用,可以进行系统级编程和嵌入式开发。缺点:语法复杂&#xff…

DRM全解析 —— CREATE_DUMB(3)

接前一篇文章:DRM全解析 —— CREATE_DUMB(2) 本文参考以下博文: DRM驱动(三)之CREATE_DUMB 特此致谢! 上一回讲解了drm_mode_create_dumb函数的前半部分,本回讲解余下的部分。 为…