React基础第一天-jsx

2023-11-17

React 基础

整体介绍

内容介绍

  1. React 概述

  2. JSX

  3. React 组件基础

React 介绍

目标

了解react的基本概念,

是什么

在这里插入图片描述

React 是用于构建用户界面的 JavaScript 库

  • 构建用户界面. User Interface,对咱们前端来说,简单理解为:HTML 页面
  • javscrtipt库。不是框架,是库。
    • vue: 是渐进式的javascript框架
    • react 全家桶是框架
      • react: 核心库
      • react-dom: dom操作
      • react-router:路由,
      • redux:集中状态管理

拓展

  1. 框架背景
    1. react是Facebook(meta) 内部项目
    2. vue是尤雨溪个人作品
    3. angular是goole公司产品
  2. 趋势
    1. react全球第一
    2. vue在国内较多,react也慢慢多了
    3. angular在跨国公司使用较多

react, vue, angular的下载趋势

小结

react是?构建用户界面的js库。

React 特点

目标

了解react的特点

声明式

只需要描述UI看起来时什么样的,就跟写html一样。

用类似于html的语法来定义页面。react中通过数据驱动视图的变化,当数据发生改变react能够高效地更新并渲染DOM。

<div className="app">
    <h1>Hello React! 动态数据变化:{count}</h1>
</div>

组件化

组件是react中最重要的内容

组件用于表示页面中的部分内容

组合、复用多个组件,就可以实现完整的页面功能

学习一次,随处使用

使用react/rect-dom可以开发Web应用

使用react/react-native可以开发移动端原生应用(react-native)RN

使用react可以开发VR(虚拟现实)应用(react/react360)

小结

从你的角度看 React 特点:工资高、大厂必备(阿里,字节,百度、腾讯、京东、蚂蚁金服、拼多多、美团、外企、银行等都在用)

react的三个特点:

  • 声明式
  • 组件化
  • 一次学习多次使用

React脚手架-从零开始创建项目

目标

掌握react脚手架的使用

脚手架create-react-app

官方工具: create-react-app

创建方式1

  1. 全局安装脚手架工具包

    命令:npm i -g create-react-app

  2. 用脚手架工具来创建项目

    命令:create-react-app your-project-name

创建方式2

直接使用npx来创建项目

命令:

npx create-react-app your-project-name

解释:

  • npx create-react-app 是固定命令,create-react-app 是 React 脚手架的名称
  • your-project-name 表示项目名称,可以修改

拓展

  1. npx 是 npm v5.2 版本新添加的命令,用来简化 npm 中工具包的使用

  2. 没有npx之前:

    1. 全局安装npm i -g create-react-app
    2. 在通过脚手架的命令来创建 React 项目
  3. 有了npx之后

    npx 调用最新的 create-react-app 直接创建 React 项目

React脚手架-了解项目的工作方式

目标

认识react项目目录结构

启动项目

npm start

目录src

在这里插入图片描述

说明:

  • src 目录是我们写代码进行项目开发的目录
  • index.js是入口文件
  • 查看 package.json 两个核心库:reactreact-dom(脚手架已经帮我们安装好,我们直接用即可)

调整

  1. 删除 src 目录下的所有文件

  2. 创建src/index.js, 内容如下:

    console.log('我的第一个react项目跑起来啦')
    

查看效果

在浏览器控制台中查看效果

工作原理

webpack会实时自动打包,并把代码嵌入到public/index.html文件中,并执行。

小结

  1. 我们在哪里写代码?

  2. 入口文件是?

第一份react程序

目标

了解react程序的基本步骤

步骤

  1. 导入包: React, ReactDOM
  2. 创建 react元素
  3. 渲染元素到某个dom上

示例

在页面上创建一个h1标题。

代码:index.js

// 导入react和react-dom
import React from 'react'
import ReactDOM from 'react-dom'

// 创建元素
const title = React.createElement('h1', {id:'box'}, 'hello react')

// 渲染react元素
ReactDOM.render(title, document.getElementById('root'))

效果:

在浏览器中查看

理解react-dom

rect包 提供必要功能来定义react组件。

react-dom包用来将react组件渲染到dom中。

react-native包 用来将react组件渲染到IOS和Android程序中。

package.json

在这里插入图片描述

小结

react包的作用是?

react-dom包的作用是?

一个react程序的三个步骤是?

练习

目标

用脚手架工具创建一个名为react-demo的项目,并在页面上渲染如下dom结构

<div>
  <h1>
    第一个react程序
  </h1>
  <p>
    react是用来构建用户界面的js库
  </p>
</div>

要点

React.createElement的格式:

React.createElement('标签名',{标签上的属性1:值1},子元素1,子元素2)

参考

https://zh-hans.reactjs.org/docs/react-api.html#createelement

JSX介绍-基本使用

问题导入

createElement的效率太低了。

  • 繁琐不简洁
  • 不直观,无法一眼看出所描述的结构
  • 不优雅,开发体验不好

在这里插入图片描述

目标

了解JSX的定义,了解它的工作过程

JSX是什么

JSX:是 JavaScript XML的缩写。

  • 在 JS 代码中书写 XML 结构

  • React用它来创建 UI(HTML)结构

理解:我们之前用html写页面,现在是用jsx来写页面

jsx示例

// 导入react和react-dom
import React from 'react'
import ReactDOM from 'react-dom'

// jsx创建元素
const list = <ul><li>html</li><li>js</li><li>css</li><ul>

// 渲染react元素
ReactDOM.render(list, document.getElementById('root'))

优势

  • 采用类似于 HTML 的语法,降低了学习成本,会 HTML 就会 JSX
  • 充分利用 JS 自身的能力来创建 HTML 结构。比如,利用 JS 数组的 map 方法创建列表结构

拓展:JSX是如何工作的?

babel在线使用

jsx —babel—> React.createELement

在这里插入图片描述

小结

  1. jsx是什么的简写?
  2. jsx的作用是?
  3. jsx相比createElement的好处?
  4. 为啥在js代码中可以直接写jsx的代码?

JSX的注意事项

目标

掌握JSX的5个注意事项

内容

  1. jsx必须要有一个根节点
  2. 属性名不能用js中的关键字。例如class, for
  3. 单标签要闭合
  4. 换行建议使用( )包裹
  5. 老版本(16.8)先引入react才能使用jsx

jsx必须要有一个根节点

虚拟根节点

有两种格式

格式1:<> xxx </>

import ReactDOM from 'react-dom'

const title = <> <h1>Hello React</h1><p>p标签</p> </>

ReactDOM.render(title, document.querySelector('#root'))

格式2:<React.Fragment> xxx </React.Fragment>

import ReactDOM from 'react-dom'

const title = <React.Fragment> <h1>Hello React</h1><p>p标签</p> </React.Fragment>>

ReactDOM.render(title, document.querySelector('#root'))

属性名不能用js中的关键字

例如class, for

  • class -> className
  • for ->htmlFor

单标签要闭合

  • <input> —> <input />

老版本(16.8)先引入react才能使用jsx

理解引入react的作用(提供createElement的功能)

老版本中不引入就会报错React must be in scope when using JSX

换行建议使用()包裹

const content = (
	<div>
  	<h1>xxx</h1>
  </div>
)

JSX-嵌入表达式

导入

通过上面的学习,我们已经可以使用jsx来描述一段静态结构了,更多的情况下,我们需要动态的结构。例如,在页面上输出一个随机值

import ReactDOM from 'react-dom'

const num = Math.random()
const title = (<div>
               		随机值:num
               </div>)

ReactDOM.render(title, document.querySelector('#root'))

目标

会在 JSX中嵌入表达式

嵌入表达式的格式

{ JS 表达式 }

例如:

import ReactDOM from 'react-dom'

const num = Math.random()
const title = (<div>
               		随机值:{ num }
               </div>)

ReactDOM.render(title, document.querySelector('#root'))

大括号是一种特殊的语法,让 JSX 解析器知道它需要将它们之间的内容解释为 JavaScript代码 而不是字符串

作用:执行{}内部的代码,并输出结果。

嵌入表达式的位置

  1. 属性值

    const logo = 'https://create-react-app.dev/img/logo.svg'
    <img width="80" src={logo} />
    
  2. 内容

    const name = '小芳'
    <div>{name}</div>
    

单花括号中可以写什么?

可以写

  1. 表达式

    定义:数据类型和运算符的组合(可以单独出现数据类型,也可以数据类型+运算符的组合)

    特点:有值(或者能够计算出一个值); 能被console.log()

  2. 其他的jsx表达式

  3. 注释

不可以写

  1. 对象
  2. js语句:if 语句/ switch-case 语句/ 变量声明语句

示例

import React from 'react'
import ReactDOM from 'react-dom'

const girl = {
  name: '小芳',
  age: 19,
  logo: 'https://create-react-app.dev/img/logo.svg',
  skills: ['唱歌', '收稻子']
}

const f1 = () => {
  return <i>{girl.skills.join(',')}</i>
}
const baseInfo = (
  <div>
    姓名: {girl.name}
    妙龄: {girl.age}
  </div>
)

const content = (
  <div style={{ padding: 50 }}>
    <h1>jsx-表达式</h1>

    {/* 1. {} 可以用在内容上 */}

    {/* {}可以包其他的jsx */}
    {baseInfo}

    {/* {}可以包表达式 */}
    <p>爱好:{girl.skills}</p>
    <p>字符串:{'abc'}</p>
    <p>字符串:{'{'}</p>
    <p>数组:{[1, 2, 3]}</p>
    <p>数值:{100}</p>
    <p>函数:{f1()}</p>
    <p>算数表达式:100/2={100 / 2}</p>
    <p>
      三元表达式:{girl.age < 28 ? '芳龄' : '年龄'} {girl.age}
    </p>

    {/* 2. {}可以用在属性值上 */}
    <p className={['class1', 'class2'].join(' ')}>类名组合</p>
    <img width="80" src={girl.logo} />

    {/*
    下面是错误的示范
    不能输出对象,不能使用语句
    <p>{{ a: 1 }}</p>
    <p>{var a =1 }</p> */}
  </div>
)
ReactDOM.render(content, document.getElementById('root'))

小结

  1. {}的作用是?
  2. {}可以嵌入在哪里?
  3. {}内部可以写什么,不可以写什么?

JSX-条件渲染

目标

掌握条件渲染,能根据是否满足条件生成 HTML 结构

实现方式

  • if/else
  • 三元运算符
  • 逻辑与(&&)运算符
  • switch case

示例

简单情况-用三元表达式

const flag = 0
const content = (<div>{flag ? '达成' : '没有达成'}</div>)

简单情况-用逻辑与

const isLogin = true
const content = (<div>{ isLogin && '您登录了'}</div>)

复杂情况-使用额外的函数

const loadData = (isLoading) => {
  if (isLoading) {
    return <div>数据加载中,请稍后...</div> 
  } else {
    return <div>数据加载完成,此处显示加载后的数据</div>
  }
}
const content = <div>{loadData(true)}</div>

小结

简单条件渲染使用________ 和 _____

复杂的条件渲染使用函数,在函数内部通过if,else,swich, case来显示内容

JSX-列表渲染

目标

在JSX中使用数组的map方法来生成列表结构

场景

从后端取回来的数据保存在数组中,需要用列表展示。这里的数组如下:

const skills = [
  { id: 1, name: 'html' }, 
  { id: 2, name: 'css' }, 
  { id: 3, name: 'js' }
]

我们要生成的dom结构如下:

<ul>
  <ol>技能1:html</ol>
  <ol>技能2:css</ol>
  <ol>技能3:js</ol>
</ul>

如何实现呢?

笨方法

直接定义一个数组,每个元素都是一个jsx结构

const skills = [<ol>技能1:html</ol>, <ol>技能2: css</ol>, <ol>技能3: js</ol>]

const content = <ul>{skills}</ul>

ReactDOM.render(content, document.getElementById('root'))

用map

完整格式

// 完整格式
const t = skills.map(function(item) {
  return <ol>技能{item.id}: {item.name}</ol>
})

const list = <ul>{t}</ul>

简写格式

const list = (
  <ul>
    {skills.map(item => <ol>技能{item.id}: {item.name}</ol>)}
  </ul>
)

小结

作用:重复生成相同的 HTML 结构。

列表渲染中的key

目标

了解key的作用,能正确给循环渲染项添加key

了解key的作用

React 内部用来进行性能优化时使用的,在最终的HTML结构中是看不到的。

性能优化

例如,数据如下

const songs = [
  { id: 1, name: '痴心绝对' }, 
  { id: 2, name: '像我这样的人' }, 
  { id: 3, name: '南山南' }
  { id:4, name: 'abc'}
]

生成的dom

<ul>
  <li>排名:1 - 歌名:痴心绝对</li>
  <li>排名:2 - 歌名:想我这样的人</li>
  <li>排名:3 - 歌名:南山南</li>
</ul>

如果添加一条数据,则视图也要随之更新,而更新的逻辑是:前三条正常保留,而重新添加第四条。

如何设置key

如果数据中有一个唯一的属性值,就可以使用这个属性来当做key

如果没有,就可以用索引值

练习-用jsx来写结构

目标

按要求完成列表渲染

内容

// 下面是数据 
const list = [
  { id: 1, name: '武汉黑马前端64期', salary: 11000 },
  { id: 2, name: '武汉黑马前端66期', salary: 15000 }
]

// 下面是要求生成的结构

/*
  <ul>
    <li>
      <h3>班级:武汉黑马前端64期</h3>
      <p>工资:11000</p>
    </li>
    <li>
      <h3>班级:武汉黑马前端66期</h3>
      <p>工资:15000</p>
    </li>
  </ul>
*/

JSX 样式处理

目标

掌握在jsx中使用行内样式和类名样式

行内样式 - style

格式

<dom元素 style={ {css属性1:值1,css属性2:值2} }></dom元素>

示例

// 行内样式
<h1 style={ {color: 'red', width: 200, backgroundColor: 'black'} }>
  我是黑底红字的h1
</h1>

要点:

  1. 为啥有两个{{ }}
    1. 外层的{}表示 要开始写js了
    2. 内层的{}表示是一个对象
  2. 属性名是小驼峰格式 (background-color ===> backgroundColor)
  3. 属性值是字符串, 如果单位是px,可以简写数值

使用 className

要点

  • 用className(不是class)定义类名
  • 把样式写在额外的.css文件中,然后引入.css文件
import './index.css'

// 类名
<h1 className="title">
  我是黑底红字的h1
</h1>

补充建立.css

.title{
  color: red;
  width: 200px;
  background-color: black;
}

小结

jsx中的样式:

  • 行内: style={{对象,小驼峰}}
  • 外部: className

JSX 整体总结

  • React 使用 JSX 来编写 UI(HTML)
  • React 完全利用 JS 语言自身的能力来增强 UI 的编写 - 能用 JS 来实现的功能绝不会增加一个新的 API
  • 现在,就可以使用 React 来编写任意 UI 结构了

案例

目标

综合使用jsx的知识,用给定的数据+基本结构和样式渲染成如下效果。

导入本地图片

<img src="./images/avater.png" 不一定能被脚手架工具处理。

如果发现显示不出来,就

import avatar from './images/avatar.png'

<img src={avatar }/>

参考代码

import ReactDOM from 'react-dom'
import './index.css'
import avatar from './images/avatar.png'
// 任务
// 下面有一份数据,需要渲染到页面上
const state = {
  // hot: 热度排序  time: 时间排序
  tabs: [
    {
      id: 1,
      name: '热度',
      type: 'hot'
    },
    {
      id: 2,
      name: '时间',
      type: 'time'
    }
  ],
  active: 'time',
  list: [
    {
      id: 1,
      author: '刘德华',
      comment: '给我一杯忘情水',
      time: '2021-10-10 09:09:00',
      img:
        'https://y.qq.com/music/photo_new/T001R300x300M000003aQYLo2x8izP.jpg?max_age=2592000',
      // 1: 点赞 0:无态度 -1:踩
      attitude: 1
    },
    {
      id: 2,
      author: '周杰伦',
      comment: '听妈妈的话',
      time: '2021-10-11 09:09:00',
      img:
        'https://y.qq.com/music/photo_new/T001R500x500M0000025NhlN2yWrP4.jpg?max_age=2592000',
      // 1: 点赞 0:无态度 -1:踩
      attitude: 0
    },
    {
      id: 3,
      author: '陈奕迅',
      comment: '十年',
      time: '2021-10-11 10:09:00',
      img:
        'https://y.qq.com/music/photo_new/T001R500x500M000003Nz2So3XXYek.jpg?max_age=2592000',
      // 1: 点赞 0:无态度 -1:踩
      attitude: -1
    }
  ]
}

const element = (
  <div className="App">
    <div className="comment-container">
      {/* 评论数 */}
      <div className="comment-head">
        <span>{state.list.length} 评论</span>
      </div>
      {/* 排序 */}
      <div className="tabs-order">
        <ul className="sort-container">
          {state.tabs.map((item) => (
            <li
              className={item.type === state.active ? 'on' : ''}
              key={item.id}>{item.name}排序
            </li>
          ))}
          {/* <li className="on">按  热度  排序</li>
          <li>按  时间   排序</li> */}
        </ul>
      </div>

      {/* 添加评论 */}
      <div className="comment-send">
        <div className="user-face">
          <img className="user-head" src={avatar} alt="" />
        </div>
        <div className="textarea-container">
          <textarea
            cols="80"
            rows="5"
            placeholder="发条友善的评论"
            className="ipt-txt"
          />
          <button className="comment-submit">发表评论</button>
        </div>
        <div className="comment-emoji">
          <i className="face" />
          <span className="text">表情</span>
        </div>
      </div>

      {/* 评论列表 */}
      <div className="comment-list">
        {state.list.map((item) => (
          <div key={item.id} className="list-item">
            <div className="user-face">
              <img className="user-head" src={item.img} alt="" />
            </div>
            <div className="comment">
              <div className="user">{item.author}</div>
              <p className="text">{item.comment}</p>
              <div className="info">
                <span className="time">{item.time}</span>
                {/* 喜欢 */}
                <span className={item.attitude === 1 ? 'like liked' : 'like'}>
                  <i className="icon" />
                </span>
                {/* 不喜欢 */}
                <span className={item.attitude === -1 ? 'hate hated' : 'hate'}>
                  <i className="icon" />
                </span>
                <span className="reply btn-hover">删除</span>
              </div>
            </div>
          </div>
        ))}
      </div>
    </div>
  </div>
)

ReactDOM.render(element, document.getElementById('root'))

练习

在这里插入图片描述

拓展1-环境配置-引入eslint

目标

在react项目中配置eslint,并启用保存自动格式化功能

思路

  1. 在项目中安装eslint
  2. 用eslint的init命令创建eslint配置文件
  3. 设置vscode的自动保存格式化

步骤

  1. npm i eslint typescript -D

  2. 在项目根目录,运行npx eslint --init

    1. 按交互提示安装相关插件
      1. 选择是否使用 TypeScript, 选择是
    2. 它会自动生成eslint的配置文件
  3. 设置vscode的自动保存格式化

在这里插入图片描述

代码

在项目根目录下,补充配置文件:.vscode\settings.json,其内容如下:

{
  "eslint.run": "onType",
  "eslint.options": {
    "extensions": [".js", ".vue", ".jsx", ".tsx"]
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  }
}

拓展2-环境配置-引入prettier-now

eslint并不能深入到jsx代码中来格式化,所以需要额外的工具。

prettier-now

是prettier项目的分支,具备和prettier一样的功能,不过,它允许使用更多的配置项。在vscode的插件库中,同时有prettier-now和prettier,在安装时,请不要安装错了。

步骤

  1. 安装vscode插件prettier-now
  2. 补充配置

代码

.vscode\settings.json

{
  "eslint.run": "onType",
  "eslint.options": {
    "extensions": [".js", ".vue", ".jsx", ".tsx"]
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },

  // 编辑器设置 - 保存时做格式化
  "editor.formatOnSave": true,
  // 编辑器设置 - 默认采用prettier-now做格式化
  // 如果使用的是prettier,这的设置应该是 esbenp.prettier-vscode
  "editor.defaultFormatter":"remimarsal.prettier-now",

  // 控制缩进
  "prettier.useTabs": false, // 缩进不使用tab,使用空格 
  "prettier.tabWidth": 2, // 缩进字节数
  
  // 函数声明时小括号前后要加空格
  // 如果你使用prettier这一项是不能做选择的,导致和eslint默认配置的冲突
  // 可以在百度中搜到很多的记录: https://www.baidu.com/s?wd=prettier%20%E5%87%BD%E6%95%B0%E7%A9%BA%E6%A0%BC
  "prettier.spaceBeforeFunctionParen": true,

  // react的jsx让>与结束标签同行
  "prettier.jsxBracketSameLine": true,
  "prettier.bracketSpacing": false, // 去掉数组内部前后的空格
  "prettier.semi": false, // 不要给语句加;
  "prettier.singleQuote": true, // 采用单引号
  "prettier.trailingComma": "none", // 不要尾随逗号,
  "prettier.printWidth": 80, // 每行超过80列就换行

  // 在.js中,写div按下tab就可以自动补全,而不需要写<div再补全
  "emmet.includeLanguages": {
    "javascript": "javascriptreact"
  }
}

react 17之后,页面上使用jsx时,可以省略import React

在16的版本中,页面上使用jsx,必须import react

在这里插入图片描述

拓展3-大厂的ui库

  1. DIDI
    1. vue移动端 Cube UI
  2. JD
    1. vue移动端: NUTUI
  3. 饿了么
    1. vuePC端 elementUI
  4. 蚂蚁
    1. react PC端antdesign
    2. vue PC端 vue
  5. 字节
    1. react PC端 arco
    2. vue3 PC端arco

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React基础第一天-jsx 的相关文章

  • 如何使用 java/vb 脚本调用自定义 ActiveX dll 中的方法

    我使用 VB6 创建了一个 ActiveX dll 并使用打包和部署向导将其打包 生成了一个 cab 文件和一个演示 HTML 页面 此 ActiveX dll 包含一个 simgle 方法 该方法返回字符串且不接受任何参数 我遇到的麻烦是
  • 获取单词中重复次数最多的字母的数量

    我正在尝试计算单词中重复次数最多的字母的数量 function GreatestCount str var count for var i 0 i
  • 等待 JavaScript 中 Json 调用完成

    我正在使用下面的json调用在我的 javascript 方法中 function go123 var cityName var temp getJSON https abc in api city callback args functi
  • 将数组中的所有值作为参数传递给函数

    我有一个值数组 a b c d 我需要将它们作为参数传递给函数 window myFunction a b c d 如果我可以将数组 对象传递到函数中 那么这会更容易 但这些函数是由其他人编写的或已经存在 我无法更改它们 它们需要作为单独的
  • 一个文本区域中的文本应复制到另一个文本区域,并且应使用 JavaScript 单击按钮清除原始文本区域

    我已经完成了以下代码 它显示两个文本区域 其中一个文本区域中的文本通过使用 javascript 单击按钮复制到另一个文本区域
  • Jquery 动画与 CSS 浮动

    我的代码有问题 宽度似乎可以工作 但浮动没有 这里是 这是一个例子 http jsfiddle net v82ck http jsfiddle net v82ck 问题 悬停时菜单上的浮动属性不会改变 我希望每个菜单元素下方的线在悬停该菜单
  • 对 JavaScript 中的 while 循环感到困惑

    我可能在这里有点厚重 但请回答我这个问题 考虑以下代码 a 1 while a lt 6 console log a a 如果我运行这个 我会在控制台中得到从 1 到 6 的值 然后是另一个 6 现在看看这个 a 1 while a lt
  • Chart.js 没有显示在我的视图中

    我有一个使用 angular js 运行的应用程序 我的视图之一应该加载图表 我正在使用 Chart js 但由于某种原因它不起作用 并且我的控制台上没有显示错误 这是我创建图表的函数 scope writeBatteryChart fun
  • 通过单击字段启用非活动字段

    是否可以有一组非活动字段 如果单击其中一个字段 则某些字段将变为必填字段并运行某些代码段 举例来说 您显示了三个字段
  • 是否可以用 json 进行表达式/计算?

    我使用出色的 json server 作为应用程序的后端 它对于访问自定义端点以检索一些数据非常有用 但是如果它允许我进行计算 表达式以便我也可以模仿后端行为 那将会非常有用 以这个数据结构为例 products name football
  • 如何获取调用函数的“this”值?

    如果我有一个这样的函数 function foo this console log this function bar bar prototype func function foo this var test new bar test f
  • 使用 test() 通过正则表达式进行信用卡验证

    我正在尝试完成一些作业 看来这本书可能做错了 我有一个简单的 html 页面 允许用户在我们的例子中选择信用卡 美国运通卡 然后 用户输入一个数字并根据正则表达式评估该数字 我的问题最终是当 test 计算它返回的数字时是布尔值还是字符串
  • 获取键盘事件中的鼠标位置

    我试图在用户按住 Shift 键时出现选择轮 滚轮应以鼠标位置为中心 然而当我测试这个时 pageX and clientX两者在事件对象上都未定义 是否可以通过键盘事件获取鼠标坐标 不 只需跟踪mousemove事件并持续保存当前位置 以
  • Typeahead.js 干扰 Bootstrap 输入组

    如何防止 Typeahead js 拆分我的 Twitter Bootstrap 3 输入组 每当我将 Typeahead javascript 指向属于输入组一部分的文本区域时 连接的文本区域和提交按钮就会停止连接 这只是 Typeahe
  • 替换 Javascript 中的引号?

    对于我正在制作的网络应用程序 我将收到文本字符串 其中偶尔包含引号 因为我接下来要 document writing 字符串 所以需要将它们更改为撇号或转义 我该怎么做 因为当我尝试时它似乎不起作用 特别是我认为因为字符串的引号阻止了脚本的
  • HTML if 语句在 CDN 失败时加载本地 JS/CSS

    当从 CDN 或任何外部服务器加载 CSS JS 文件时 有可能 即使概率很低 由于外部故障而丢失该文件 在这种情况下 html 页面将因缺乏适当的 CSS 和 JS 而被损坏 有没有一种实用的方法可以在 CDN 故障时加载本地版本 IF
  • 如何在 svelte 中制作搜索过滤器

    我有两个组件在组件树中距离很远 我对如何在两者之间进行通信存有疑问 我有搜索组件 listItems 和商店 商店 svelte
  • 如何将 setTimeout 添加到使用 redux 的 fetch Promise 中?

    经过一定的秒数后 如果获取承诺尚未得到解决 我想向用户显示超时错误 我在这里看到了一些添加 setTimeout 来获取的很好的例子 https github com github fetch issues 175 https github
  • 如何在 Javascript 中将字符串数组转换为特定的树结构

    我从后端获取文件路径列表 它代表文件夹结构 如下所示 paths path to file1 doc path to file2 doc foo bar doc 路径的长度是任意的 为了使用文件树组件 角度2树组件 https github
  • React + 路由器 + Google 标签管理器

    我花了一些时间在 Quickcypher com 上开发 MVP 我想开始进行一些分析 它对于跟踪总访问量非常有用 但是当我尝试跟踪使用 React Router 的网站上的不同 URL 时 情况却出问题了 我的方法是这样的 设置一个在某些

随机推荐

  • 给Linux扩充swap分区

    https blog csdn net u011109881 article details 73694700
  • 【计算机视觉

    文章目录 一 检测相关 1篇 1 1 SegmentAnything helps microscopy images based automatic and quantitative organoid detection and analy
  • vue-cli3项目打包后自动化部署到服务器

    一 安装 scp2 npm install scp2 save dev 二 写好脚本 例如 upload js 下面任选一个即可 位置和 package json平级即可 简略版 use strict 引入scp2 var client r
  • ctfhub 基础认证

    1 打开题目环境 2 点击click跳出来一个登录弹窗 随便输入用户名和密码登录试试 没有返回任何有用信息 3 查看附件 得到一堆密码 应该是要直接爆破 4 点击click抓包后发送到repeater模块 重新发包得到 Do u know
  • python global local nonlocla

    目录 What is the global keyword Rules of global Keyword Use Global Example 1 Accessing global Variable From Inside a Funct
  • redis-cli的安装

    1 下载redis cli 2 解压缩 3 简易配置 4 查看redis Cli的使用说明 5 常规连接指令 redis cli h 目标主机ip地址 p 端口号
  • {System.InvalidOperationException: 未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序。

    System InvalidOperationException 未在本地计算机上注册 Microsoft Ace OleDb 12 0 提供程序 在 System Data OleDb OleDbServicesWrapper GetDa
  • 前端面试-HTML5篇

    链接 https www nowcoder com questionTerminal 来源 牛客网 Question 6 描述一下 cookies sessionStorage 和 localStorage 的区别 cookit是网站为了标
  • ThreadPoolExecutor源码解析

    ThreadPoolExecutor源码解析 一 新建线程池的是构造方法 public ThreadPoolExecutor int corePoolSize int maximumPoolSize long keepAliveTime T
  • 超详细手把手教你App上线AppStore

    作为一个iOSer上线流程是不可或缺的技能 今天就带领大家重温上线流程 一 准备工作 已付费的开发者账号 开发者账号分为以下四种类型 个人 Individual 资费 99 年 公司 Company 99 年 企业 Enterprise 2
  • C# RichTextBox显示不同颜色文字

    region 日志记录 支持其他线程访问 public delegate void LogAppendDelegate Color color string text
  • C语言(关于unsigned char的几个问题)

    关于unsigned char unsigned char是char 的无符号类型 同char一样占用1个字节 存储范围为0 255 所存储的数据服从以下规律 数据服从于一个闭环 当我们输入0 255之间的数据之时 以0为起点 顺时针走向
  • CentOS安装MariaDB

    CentOS安装MariaDB 此处以CentOS 7 x86 64 安装MariaDB 10 2为例 MariaDB数据库是 MySQL 的一个分支 主要由开源社区在维护 采用 GPL 授权许可 MariaDB完全兼容 MySQL 包括A
  • Java并发测试中的发现

    这个程序是用来测试线程并发性用的 可以看出这个程序存在的问题还是很多的 1 共享变量count没有实现可见性 2 count 操作不是原子操作 内部可能发生重排序 我的目标是让结果为threadA和threadB的结果任何一个得出20000
  • mysql show tables like,带多个LIKE值的SHOW TABLES语句

    mysql gt SHOW TABLES like cms Tables in tianyan cms cms 1 row in set 0 00 sec Result mysql gt SHOW TABLES like cms or li
  • 火猴之产品组成热点图编程(firemonkey)

    效果图 用途 地图 产品组成 举例 以产品组成为例 如最近最火的机甲大师 思路 1 组件 TMSFMXHotSpotImage1 TMSFMXHTMLText1 2 加载背景 编辑热点区域 代码 操作 1 右键窗体 打开编辑热点窗口 2 加
  • Delphi游戏开发网址大全[转贴]

    Source Code http www codefans com CodeList Catalog 5 CodeTime Desc 1 html http www vscodes com sitemap html http www itl
  • 推荐4个Flutter重磅开源项目

    早上好 骚年 我是小 G 我的公众号 菜鸟翻身 会推荐 GitHub 上有用的项目 一分钟 get 一个优秀的开源项目 挖掘开源的价值 欢迎关注我 近年来 随着移动智能设备的快速普及 移动多端统一开发框架已成为一个热门话题 这里为你整理了
  • Tomcat配置虚拟目录

    一 直接在Tomcat的目录中配置虚拟目录 可能会出现的错误 当你输入地址 http localhost 端口号 demo 时可能会出现404 此时 可修改conf文件夹下的web xml中找到如下所示代码 将红框内false改为true即
  • React基础第一天-jsx

    React 基础 整体介绍 内容介绍 React 概述 JSX React 组件基础 React 介绍 目标 了解react的基本概念 是什么 React 官网 React 中文网 React 官网新版尝鲜 React 是用于构建用户界面的