在React项目中启用JSX语法

简介: 一、React项目示例二、JSX语法概念三、JSX本质四、启动JSX

React项目中启用JSX语法

 

目录:

一、React项目示例

二、JSX语法概念

三、JSX本质

四、启动JSX

 

 

一、React项目示例


1.创建index.js

//第一步:导入包

import React from 'react'

import ReactDoM from 'react-dom'

 

//第二步:创建虚拟DOM,构建好属性也可不在此构建

const mydiv = React.createElement( 'div', ( id: 'mydiv', title: 'div aaa' )"这是一个div元素’)

 

//第三步:调用render函数渲染

//调用ReactDOM,给一个DOM元素容器

ReactDoM . render(mydiv,document.getElementByid ( ' app ' ))

 

2.创建Index.html

<!DOCTYPE html><html lang "en">

<head>

<meta charset="UPE-8">

 

<title>Index首页</title>

<!-- <script src=" . ./ dist/main.js"></ script> -->

<!-- <script src=" / main .js"></script> -->

</ head>

<body>

<!--创建一个容器,将来渲染的虚拟DoM,会放到容器内显示--><div id="app ></div>

</ body>

</ html>

 

3. 运行项目

(1)  打开终端输入:

//使用npm

PS C:\Users\liulongbin\DesktopIreact-day1

代码\e1.webpack-base> npm run dev

 

(2)  弹出浏览器

image.png

 

回顾:什么时虚拟DOM?

JS对象的形式来表示DOMDOM之间的嵌套关系

 

HTML是最优秀的标记语言;

想要创建虚拟DOM,在页面上即使普通标签

 

官网封装代码:

Const mydiv=<div id=mydiv title=div aaa>这是一个div元素</div>

//类似于html标签语言,但不符合js代码规范

////注意:Js 文件中,默认不能写这种类似于HTM的标记;否则打包会失败;

const mydiv = React.createElement( 'div', ( id: 'mydiv', title: 'div aaa' )"这是一个div元素’)

效果一样

运行代码:

image.png

 

报错解决:

可以使用babel来转换这些Js 中的标签;

 

Const是一个简单的js对象,要么是一个复杂的js对象,在js中混合写入类似于HTTML的语法叫做JSX语法

 

 

二、JSX语法


1.概念

Js 中,混合写入类似于HTM的语法,叫做Jsx语法;

符合XML规范的JS语法

Jsx默认情况下浏览器不识别,可以把jsx语法转一下,通过babel工具转化为react,createElement语法来执行


2.本质

Jsx语法的本质,还是在运行的时候,被转换成了React.createElement 形犹来执行的

转化后通过API调用转换好之后运行在页面

 

3.启动jsx

1)安装babel插件

//安装两套包

运行

Cnpm i     babel-core   babel-loader     babel-plugin-transform-runtime -D

安装执行结果:

image.png

 

//两个语法:第一个预防env,第二个语法stage-0

运行cnpm i babel-preset-errv babel-preset-stage-e -D

安装执行结果:

image.png

打开webpack.config.js

添加:

//向外暴露一个打包的配置对象;因为 webpack是基于Node构建的;所以 webpack支持所有Node API 和语法

 

//webpack默认只能打包处理.js后缀名类型的文件,像.png,vue无法主动处理,所以要配置第三方loader

 

module.exports = {

mode: 'development', ll developmentproduction

// webpack 4.x中,有一个很大的特性,就是约定大于配置﹑约定,默认的打包入口路径是 src -> index.js

plugins: [

htm1P1ugin

] ,

//只要webpack遇见不能处理的东西,都会第一时间需要第三方模块

module: {//所有第三方模块的配置规则

Rules:{//第三方匹配规则,js或者jsx文件结尾的

//一个loader可以写为字符串,多个需要写为数组

//一定要添加exclude,否则整个项目是运行不起来的,会报错

{test:/\.js|jsx$/use:babel-loader’,exclude/node_modules/},//千万别忘记添加排除项

]

}

}

 

2)安装能够识别转换jsx语法的包

babel-preset-react

//把不认识的jsx语法转换为识别的语法

运行cnpm i babel-preset-react -D

 

(3)添加.babelrc]配置文件

 

Bebel项目文件一般放入项目的根目录下,命名为.babelrc,千万不要忘记添加.,要符合js语法规则,双引号且不能写注释

 

{

    //数组:放置所有语法

"presets" : [ "env", "stage-0" , "react"],

//数组:放置所有插件

"plugins": ["transform-runtime""]

//顺序没有差别

}

 

配置好bebal后运行代码:

image.png

实现嵌套:在index.js中添加代码:

Const mydiv=<div id=mydiv title=div aaa>这是一个div元素</div>

<h1>这是一个大大的H1</h1>

 

运行代码:

image.png

这样很方便,当时它不是直接把标签丢在页面,内部是转换的过程

相关文章
|
17天前
|
前端开发 JavaScript 开发者
React:JSX语法入门
React:JSX语法入门
23 0
|
1月前
|
前端开发 JavaScript 测试技术
从零开始搭建react+typescript+antd+redux+less+vw自适应项目
从零开始搭建react+typescript+antd+redux+less+vw自适应项目
45 0
|
1月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
1月前
|
存储 JSON 前端开发
react保姆级搭建新项目
此文主要以ts+vite+router6+antd 快速搭建一个react项目,适用于初学者,用于学习交流
|
1月前
|
XML 前端开发 JavaScript
【前端】深入了解React JSX语法及实例应用
【前端】深入了解React JSX语法及实例应用
15 0
|
1月前
|
移动开发 JavaScript 前端开发
vue/react项目刷新页面出现404的原因以及解决办法
vue/react项目刷新页面出现404的原因以及解决办法
154 0
|
7天前
|
前端开发 JavaScript API
如何学习react
【4月更文挑战第9天】 学习React前,需掌握JavaScript基础,了解React的JSX、组件、props、state和生命周期等概念。安装Node.js和npm,用Create React App搭建环境。学习核心API,如React.createElement、React.render等,并阅读官方文档。实践项目,从Todo List开始,逐渐挑战复杂应用。同时,学习相关技术如Redux、React Router,并参与社区交流,持续关注React新发展。持之以恒,祝学习顺利!
24 10
|
2月前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
4月前
|
人工智能 JSON 前端开发
react17+ts 学习
react17+ts 学习
|
2月前
|
存储 前端开发 JavaScript
从零开始学习React Native开发
【2月更文挑战第1天】React Native是一种跨平台的移动应用程序框架,可以使用JavaScript和React来构建Android和iOS应用程序。本文将带您从零开始学习React Native开发,涵盖了基础知识、组件、样式、布局、API等方面。