nodejs 019: React组件 JSX基础语法规则 01

MicroPython跨平台移植实战:从源码解析到STM32+FreeRTOS部署 本文详细解析了MicroPython的跨平台移植实战,重点介绍了如何将其从源码开始,成功部署到STM32微控制器并运行于FreeRTOS实时操作系统。内容涵盖源码结构解析、编译环境搭建、内存管理协调、FreeRTOS任务集成、数学库(math)启用与优化,以及自定义模块开发等核心步骤,为开发者提供了一套完整的、可操作的嵌入式Python移植方案。 阅读详情

  • 注:本文为JSX基础语法规则总结,除一二级标题外的大部分内容由LLM生成
  • JSX(JavaScript XML)是一种语法扩展,主要用于 React 项目。它让我们可以在 JavaScript 中直接编写类似 HTML 的代码,简化了定义 UI 组件的过程( JSX有点像JAVA的JSP)。
  • JSX 将标记和逻辑紧密结合,使代码更具可读性和可维护性。JSX 是一个由 React 引入的概念,现在在其他框架(如 Vue 3)中也得到了应用。

Ⅰ.JSX 的基本概念

  1. 类似 HTML 的语法

    const element = <h1>Hello, world!</h1>;
    
  2. 在组件中使用 JSX
    JSX 最常用于定义 React 组件的结构。React 组件是一个返回 JSX 的函数或类,可以将复杂的 UI 拆分成独立、可复用的组件。例如:

    function Welcome(props) {
      return <h1>Hello, {props.name}</h1>;
    }
    

JSX 的特点和优势

  • 内嵌表达式:在 JSX 中可以嵌入任何 JavaScript 表达式,只需将其包裹在 {} 中。

    const name = 'React';
    const element = <h1>Hello, {name}</h1>;
    
  • 支持条件渲染:可以使用 JavaScript 的条件运算符进行条件渲染。

    function Greeting(props) {
      const isLoggedIn = props.isLoggedIn;
      return (
        <div>
          {isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please sign up.</h1>}
        </div>
      );
    }
    
  • 支持循环渲染:可以通过 map 等方法来渲染列表。

    const numbers = [1, 2, 3, 4, 5];
    const listItems = numbers.map((number) =>
      <li key={number.toString()}>{number}</li>
    );
    
    return <ul>{listItems}</ul>;
    

Ⅱ.className

  • className 是 JSX 中用于指定 HTML 元素 CSS 类的属性。在标准的 HTML 中,我们使用 class 属性来指定样式,但在 JSX 中,因为 class 是 JavaScript 的保留字,所以改成了 className。

  • 在 JSX 中设置 className 非常简单,类似于 HTML 的 class,只需在元素上添加 className 属性并赋值一个字符串即可:

function MyComponent() {
  return <div className="my-class">Hello, World!</div>;
}
  • 动态设置 className ;

    1. 三元运算符

使用三元运算符来根据条件设置 className:

function MyComponent({ isActive }) {
  return <div className={isActive ? "active" : "inactive"}>Hello, World!</div>;
}
    1. 模板字符串

如果需要组合多个类,可以使用模板字符串(ES6 的字符串模板语法):

function MyComponent({ isActive, isLarge }) {
  return <div className={`${isActive ? "active" : ""} ${isLarge ? "large" : ""}`}>Hello, World!</div>;
}
    1. 使用条件库 classnames

在大型项目中管理多个条件类时,可以使用 classnames 库。它简化了 className 的管理,让代码更加清晰易读:

npm install classnames

使用示例:

import classNames from 'classnames';

function MyComponent({ isActive, isLarge }) {
  const classes = classNames({
    active: isActive,
    large: isLarge,
    'extra-class': true,
  });

  return <div className={classes}>Hello, World!</div>;
}

在上面的代码中,classnames 自动生成类名字符串。如果 isActive 和 isLarge 为 true,生成的 className 会是 active large extra-class。

通过样式文件使用 className

通常,我们会在组件中用 className 连接 CSS 样式表,方法是将样式写在 CSS 文件中,然后通过 className 引用。

使用 CSS 模块

在 React 中也可以使用 CSS 模块,这样可以避免样式的全局污染。CSS 模块会自动生成独特的类名,以保证样式只在当前组件中有效。

  • 首先,创建一个 CSS 模块文件,比如 MyComponent.module.css:

    /* MyComponent.module.css */
    .active {
      color: red;
    }
    
    .large {
      font-size: 2em;
    }
    
  • 在组件中导入这个 CSS 模块并应用样式:

    import styles from './MyComponent.module.css';
    
    function MyComponent({ isActive, isLarge }) {
      return (
        <div className={`${isActive ? styles.active : ""} ${isLarge ? styles.large : ""}`}>
          Hello, World!
        </div>
      );
    }
    

使用 className,可以轻松地将 CSS 应用到 JSX 元素中,并且能动态地控制它们。

Ⅲ.首字母大小写和自定义组件

在 React 中,组件的命名约定非常重要,尤其是当涉及到首字母大小写的使用和自定义组件的区分时。以下是相关的细节:

1. 首字母大小写的规则

React 通过组件名称的首字母大小写来区分 HTML 元素和自定义 React 组件:

  • 首字母大写:React 认为这是一个自定义组件。自定义组件通常是函数或类,并且在 JSX 中渲染时,React 会调用它返回的 JSX 结构。例如,<MyComponent /> 被认为是一个 React 组件。

    function MyComponent() {
      return <div>Hello from MyComponent!</div>;
    }
    
    function App() {
      return <MyComponent />;
    }
    
  • 首字母小写:React 会将其当作标准 HTML 元素(如 <div> 或 <span>)来渲染。如果在 JSX 中写 <mycomponent />,React 会尝试将其当作 HTML 标签而不是组件,导致渲染失败或产生警告。

2. 自定义组件的编写

在 React 中编写自定义组件时,我们通常遵循 PascalCase(即每个单词的首字母大写)命名规范,这样可以避免和 HTML 标签冲突,并符合 React 社区的常规习惯。例如:

function UserProfile() {
  return <div>User Profile Component</div>;
}

使用自定义组件时可以传递 props:

function UserProfile({ name }) {
  return <div>Hello, {name}!</div>;
}

function App() {
  return <UserProfile name="Alice" />;
}

3. 动态渲染自定义组件

有时,我们可能需要动态选择组件进行渲染。可以通过对象映射来实现动态组件的选择,例如:

function Home() {
  return <div>Home Component</div>;
}

function About() {
  return <div>About Component</div>;
}

const components = {
  home: Home,
  about: About,
};

function App({ componentName }) {
  const Component = components[componentName];
  return Component ? <Component /> : <div>Component Not Found</div>;
}

// 使用示例
<App componentName="home" />; // 渲染 Home 组件

4. 使用小写首字母的自定义标签(非 React 推荐)

尽管不推荐,但在某些情况下可能需要使用小写的自定义标签。可以通过直接创建元素来实现。React 提供了 React.createElement 函数,可以用来创建 React 元素而不依赖 JSX。例如:

function app() {
  return React.createElement("custom-element", { id: "myId" }, "Hello!");
}

不过,为了遵循 React 社区的最佳实践,尽量避免这种方式。

5. CSS 组件样式约定

对于自定义组件的样式,可以使用对应的 className,配合 CSS 文件或者 CSS 模块。CSS 模块可以使样式在组件间隔离,避免样式冲突。

// MyComponent.module.css
.myComponent {
  color: blue;
}

// MyComponent.jsx
import styles from './MyComponent.module.css';

function MyComponent() {
  return <div className={styles.myComponent}>Styled Component</div>;
}

总结

  • 自定义组件的名称应始终以大写字母开头,以便 React 能够正确识别它们。
  • 可以使用 props 为组件传递数据,保持组件的可复用性。
  • 动态选择和渲染自定义组件时,可以用对象映射来选择特定组件。
  • 使用 CSS 模块或 className 控制组件样式,保持组件之间的样式隔离。

Ⅳ.style要写成对象的形式

在 JSX 中,style 属性需要写成 JavaScript 对象的形式,而不是普通的字符串或 CSS 样式规则。每个 CSS 属性都需要用 JavaScript 对象的语法表示。

基本写法

在 React 中使用 style 属性时,应该使用 驼峰命名(camelCase),因为在 JavaScript 中 - 是无效字符。

例如,background-color 需要写成 backgroundColor:

function MyComponent() {
  return (
    <div style={{ backgroundColor: 'blue', color: 'white', padding: '10px' }}>
      Hello, World!
    </div>
  );
}

上面的 style 属性接收一个 JavaScript 对象,其中每个 CSS 属性都以键值对的形式表示。

动态设置样式

你可以在 style 对象中动态设置样式属性,通过变量或者表达式来实现。例如,可以根据组件的状态改变样式:

function MyComponent({ isActive }) {
  return (
    <div
      style={{
        color: isActive ? 'green' : 'gray',
        fontWeight: isActive ? 'bold' : 'normal',
      }}
    >
      Status: {isActive ? 'Active' : 'Inactive'}
    </div>
  );
}

多个样式对象的组合

如果有多个样式对象,可以通过 JavaScript 的扩展运算符 {...} 或 Object.assign 合并样式:

const baseStyle = {
  color: 'white',
  fontSize: '16px',
};

const activeStyle = {
  color: 'green',
  fontWeight: 'bold',
};

function MyComponent({ isActive }) {
  return (
    <div style={{ ...baseStyle, ...(isActive ? activeStyle : {}) }}>
      Hello, World!
    </div>
  );
}

示例:样式对象与内联样式

const containerStyle = {
  display: 'flex',
  justifyContent: 'center',
  alignItems: 'center',
  height: '100vh',
  backgroundColor: '#282c34',
};

function App() {
  return (
    <div style={containerStyle}>
      <h1 style={{ color: 'white', fontSize: '2em' }}>Welcome to My App</h1>
    </div>
  );
}

在这个示例中,containerStyle 是一个样式对象,并且在 App 组件中通过 style={containerStyle} 赋给 div 标签;h1 的样式则直接写在内联 style 中。

注意事项

  • 单位:数值型的 CSS 属性(如 width, height, fontSize)通常不需要单位,会自动以像素 (px) 处理。例如:fontSize: 20 表示 20px。
  • 嵌套样式:不能在 style 对象中直接嵌套选择器,如 :hover 或 @media,这些需要通过 CSS 文件或 CSS-in-JS 解决方案(如 styled-components)来实现。

使用对象形式的 style 属性可以更灵活地实现样式的动态更新,也能充分利用 JavaScript 的表达能力。

Ⅴ.监听事件

1. 添加事件监听器

  • 在 React 中,事件监听器使用 camelCase 形式,比如 onClick、onMouseEnter 等。事件处理函数通常是一个箭头函数或组件方法。

示例:一个按钮的点击事件

function App() {
  function handleClick() {
    console.log("Button clicked!");
  }

  return <button onClick={handleClick}>Click me</button>;
}
  • 注:不要写函数的执行结果

2. 事件对象

React 中的事件处理函数会接收到一个合成事件(SyntheticEvent),它是对原生事件的封装,与原生 DOM 事件 API 类似且跨浏览器兼容。

示例:使用事件对象


function App() {
  function handleClick(event) {
    console.log("Button clicked at position:", event.clientX, event.clientY);
  }

  return <button onClick={handleClick}>Click me</button>;
}

在这个示例中,event.clientX 和 event.clientY 是点击事件发生的鼠标位置。

3. 使用箭头函数传递参数

如果需要给事件处理函数传递参数,可以使用箭头函数。

示例:传递自定义参数

function App() {
  function handleClick(name) {
    console.log(`Hello, ${name}!`);
  }

  return <button onClick={() => handleClick("Alice")}>Greet Alice</button>;
}

这里我们用箭头函数 () => handleClick("Alice") 将参数传递给 handleClick。

4. 事件的常用类型

React 支持大多数常见的 DOM 事件,包括但不限于:

  • 鼠标事件:onClick, onDoubleClick, onMouseEnter, onMouseLeave, onMouseMove
  • 键盘事件:onKeyDown, onKeyUp, onKeyPress
  • 表单事件:onChange, onSubmit, onFocus, onBlur
  • 窗口事件:onResize, onScroll
  • 剪贴板事件:onCopy, onPaste
import React, { useState } from "react";
import type { MouseEvent } from "react";

function MouseTracker() {
  const [position, setPosition] = useState({ x: 0, y: 0 });

  // 使用 MouseEvent 类型为事件处理函数添加类型定义
  function handleMouseMove(event: MouseEvent<HTMLDivElement>) {
    setPosition({
      x: event.clientX,
      y: event.clientY,
    });
  }

  return (
    <div
      onMouseMove={handleMouseMove}
      style={{
        width: "400px",
        height: "300px",
        border: "2px solid black",
        display: "flex",
        alignItems: "center",
        justifyContent: "center",
      }}
    >
      <p>Mouse Position: ({position.x}, {position.y})</p>
    </div>
  );
}

export default MouseTracker;

5. 阻止默认行为和事件传播

可以通过 event.preventDefault() 和 event.stopPropagation() 控制事件的行为。

示例:阻止表单提交的默认刷新行为

function App() {
  function handleSubmit(event) {
    event.preventDefault();
    console.log("Form submitted!");
  }

  return (
    <form onSubmit={handleSubmit}>
      <button type="submit">Submit</button>
    </form>
  );
}

在这个示例中,通过 event.preventDefault() 阻止了表单的默认提交行为。

6. 事件解绑

在 React 中,通常不需要手动解绑事件。React 的合成事件系统会自动管理事件的绑定和解绑,以确保性能和资源使用。

7. 使用 useEffect 监听全局事件

如果需要监听全局事件(例如 window 或 document 的事件),可以使用 useEffect 钩子在组件挂载时添加事件监听,并在卸载时移除。

import { useEffect } from 'react';

function App() {
  useEffect(() => {
    function handleResize() {
      console.log("Window resized!");
    }

    window.addEventListener("resize", handleResize);

    return () => {
      window.removeEventListener("resize", handleResize);
    };
  }, []);

  return <div>Resize the window to see the effect!</div>;
}

在这里,我们使用 useEffect 监听 window 的 resize 事件,并在组件卸载时清理该事件监听器。

Ⅵ.{}和判断

  • {}中不能放置大段js代码,需要通过&& 和 三目运算符进行条件判断

    错误示例:

    // 这会导致错误
    return (
      <div>
        {if (isLoggedIn) { <p>Welcome back!</p> }}
      </div>
    );
    

    正确示例:

    let message;
    if (isLoggedIn) {
      message = <p>Welcome back!</p>;
    } else {
      message = <p>Please log in.</p>;
    }
    
    return <div>{message}</div>;
    
使用 && 运算符

&& 运算符通常用来在条件为 true 时渲染内容,否则什么都不显示。

const isLoggedIn = true;
return (
  <div>
    {isLoggedIn && <p>Welcome back!</p>}
  </div>
);

解释:

  • 如果 isLoggedIn 为 true,则渲染 <p>Welcome back!</p>。
  • 如果 isLoggedIn 为 false,则什么也不渲染。
使用三目运算符 ? :

三目运算符允许你根据条件返回不同的内容。

const isLoggedIn = true;
return (
  <div>
    {isLoggedIn ? <p>Welcome back!</p> : <p>Please log in.</p>}
  </div>
);

解释:

  • 如果 isLoggedIn 为 true,则渲染 <p>Welcome back!</p>。
  • 如果 isLoggedIn 为 false,则渲染 <p>Please log in.</p>。

通过使用 && 和 ? : 运算符,React 组件能够以简洁的方式实现条件渲染。

Ⅶ.{}和循环

在 React JSX 中,{} 用于嵌入 JavaScript 表达式,但它不能直接包含 for 循环语句,因为 for 是 语句 而不是 表达式。因此,如果想在 React 中循环渲染多个元素,需要使用 JavaScript 的 数组方法(如 map())来实现。

使用 map() 渲染列表

const items = ["Apple", "Banana", "Cherry"];

function ItemList() {
  return (
    <ul>
      {items.map((item, index) => (
        <li key={index}>{item}</li>
      ))}
    </ul>
  );
}

export default ItemList;

解释:

  • 使用 items.map() 遍历 items 数组,并为每个 item 返回一个 <li> 元素。
  • key 属性用于唯一标识每个元素,帮助 React 识别列表中的元素变化,以提高渲染效率。

在组件中使用循环

如果你确实需要使用 for 循环,可以在 JSX 之外创建一个变量来存储结果,并在 JSX 中引用该变量。

const items = ["Apple", "Banana", "Cherry"];

function ItemList() {
  const listItems = [];
  for (let i = 0; i < items.length; i++) {
    listItems.push(<li key={i}>{items[i]}</li>);
  }

  return <ul>{listItems}</ul>;
}

export default ItemList;

解释:

  • 先使用 for 循环将 <li> 元素推入 listItems 数组。
  • 然后在 JSX 中使用 {listItems} 渲染列表。

JSX语法注意项目:

  • 属性命名:在 JSX 中,class 用 className 替代,for 用 htmlFor 替代,以避免与 JavaScript 保留字冲突。
// 正确的写法(React JSX)
<label htmlFor="username">Username:</label>
<input id="username" type="text" />

// 错误的写法
<label for="username">Username:</label>
<input id="username" type="text" />
  • JSX 必须封闭标签:如果标签没有内容,必须使用自闭合形式 <br />,否则会报错。
  • 每个JSX片段只能有一个根节点 :
function MyComponent() {
  return (
    <>
      <div>Element 1</div>
      <div>Element 2</div>
    </>
  );
}
SCL3400-D01双轴高精度倾角计 简介 两轴高精度加速度计,提供两个模式。 ±30° with 10 Hz LPF ±90° with 40 Hz LPF Resolution up to 32768 LSB/g Ultra-low 0.0009°/√Hz noise density 这款传感器是替换之前村田的停产的模拟量系列的芯片,正在测试中,具体效果大伙可以评测。 一、引脚连接图 引脚图兼容SCL3300 二、SPI接口 1.SCL3300和SCL3400略有区别如下图 左边为SCL3... 阅读详情

相关推荐

从安装Eclipse 开始 开发第一个 CDS View

一篇超级简单快速的 创建CDS VIEW 入门步骤介绍文章。

IT小职员 4249

React学习之旅Part6:React中JSX的CSS样式(行内样式、封装样式、抽取样式表模块)、模块化解决css作用域问题、loader处理字体文件和scss和less

在React中 JSX的虚拟DOM组件同样可以设置样式 且设置方式与普通的写法大同小异 CSS样式有两种写法 分别为行内样式 和 封装样式 行内样式: 在JSX中 行内样式不能为style设置字符串格式的值 而是对象键值对类型的值 若出现连字符 则从第二个单词开始开头要大写 否则必须为字符串格式 在行内样式中 若是纯数值类型的样式 则可以不用引号进行包裹 但若为字符串类型的样式 则必须用引号包裹 例如: export default class Hello extends React.Component {

"✧treasure mountain✧" 3831

从二极管到CMOS:手把手教你搭建数字电路中的基础门电路(附原理图)

本文详细介绍了数字电路中基础门电路的搭建方法,从二极管门电路到现代CMOS门电路的设计与实现。通过原理图解析和实战案例,帮助读者掌握数字电路设计的核心知识,包括电平实现、门电路工作原理及实际调试技巧,适合电子技术爱好者和初学者学习参考。

weixin_29252171的博客 321

node 常用组件和操作

walk和ndir都可以用来遍历目录结构。在node开发过程中我们可能需要遍历某个目录这时我们可以自己写一个递归也可以直接使用这两个模块。 一、ndir npm:https://www.npmjs.com/package/ndir npm install ndir var ndir = require('ndir') // 回调方式 ndir.walk('./', function o...

Bonrui编程路 1998

基于51单片机的多功能智能路灯控制系统(仿真+代码+原理图)

智能路灯控制系统主要由51单片机最小系统+1602显示模块+DS1302时钟模块+光强检测模块+按键输入模块+声光报警模块+LED照明模块+状态检测电路+人体车辆红外检测模块组成。能实现以下功能: 1.能够按键设定系统时间、工作时间、光照阈值 2.工作时间内路灯点亮,凌晨12点后路灯关闭,有人或车通过是,路灯点亮10s 3.非工作时间光照强度低于阈值,路灯点亮 4.能够检测系统工作状态,路灯应亮未亮,声光报警 5.具备手动控制,能够切换自动/手动控制功能

u012759563的博客 8178

Spring AI RAG 生产级实战:从 0 构建企业智能知识库系统

Spring AI🎯统一的 API 抽象:屏蔽不同 AI 服务商的差异🎯开箱即用的集成:支持主流大模型和向量数据库🎯Spring 生态融合:与 Spring Boot、Spring Data 无缝集成🎯企业级特性:事务管理、监控、安全等RAG 架构:检索 + 增强 + 生成,解决 LLM 局限性Spring AI:统一的 API 抽象,简化 AI 应用开发向量数据库:pgvector 适合中小规模,Milvus 适合大规模文档处理:加载 → 分块 → 向量化 → 存储检索优化。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 408

React 之 CSS编写方式

React 之 CSS编写方式

玄鱼殇 1836

【学习记录】IIC驱动ICM42670+卡尔曼滤波+四元数姿态角解算

ICM42670陀螺仪可以使用iic驱动,单片机平台使用GD32f305VE。

liarsup的博客 8267

nodejs+react动态调用jsx

var React = require("react"); var ReactDOMServer = require("react-dom/server"); var jsx = `<div> <a href={this.props.href}>{this.props.text}</a> <div dangerouslySetInnerH...

slwsss的专栏 1239

不会路由器叠加多条宽带?看这个就够了,能让你的局域网速度更快!

通常我们在企业网络或实际项目中,随着用户的增加,一条或者几条带宽不能满足正常使用,便可以对带宽进行叠加,便于网络带度更快;通常家里有可能有两条带宽的,联通或移动的,可能都是充话费送的,但网速都不怎么样,不用可惜,用之委屈,那怎么办呢?如在迅雷上开启下载,多个资源同时下载,此时总带宽可以达到120M,也就是WAN口带宽可以叠加。多wan口路由器, 一般是有2个wan口,分别为wan1与wan2。当然也有更多的wan口的。[1] 对整个局域网来说,出口带宽数量多了,相当于总带宽上升,这样是可以起到叠加效果。

qq_43416206的博客 1112

知识图谱实战应用8-从文本关系抽取到知识图谱关系构建流程贯通

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用8-从文本关系抽取到知识图谱关系构建流程贯通。我们从文本数据中采集到关键信息,并抽取出其中的关系信息,然后在存入图数据库中,整个过程实现自动化,我这里将举一个文本例子进行抽取。 对于知识图谱的构建是将实体、概念和它们之间的关系都以图表形式呈现出来的一种数据结构。要构建一个知识图谱,需要从不同的数据源中采集到相关信息,并将这些信息整合在一起,最终形成一个全面而且精确的知识图谱。

微学AI的博客 2545

React

一、React简介: 1.React概述: React 是一个用于构建用户界面的 JAVASCRIPT 库。 React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。 React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。 React 拥有较高的性能,代码逻辑非常简...

林清溯 487

基于STM32设计的校园智慧路灯系统(华为云IOT)(212)

当前设计并研发了基于STM32的智慧路灯系统,本系统的目的是打造一个高效节能、智能化管理的校园照明环境。通过集成STM32F103RCT6高性能微控制器为核心,结合多种传感器模块如BH1750光敏传感器、热释电人体感应模块以及中科微电子GPS模块等,实现了对校园路灯的精准控制与实时监控。

5137

react中使用css的5种方式

react中写CSS的5种方案

car_lic的博客 3821

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

react中书写css的三种方式

React中如何定义css样式 内部样式 style> .alert-text{ font-size: 20px; } style>1234512345"alert-text">Hello {this.props.name} {this.props.title};11 这边注意在命名class名时,使用className

gxf_ming的博客 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【React】JSX:从基础语法到高级用法的深入解析

JSX(JavaScript XML)是一种语法扩展,它让我们可以在 JavaScript 中编写类似 HTML 的代码。它与 JavaScript 紧密结合,并在编译时被转换为 JavaScript 对象。

lph159的博客 3130

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【React基础】– JSX语法

​JSX是一种JavaScript的语法扩展(eXtension),也在很多地方称之为JavaScript XML,因为看起就是一段XML语法

m0_68324632的博客 2101

React | React的JSX语法

btnClick函数并不是我们主动调用的,而是当button发生改变时,React内部调用了btnClick函数而它内部调用时,并不知道如何绑定正确的this。

CoderHing的博客~ 1015

js事件keydown和keypress的区别

keydown和keypress,都是键盘按下事件,区别在于: keydown是键盘任意键按下都能触发 keypress是键盘可打印字符键按下才触发

qq_41818857的博客 389

react中动态添加类名className(css modules)

react中动态添加类名className(css modules) 添加多个类名可以使用: // 第1种 直接加上一个空格的字符串 className={style.name0ne + ' ' + style.nameTwo} // 第2种 数组用逗号隔开,然后用join(' ')替换成空格 className={[style.name0ne, style.nameTwo].join(' ')} // 第3种 直接使用模板字符串 className={`${style.name0ne} ${style

jojo1001的博客 5431

React 开发(四):深入 JSX - 语法、特性与使用场景

JSX 是一种语法糖,可以让开发者像写 HTML 一样构建 React 组件。它最终会被转译成调用,这也是 JSX 和 JavaScript 兼容的原因。// JSX 示例;// 转译后的代码");JSX 并不是必须的,但它让 React 代码的阅读性和编写体验更佳。接下来我们将深入探讨其语法和特性。本文介绍了 JSX 的基本语法和特点,解析了它的转译原理和常见使用场景。在 React 中,JSX 是一种强大的工具,它让代码结构更直观,同时支持动态内容渲染。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1697

React快速上手(一):万字整理jsx基础语法

state即状态,用来存储组件数据的,复杂组件(类式组件)才有state,简单组件(函数式组件)没有state。render(){// this指向实例对象,state就是实例对象生成的,通过this.state即可获取到!(1)state是组件最重要的属性,值是对象(key-value形式);(2)组件被称为“状态机”,通过更新组件的state来更新对应的页面显示(响应式);(3)注意事项:A. 组件中render的this为组件实例对象;

m0_60353051的博客 1041

JSX设置CSS样式详解

JSX设置CSS样式详解 1. 使用className设置样式(CSS的其他选择器也是同理) (1)定义一个CSS文件style.css,和普通CSS一样定义class选择器 .sty1{//和普通CSS一样定义class选择器 background-color: red; color: white; font-size: 40p...

weixin_34319640的博客 3765

css jsx中使用:global和对象引入样式的区别

在jsx中,通过css对象来表示类名,会被webpack等打包工具变成hash字符串避免类名重复 通过:global的方式可以避免指定的类名被编译成hash字符串 /* local scope */ .h1 { color:red; } /* global scope */ :global(.h2) { color: blue; } var React = require('react'); var ReactDOM = require('react-dom'); var style = r

weixin_43294560的博客 509

Node.js 基础

Node.js 中的第三方模块又叫做包。Node.js 中的包都是免费且开源的,不需要付费即可下载使用。包都是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率。npm 是全球最大的包共享平台,我们可以通过 https://www.npmjs.com,对包进行查找。从 https://www.npmjs.com/ 网站上搜索自己所需要的包。从 https://registry.npmjs.org/ 服务器上下载自己需要的包。...

brokyz 285

如何在JSX中使用css

或者使用css-in-js方案。

medusee的博客 270
上一篇: 【p2p、分布式,区块链笔记 Torrent】WebTorrent & bittorrent-dht DHT的构造+lookup+announce
下一篇: nodejs 020: React语法规则 props和state
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值