web基础学习

news2024/11/26 4:28:55

1、安装

1.1、创建一个 React 新项目

如果你正在学习 React 或者考虑将其应用到现有的项目中,你可以 利用 script 标签将 React 添加到任何 HTML 页面 来快速开启学习之旅。如果你的项目需要许多组件和许多文件,那就需要考虑以下方式了!

1.2、选择你自己的冒险方式

React 是一个工具库,帮你以组件的方式拆解并组织 UI 代码。React 不负责路由(routing)或数据管理。对于这些功能,你需要使用第三方工具库或实现你自己的解决方案。这意味着创建一个新的 React 项目有多种方式可以选择:使用 最小设置的工具链, 根据需要为项目添加功能。使用 功能完备的框架,常用功能都已内置。无论你是刚入门,想要构建一个大项目,还是想要建立自己的工具链,本指南都能为你指明道路。

1.3、React 工具链入门

如果你是刚刚开始接触 React,我们建议你使用 Create React App,这是尝试 React 功能的最流行的方式,也是构建新的单页客户端应用的最好方法。Create React App 是一个专为 React 配置的功能齐备的工具链。工具链有助于:

创建大量的文件和组件

使用来自 npm 的第三方工具库

及早检测到常见错误

开发时能实时编辑 CSS 和 JS

针对生产环境优化输出的文件

你仅需一条命令就可以在终端(命令行)中利用 Create React App 创建一个新项目!(前提是确保安装了 Node.js!

npx create-react-app my-app

现在就可以通过以下命令运行你的应用程序了:

cd my-app
npm start

欲了解更多信息,请 [查看官方指南(https://create-react-app.dev/docs/getting-started)。

Create React App 并不处理后端逻辑或数据库操作,它只是创建了一个针对前端的构建管道。这意味着你可以为其对接任何后端。但是,如果你寻找的是对类似路由(routing)以及服务器端业务逻辑功能的支持的话,请接着往下看!

1.4、同时使用 React 和框架

如果你希望创建一个更大的、可用于生产环境的项目的话,Next.js 是一个非常好的起点。Next.js 是一个流行的、基于 React 构建的轻量级框架,用于构建静态和服务器端渲染的应用程序。该框架自带了路由(routing)、样式表( styling)和服务器端渲染(server-side rendering)等功能,可以让你的项目快速开始并运行起来。

请查看 Next.js 的官方指导:使用 Next.js 构建项目 。

1.5、其他选项

Gatsby 能帮你基于 React 和 GraphQL 生成静态网站。

Razzle 是一个支持服务器端渲染(server-rendering)的框架,无需任何配置,但比 Next.js 提供了更多的灵活性。

1.6、自定义工具链

你可能更喜欢创建并配置自己的工具链。一个 JavaScript 构建工具链通常包含以下部分:

一个 软件包管理器—用于安装、更新和管理第三方软件包。Yarn 和 npm 就是两个比较流行的软件包管理器。

一个 打包工具(bundler)—将您编写的模块化代码打成小包以优化加载时间。Webpack、Snowpack、Parcel 就是几个比较流行的打包工具。

一个 编译器—将你使用新语法编写的 JavaScript 代码转换成能被老版本的浏览器执行的代码。Babel 就是这类工具中的一个代表。

在较大的项目中,你可能还需要一个工具来管理单一仓库中的多个软件包。Nx 就是此类工具中的一个代表。

如果你喜欢葱头开始创建自己的 JavaScript 工具链的话,请 查看这份指南 来了解如何自行实现 Create React App 中的功能。

2、为网站添加 React

React 从一开始就被设计为支持渐进式采用,你可以根据需要或多或少地使用 React。无论是微前端(micro-frontends)、现有系统,还是只是尝试一下 React,都可以通过添加几行代码就能为页面添加交互式的 React 组件,并且无需使用构建工具!

2.1、第一步:在页面中添加一个 HTML 元素

在要编辑的 HTML 页面中添加一个 HTML 元素,例如带有唯一 id 属性的空的 <div> 标签,该标签用于 React 定位内容显示的位置。

你可以在 <body> 标签内的任何位置放置一个类似 <div> 的“容器”元素。React 将把该 HTML 元素内的任何内容替换掉,因此一个空标签即可。你可以根据需要在页面上放置任意多个类似的 HTML 元素。

<!-- ... existing HTML ... -->
  <div id="component-goes-here"></div>
<!-- ... existing HTML ... -->

2.2、第二部:添加 script 标签

在 HTML 页面中,将以下三个文件通过 <script> 标签添加到 </body> 标签前:

react.development.js 加载 React 核心代码

react-dom.development.js 让 React 渲染 HTML 元素到 DOM 中。

like_button.js 这将是你在第三步中编写组件的地方!

部署到生产环境时,将 “development.js” 文件替换为 “production.min.js” 文件。

<!-- end of the page -->

<script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin></script>
<script src="like_button.js"></script>
</body>

React without JSX

最初引入 JSX 是为了让使用 React 编写组件的感觉就像写 HTML 一样。从那时起,改语法变得流行起来。但是,在某些情况下,你可能不想使用或无法使用 JSX。那么你有两个选择:

使用类似 htm 之类的 JSX 替代方案,htm 不需要编译器,而是使用 JavaScript 内置的标记模板(Tagged Templates)语法。

使用 React.createElement() 函数,该函数具有特殊结构,后面有详解。

通过使用 JSX,你可以像这样编写组件:

function Hello(props) {
  return <div>Hello {props.toWhat}</div>;
}

ReactDOM.render(<Hello toWhat="World" />, document.getElementById('root'));

而使用 React.createElement() 函数的化,你需要像这样编码:

function Hello(props) {
  return React.createElement('div', null, `Hello ${props.toWhat}`);
}

ReactDOM.render(
  React.createElement(Hello, {toWhat: 'World'}, null),
  document.getElementById('root')
);

该函数接受三个参数: React.createElement(component, props, children)。以下解释器工作原理:

一个 component 参数,可以实一个代表 HTML 元素的字符串,也可以是一个函数形式的组件

一个对象,可以是任何 你想传入的 props

一个对象,可以是任何  组件,例如文本字符串

如果你厌倦了输入 React.createElement(),一个常规的办法是为其赋予一个速记符:

const e = React.createElement;

ReactDOM.render(e('div', null, 'Hello World'), document.getElementById('root'));

如果将此速记符来代替 React.createElement(),就能在不使用 JSX 的情况下达成同样的便利。

3、设置编辑器

一个正确配置的编辑器能够让读代码更清晰、写代码更快。它甚至可以帮你在写代码时捕获 bug!如果这是你第一次设置编辑器,或者你希望调整编辑器,以下是我们的一些建议。

3.1、选择你的编辑器

VS Code 是如今最流行的编辑器之一。它拥有一个庞大的插件市场,并集成了 GitHub 等流行的服务。下面列出的功能大部分可以作为插件添加到 VS Code 中,插件让 VS Code 高度可配置!

React 社区中其它常用的编辑器包括:

WebStorm—专为 JavaScript 设计的集成开发环境。

Sublime Text—支持 JSX 和 TypeScript,内置了语法高亮和自动代码补全功能。

Vim—一个高度可配置的文本编辑器,能够高效地创建和修改任何类型的文本。它作为 “vi” 命令存在于大多数 UNIX 系统和 Apple OS X 中。

某些编辑器内置了这些功能,但其它编辑器可能需要安装插件。请查看你所选择的编辑器是支持以下功能!

代码过滤(Linting)

代码过滤的作用是在你书写代码时发现代码中的错误,并帮助你今早修复错误。ESLint 是一个流行的、开源的 JavaScript 过滤器。

  • 安装 ESLint 并使用 React 的推荐配置 (请确保 Node 已安装!)
  • 利用官方插件将 ESLint 集成到 VSCode 中

格式化

与其他贡献者共享代码时,最不想做的事情就是讨论用 制表符(tabs)还是空格(spaces)!幸好,有 Prettier 来重新清理代码使其符合预定义的规则。运行 Prettier,所有的制表符(tabs)都将转换为空格(spaces),缩进、引号等也将全部根据配置被修改。理想的设置是当你保存文件时,Prettier 就会运行并帮你完成这些修改。

你可以按如下步骤安装 Prettier extension in VSCode :

  1. 启动 VS Code
  2. 按快捷键( CTRL/CMD + P
  3. 粘贴 ext install esbenp.prettier-vscode
  4. 按回车键
保存文件时执行格式化

理想情况下,应该是在你每次保存文件时格式化代码。VS Code 已支持此设置!

  1. 在 VS Code 中,按CTRL/CMD + SHIFT + P
  2. 输入 “settings”
  3. 按回车键
  4. 在搜索栏中,输入 “format on save”
  5. 确保勾选了 “format on save” 选项!

Prettier 有时会与其它代码过滤其产生冲突。但是通常都会有办法让它们很好地配合工作。例如,如果需要同时使用 Prettier 和 ESLint,则可以使用 eslint-prettier 插件并通过 ESLint 规则来运行 prettier。

3.4、React 开发者工具

通过 React 开发者工具(React Developer Tools)可以检查 React components、编辑 props 和 state,以及定位性能问题。

浏览器扩展

对使用 React 构建的网站进行调试的最简单方法就是安装并使用 React 开发者工具的浏览器扩展插件。该插件支持几种常简的浏览器:

  • 为 Chrome 浏览器安装扩展插件
  • 为 Firefox 浏览器安装扩展插件
  • 为 Edge 浏览器安装扩展插件

现在,如果你访问 基于 React 构建的网站 时,你将看到 ComponentsProfiler 面板。

Safari 和其它浏览器

对于其它浏览器(例如 Safari),请安装 react-devtools 这一 npm 软件包:

 

# Yarn

yarn global add react-devtools

# Npm

npm install -g react-devtools

然后从终端(命令行)中开启开发者工具:

 

react-devtools

然后,通过在网站的 <head> 标签内添加以下 <script> 标签来连接网站:

 

<html>

<head>

<script src="http://localhost:8097"></script>

现在,在浏览器中刷新网站,就能使用开发者工具了。

移动端(React Native)

React 开发者工具也可用于检查基于 React Native 构建的应用程序。

将 React 开发者工具安装到全局环境中是最简单的方式:

 

# Yarn

yarn global add react-devtools

# Npm

npm install -g react-devtools

接下来打开终端(命令行)就可以使用开发者工具了。

 

react-devtools

该工具就可以连接到任何运行在本地机器上的 React Native 应用程序了。

如果开发者工具经过几秒后仍无法连接,请尝试重启应用程序。

了解有关调试 React Native 的详细信息。

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

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

相关文章

WinMerge v2 (开源的文件比较/合并工具)

前言 WinMerge 是一款运行于Windows系统下的免费开源的文件比较/合并工具&#xff0c;使用它可以非常方便地比较多个文档内容甚至是文件夹与文件夹之间的文件差异。适合程序员或者经常需要撰写文稿的朋友使用。 一、下载地址 下载链接&#xff1a;http://dygod/source 点击搜…

【干货】Android中高级开发进阶必备资料(附:PDF+视频+源码笔记)

4、数据传输与序列化 5、Java虚拟机原理 6、高效IO 设计思想解读开源框架 随着互联网企业的不断发展&#xff0c;产品项目中的模块越来越多&#xff0c;用户体验要求也越来越高&#xff0c;想实现小步快跑、快速迭代的目的越来越难&#xff0c;插件化技术应用而生。如果没有…

Python: HexBinDecOct

因为&#xff1a; f0b1001110# 十进制 int()a0*2**01*2**11*2**21*2**30*2**40*2**51*2**6print(a)# 八进制 oct()print(78/8,78%8)# 110 001 001 8 116print(1*2**00*2**10*2**2,1*2**00*2**10*2**2,0*2**01*2**11*2**2)#十六进制 hex()#0 100 1110 16 4Eprint(sixteenFoo(0*…

leetcode 二分查找·系统掌握 第一个错误版本

题意&#xff1a; 题解&#xff1a; 就是经典的~01~泛型查找&#xff0c;而且一定存在这样错误的版本所以查找不会"失败"&#xff0c;返回每次查找结果即可。 int firstBadVersion(int n) {long l1,rn,mid;while(l<r){mid(lr)>>1;if(isBadVersion(mid))r…

wordpress教程自动采集并发布工具

随着互联网的快速发展&#xff0c;越来越多的人开始关注网络赚钱。而对于许多人来说&#xff0c;拥有一个自己的个人网站是一个不错的选择。然而&#xff0c;要让自己的个人网站内容丰富多样&#xff0c;就需要不断地进行更新。那么&#xff0c;有没有一种方法可以让我们轻松地…

【大数据 复习】第7章 MapReduce(重中之重)

一、概念 1.MapReduce 设计就是“计算向数据靠拢”&#xff0c;而不是“数据向计算靠拢”&#xff0c;因为移动&#xff0c;数据需要大量的网络传输开销。 2.Hadoop MapReduce是分布式并行编程模型MapReduce的开源实现。 3.特点 &#xff08;1&#xff09;非共享式&#xff0c;…

Java学习 - 网络IP协议簇 讲解

IP协议 IP协议全称 Internet Protocol互联网互连协议 IP协议作用 实现数据在网络节点上互相传输 IP协议特点 不面向连接不保证可靠 IP协议数据报结构 组成说明版本目前有IPv4和IPv6两种版本首部长度单位4字节&#xff0c;所以首部长度最大为 15 * 4 60字节区分服务不同…

深度学习windows环境配置

1 下载CUDA和cudnn 详见文章 CUDA与CUDNN在Windows下的安装与配置&#xff08;超级详细版&#xff09;_windows cudnn安装-CSDN博客 我电脑的CUDA下载链接如下 ​​​​​https://developer.nvidia.com/cuda-12-1-0-download-archive?target_osWindows&target_archx86…

第10章 启动过程组 (制定项目章程)

第10章 启动过程组 9.1制定项目章程&#xff0c;在第三版教材第356~360页&#xff1b; 文字图片音频方式 视频12 第一个知识点&#xff1a;主要输出 1、项目章程&#xff08;重要知识点&#xff09; 项目目的 为了稳定与发展公司的客户群(抽象&#xff0c;非具体) 可测量的项目…

Pytho字符串的定义与操作

一、字符串的定义 Python 字符串是字符的序列&#xff0c;用于存储文本数据。字符串可以包括字母、数字、符号和空格。在 Python 中&#xff0c;字符串是不可变的&#xff0c;这意味着一旦创建了一个字符串&#xff0c;就不能更改其中的字符。但是&#xff0c;你可以创建新的字…

头歌资源库(15)活动安排问题

一、 问题描述 二、算法思想 这是一个经典的贪心算法问题&#xff0c;可以使用贪心算法进行求解。 首先&#xff0c;将所有活动按照结束时间从小到大进行排序。假设已经排好序的活动列表为S。 然后&#xff0c;选择第一个活动&#xff0c;将其加入到安排列表中。 接下来&…

mysql中返回日期格式带有T、Java解决返回日期格式带 ‘T‘ 问题、MySQL查询日期为什么带T、java.util.Date()类型为什么有T

文章目录 一、场景描述&#xff1a;Mysql返回日期格式带有T二、解决方法2.1、方法一&#xff1a;通过注解格式化2.2、方法二&#xff1a;通过全局配置2.3、方法三&#xff1a;查询时手动转换时间格式 三、mysql 数据库时间类型数据为什么有T3.1、什么是ISO 8601格式 四、java中…

字节跳动+京东+360+网易+腾讯,那些年我们一起踩过算法与数据结构的坑!(1)

**二面&#xff1a;**已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度&#xff08;每层中自 左到右输入&#xff09;&#xff0c;试写出构造此树的孩子-兄弟链表的算法。 **三面主管面&#xff1a;**已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中&…

Java基础的重点知识-03-方法与数组

文章目录 方法数组 方法 定义方法的格式详解 修饰符 返回值类型 方法名(参数列表){//代码省略...return 结果; }修饰符&#xff1a; public static 固定写法返回值类型&#xff1a; 表示方法运行的结果的数据类型&#xff0c;方法执行后将结果返回到调用者参数列表&#xff1…

[实践篇]13.29 再来聊下Pass Through设备透传

写在前面 为什么要再聊天Pass Through? 因为在QNX + Linux Android的技术方案下,我们会遇到LA发生reboot或异常panic后,无法正常开机。而再次异常的原因确实最头疼的Memory Corruption。观察下来是由于一些DMA外设如使用UART的一些设备在重启或panic后,没有正常走Shutdow…

基于matlab的BP神经网络分类预测

1.神经网络结构 本文网络结构如图1所示&#xff1a; 图1 网络结构 图1给出的并不是单纯的bp神经网络结构这里设置了三个隐藏层&#xff0c;神经元个数分别为6&#xff0c;3&#xff0c;3&#xff0c;输入层12个特征输入&#xff0c;输出层输出4个类型结果。 2.代码 %% 清空环…

机器学习好神奇,来看看Lasso的超参数调整与模型选择

目录 一、什么是机器学习&#xff1f;二、稀疏建模介绍三、Lasso回归简介四、Lasso超参数调整与模型选择 一、什么是机器学习&#xff1f; 机器学习是一种人工智能技术&#xff0c;它使计算机系统能够从数据中学习并做出预测或决策&#xff0c;而无需明确编程。它涉及到使用算…

RocketMQ源码学习笔记:Broker启动流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Broker启动流程2、一些重要的类2.1、MappedFile2.2、MessgeStore2.3、MessageStore的加载启动流程 3、技术亮点3.1、 内存映射3.1.1、简介3.1.2、源码 1、Broker启动流程 Broker启动流程…

Java IO模型BIO、NIO、AIO介绍

第一章 BIO、NIO、AIO课程介绍 1.1 课程说明 在java的软件设计开发中&#xff0c;通信架构是不可避免的&#xff0c;我们在进行不同系统或者不同进程之间的数据交互&#xff0c;或者在高并发下的通信场景下都需要用到网络通信相关的技术&#xff0c;对于一些经验丰富的程序员来…

envi5.6+SARscape560安装(CSDN_20240623)

envi和SARscape的版本必须匹配&#xff0c;否则有些功能不能使用。 Envi5.6安装 1. 点击安装程序. 2. 进入安装界面&#xff0c;点击“Next”. 3. 选择“I accept the agreement”&#xff0c;点击“Next”。 4. 选择安装路径&#xff0c;建议直接安装在默认路径下&#xff0…