react17+ts 学习

news/2023/6/8 0:36:44

文章目录

  • 前言
  • 一、创建一个react项目
      • 启动项目
      • 项目打包
      • 打包命令
      • npm run eject的作用
      • 入口文件分析
      • react的设计理念
  • 二、创建一个react+typescript的项目
      • 创建项目命令
      • 如何让react支持json引入不报错
    • react为什么使用jsx
        • jsx特点
        • jsx命令规范
        • jsx表示对象
        • 如何在jsx中防止注入攻击?
        • jsx的5种模式:
    • 如何在react中配置css样式
      • 配置css module
        • 如何架构项目中的样式文件?
        • 将css样式转化为javascript对象

前言

记录学习react的过程:

本人项目中需要用到react,学的是基于React17 结合TS的教程。


提示:以下是本篇文章正文内容,按照学习先后记录

一、创建一个react项目

https://beta.reactjs.org/learn/start-a-new-react-project

npx create-react-app my-app

npx的作用是什么?

npx是npm5.2以后的新命令。在没有npx以前,想使用react的脚手架工具必须使用执行 npm install -g create-react-app全局安装在电脑里面。 然后再调用create-react-app my-app 工具来创建react应用。而有了npx可以直接使用npx create-react-app my-app这一行命令就可以完成react应用的创建。

启动项目

cd my-app
npm start

项目打包

在这里插入图片描述
react-scripts是react打包的核心组件,相当于wepace的傻瓜版

打包命令

打包命令是npm run build。打包完成后会生成一个build文件夹。将build文件夹下的文件拷贝的nginx的某个静态目录就可以直接浏览使用了。
在这里插入图片描述

npm run eject的作用

可以弹出项目的配置文件,一般项目不怎么使用。

入口文件分析

Created with Raphaël 2.3.0访问入口index.htmlindex.tsxApp.tsx各个子组件和css样式等

大体流程 index.html -> index.tsx -> App.tsx -> 各个子组件和css样式等
在这里插入图片描述

html的内容最后通过虚拟dom的方式挂载到index.html的 id=root的dom下。

react的设计理念

  • 单向数据流

  • 虚拟DOM
    在这里插入图片描述

  • 组件化

二、创建一个react+typescript的项目

创建项目命令

npx create-react-app xxx(项目名) --template typescript

如何让react支持json引入不报错

在tsconfig.json文件下。加入

 "moduleResolution": "node","resolveJsonModule": true,

在这里插入图片描述

react为什么使用jsx

  • React并不强制使用JSX,也可以使用原生JavaScript。
  • React认为视图的本质就是渲染逻辑与UI视图表现的内在统一。
  • React把HTML与渲染逻辑进行了耦合,形成了JSX。

jsx特点

  • 常规的HTML代码都可以与JSX兼容

  • 可以在JSX中嵌入表达式
    在这里插入图片描述
    在这里插入图片描述

  • 使用JSX指定子元素
    在这里插入图片描述
    在这里插入图片描述

jsx命令规范

在这里插入图片描述
在这里插入图片描述

jsx表示对象

在这里插入图片描述

在这里插入图片描述

如何在jsx中防止注入攻击?

在这里插入图片描述
React DOM 在渲染所有输入内容之前,默认会进行转义。
它可以确保在你的应用中,永远不会注入那些并非自己明确编写的内容。
所有的内容在渲染之前都被转换成了字符串
这样可以有效地防止XSS (cross-site-scripting,跨站脚本) 攻击
使用花括号直接引用渲染内容的时候,React会自动转义.

jsx的5种模式:

在tsconfig.json文件下,jsx的有5种模式。

这些模式只在代码生成阶段起作用,类型检查并不受影响
在这里插入图片描述
preserve模式
在preserve模式下生成代码中会保留JSX以供后续的转换操作使用.
输出文件会带有.jsx扩展名
react模式
react模式会生成React.createElement,在使用前不需要再进行转换操作了.
输出文件的扩展名为.js
react-native模式
react-native相当于preserve,它也保留了所有的JSX,但是输出文件的扩展名是.js.
指定模式
可以通过在命令行里使用--jsx标记或tsconfig.json里的选项来指定模式.

如何在react中配置css样式

配置css module

如何架构项目中的样式文件?

在这里插入图片描述

  • 直接使用引入css样式
    最简单的一种引入css的方式》
    在这里插入图片描述
  • css module (模组化)
    最推荐的一种css引入方式。

每个jsx或者tsx文件就被视为一个独立存在的原件。
原件所包含的所有内容也同样都应该是独立存在的。
在这里插入图片描述

具体做法:
①定义css声明
创建src/custom.d.ts

declare module "*.css" {const css: { [key: string]: string };export default css;
}

在这里插入图片描述
②规范命名
App.css 改为 App.module.css

③以对象的方式使用css
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

将css样式转化为javascript对象

1: 安装一个插件。此插件仅作用于开发。
npm install typescript-plugin-css-modules --save-dev
在这里插入图片描述
2: 配置插件
在这里插入图片描述
在tsconfig.json中配置

 "plugins": [{"name": "typescript-plugin-css-modules"}]

针对vscode工具,还需要在根目录下。创建.vscode文件夹。
在这里插入图片描述

{"typescript.tsdk": "node_modules/typescript/lib","typescript.enablePromptUseWorkspaceTsdk": true
}

使用
创建个css文件:
在这里插入图片描述
引入模块化的css文件
在这里插入图片描述


未完,待续。

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

民族企业家周景川:凡事勤则易,凡事惰则难

周利耕,笔名周景川是赫容俏的品牌创始人之一。他说到:凡事勤则易,凡事惰则难,一年之计在于春,一日之计在于寅,一家之计在于和,一生之计在于勤。有句凝聚世界上最聪明思想的话是:&…

凡事都有例外-父类型依赖子类型

抛弃依赖倒置原则中,yqj2065对“抽象不应该依赖细节。细节应该依赖抽象”,描写成“一个毫无价值的废话,都能够包装成令很多人脑洞大开的原则”。 但是,凡事都有例外。 虽然极其罕见,有时候父类型需要事先知道其子类型…

无心剑中译叶芝《凡事皆可诱惑我》

All Things Can Tempt Me 凡事皆可诱惑我 William Butler Yeats 威廉巴特勒叶芝 All things can tempt me from this craft of verse: One time it was a woman’s face, or worse— The seeming needs of my fool-driven land; Now nothing but comes readier to the hand…

“凡事无绝对”这话错在哪里?

凡是无绝对,这句话是绝对的语气。 假设这句话是对的,那么就没有绝对,而这句话本身就是绝对,自我矛盾。 所以这句话错了

德事2023年1月落户上海 “浦西第一高楼”徐家汇中心

德事(TEC)正式宣布,将于2023年01月继续深耕上海核心CBD商圈,并在上海徐家汇开设全新办公中心 - 徐家汇中心(ITC)。新中心位于徐家汇中心三期A座29楼。力求打造位于徐家汇CBD核心内最具规模、最具国际化的高…

办公室租赁赛道细分,德事(TEC)灵活办公空间受热捧

随着经济发展,商业形态变化,传统办公室租赁模式已经难以满足市场的要求。在办公室租赁赛道,德事 (简称TEC) 作为亚洲高端服务式办公室专家,拥有超过170家商务中心,遍布大中华、东南亚、日韩、印度、斯尼兰卡、澳大利亚…

【Energy Reports期刊发表】2022年能源与环境工程国际会议(CFEEE 2022)

【Energy Reports】 【广西大学主办】 2022年能源与环境工程国际会议(CFEEE 2022) 重要信息 会议网址:www.cfeee.org 会议时间:2022年12月16-18日 召开地点:广西-北海 截稿时间:2022年11月10日 录用…

【Energy Reports期刊发表】 2022年能源与环境工程国际会议(CFEEE 2022)

【Energy Reports期刊发表】 2022年能源与环境工程国际会议(CFEEE 2022) 重要信息 会议网址:www.cfeee.org 会议时间:2022年12月16-18日 召开地点:广西-北海 截稿时间:2022年11月1日 录用通知&#x…