首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我正在尝试创建一个可点击的方框网格,其中方框知道它们与哪些其他方框相邻。JS/React

要创建一个可点击的方框网格,并且每个方框知道它们与哪些其他方框相邻,你可以使用React来构建这个组件。以下是一个基本的实现思路和示例代码:

基础概念

  1. 网格布局:通常使用CSS Grid或Flexbox来实现。
  2. 组件状态:使用React的状态管理来跟踪每个方框的状态。
  3. 事件处理:为每个方框添加点击事件处理器。

优势

  • 模块化:每个方框可以作为一个独立的组件,便于管理和复用。
  • 交互性:通过事件处理,可以实现丰富的用户交互。
  • 可扩展性:容易添加新的功能或修改现有功能。

类型

  • 静态网格:网格大小固定。
  • 动态网格:网格大小可以根据数据动态调整。

应用场景

  • 游戏界面:如拼图游戏、迷宫游戏等。
  • 数据可视化:展示矩阵数据或关系图。
  • 布局设计:用于网页布局或UI设计。

示例代码

以下是一个简单的React组件示例,展示了如何创建一个4x4的可点击方框网格,并且每个方框知道它们与哪些其他方框相邻。

代码语言:txt
复制
import React, { useState } from 'react';
import './Grid.css';

const Grid = () => {
  const [grid, setGrid] = useState(Array(4).fill().map(() => Array(4).fill(false)));

  const handleClick = (row, col) => {
    const newGrid = produce(grid, draft => {
      draft[row][col] = !draft[row][col];
    });
    setGrid(newGrid);
  };

  const getNeighbors = (row, col) => {
    const neighbors = [];
    if (row > 0) neighbors.push([row - 1, col]);
    if (row < 3) neighbors.push([row + 1, col]);
    if (col > 0) neighbors.push([row, col - 1]);
    if (col < 3) neighbors.push([row, col + 1]);
    return neighbors;
  };

  return (
    <div className="grid">
      {grid.map((row, rowIndex) => (
        <div key={rowIndex} className="row">
          {row.map((cell, colIndex) => (
            <div
              key={colIndex}
              className={`cell ${cell ? 'active' : ''}`}
              onClick={() => handleClick(rowIndex, colIndex)}
            >
              {getNeighbors(rowIndex, colIndex).map(([nRow, nCol], index) => (
                <span key={index}>[{nRow}, {nCol}]</span>
              ))}
            </div>
          ))}
        </div>
      ))}
    </div>
  );
};

export default Grid;

CSS样式

代码语言:txt
复制
.grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.row {
  display: flex;
}

.cell {
  width: 50px;
  height: 50px;
  background-color: #ccc;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.cell.active {
  background-color: #007bff;
}

解释

  1. 状态管理:使用useState来管理网格的状态。
  2. 事件处理handleClick函数用于切换方框的状态。
  3. 邻居检测getNeighbors函数用于获取当前方框的相邻方框。

遇到的问题及解决方法

  • 性能问题:如果网格非常大,可能会导致性能问题。可以使用虚拟化技术(如react-window)来优化渲染。
  • 状态同步:确保所有方框的状态同步更新,避免出现不一致的情况。

通过这种方式,你可以创建一个功能丰富的可点击方框网格,并且每个方框都能知道它们与哪些其他方框相邻。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【CSS】253- 从原型图到成品:步步深入 CSS 布局

CSS 的玩法可与 SKetch 或者 Photoshop 的玩法不一样。 在本文中,我将向你展示如何以统筹全局的思维实现 CSS 布局,根治布局难产的顽疾。...(之所有没有出现两个空行,是因为 HTML 合并了相邻的空行,与相邻空格同理。)...我们用类选择器锁定了所有类名为 tweet 的元素。当然目前只有一个这样的元素,但如果有十个,那它们将都会是 Flex 容器了。 CSS 中以 . 开头的选择器代表类选择器。为什么是 .?我可不知道。...我曾尝试把元素理解为一个个独立个体,就像每个 JavaScript 函数只实现单一功能一样:如果它们都仅仅扮演单一的角色,那么写起代码来就很容易,报错时调试也很容易。...如何精进 CSS 水平 最能提高 CSS 水平的就是实践。 仿写你喜欢的网站。设计者和艺术家称其为 “临摹”。我写过一篇用临摹的方法学 React,其中的原则也适用于 CSS。

4.4K51

技术人最爱Rust,最怕COBOL,工程经理最高薪,懂Clojure最赚钱 | 2021全球开发者报告

选择所有符合的选项。 3技术 每年,我们都会探索开发者目前正在使用的工具和技术。一如既往,我们会询问他们哪些技术是最喜爱的,哪些是最害怕的,哪些是最想要的,并分为几个类别。...所有被调查者 专业开发者  Web 框架 今年,React.js 已经超越 jQuery 成为最常使用的网络框架。...所有被调查者 专业开发者  其他工具 90% 以上的被调查者使用 Git,这表明它是一个基本的开发工具。 在过去一年中,你用哪些工具做了大量的开发工作以及你想在未来一年中用哪些进行工作?...(如果你使用这些工作,并且希望继续使用,请在该行的两个方框内打勾)。 喜爱的与害怕的 想要的  其他工具 早些时候,我们看到 93% 的被调查者用 Git。...我们将这些技术与去年包括的技术进行了比较,并查看了有多少人选择了每个选项。将这一切综合起来,我们策划出了一套要包括的技术集。 这些问题被组织成若干问题块,并将它们按照顺序随机排列。

48130
  • VUE+WebPack前端游戏设计:实现物体的拖拽动态特效

    ,点击后图中的黄色方框会显示在页面上,这个方框是动态的,它会在指定位置一放一缩。...首先打开gamescenecomponent.vue,首先我们要创建一个二维数组来对应页面上的白色方框网格,在文件里添加如下代码: create2DArray (rows, cols, initialValue...其他几个函数的逻辑以此类似。 现在我们回到board函数,这个函数是创建的图层就是用来显示各种道具的。...接着调用create2DArray函数构建一个二维数组,用来对应页面上的白色网格方框,最后我们添加两个响应函数,用来对应鼠标在页面上的移动和点击。...,大家只要知道他们的作用是根据鼠标坐标确定网格位置即可。

    1K30

    开发人员必备:9个令人惊叹的CSS网格生成器推荐!

    此外,还可以按照指定的行或列结构排列元素。 它有一个非常易于理解的用户界面,在其中你可以通过容器中的“+”和“-”按钮添加行和列。还可以通过添加多个网格单元来扩展网格项。...它是一个非常有用的工具,可以利用其实用的CSS Grid功能创建动态布局。此外,它还可以让我们设置列和行的数量和单位。 此CSS生成器非常容易通过在网格内拖动方框来创建分区。...每行和每列都有一个单位方框,因此我们可以以 px、fr 和 % 的方式更改行和列的大小。这有助于我们创建响应式布局和网格。...此外,它拥有简洁的用户界面,使得理解和学习这个CSS网格生成器变得非常容易。 例如,你可以通过简单地点击“+”和“-”按钮来轻松地在网格中添加或删除行和列,并且它会在网格中的相邻位置添加一个元素。...它有一个非常简单的界面,您可以在其中设置行数和列数,然后选择要放置网站元素的区域。 此外,你可以创建多达20行和列的网站布局。当您完成网格的创建后,可以直接获取上述示例中显示的CSS代码。

    4.2K30

    构建面向未来的前端架构

    「组件内部对全局状态的依赖越多,它们的可重用性就越低」。提出这个问题对于确定哪些组件应该依赖哪些状态是很有用的。 ❝「一个组件最好只做一件事」。如果它最终成长起来,它应该被分解成更小的子组件。...❞ 自上而下Top down 与 自下而上Bottom up 组件是React等现代框架的「核心抽象单位」。有两种主要的方式来考虑创建它们。 ❝你可以「自上而下」或「自下而上」地构建。...它常常被认为是构建组件的「最直接的方法」。 这里有一个比较常见的场景。在一个正在快速迭代的项目中。你已经通过画方框的方式来界定出你组件的范围并将其交付到页面中。...然而,创建API可以重用的组件,即使它们不是重用的,通常会导致更多的可读、可测试、可改变和可删除的组件结构。 关于事情应该被分解到什么程度,没有一个正确的答案。...当组件被命名为比它们实际做的事情更通用时,它向其他开发者表明,它是处理与X有关的一切的抽象。 因此,当新的需求出现时,它自然而然地成为进行改变的出发点。

    99810

    基于Qt的流程设计器(一)

    一:先来看一下界面的截图: 说明: 拖动节点的时候,与该节点相关的箭头连线也会跟着调整; 用户可以使用鼠标从一个节点拖出一个箭头到另一个节点(鼠标在空白区域点击一下,拖出的箭头消失) 这三个图标,手型图标处于选中状态的时候...,节点可以拖动, 箭头图标处于选中状态的时候,可以使用鼠标绘制连线箭头 最后一个图标,用于在画布上创建一个节点方框 二: 关键代码文件如下图(用红框框住的为关键代码文件) 其他文件均为辅助代码文件(有些文件中的代码没有用到...:(注意箭头的起点,在上一个方框的中心点上) 五: 我给CustomArrow类公开了一个adjust函数,旨在当方框节点移动的时候,重新计算箭头的起始位置、结束位置、箭头的角度 代码如下: 其中:itemA...就是与当前方框节点有关的箭头 八: 在来看一下CustomRect的MousePressEvent的代码 在这个代码中, 我们先为全局标志ScenClickFlag赋值, 这个标志着当前点击的是一个方框节点...,还是点击在画布的空白处了 接下来判断箭头按钮是不是处于选中状态 再往下判断是不是已经记录了起始方框,如果没记录,那么就记录并返回 再接下来,就意味着用户是点击的结束方框,这时要绘制一个箭头了, 当然首先要判断是不是已经存在了同样的箭头

    1.8K60

    游戏辅助丨手把手简单实现射击游戏逆向(2)

    我叫了一个小伙伴进来,让他动,我进行搜索,跟前面坐标搜索基本类似。这里给出我的一个指针扫描结果。...这是其中一个人物的世界坐标,一般来说人物的坐标要么是以数组形式或者以链表的形式存储,这个游戏是以数组的形式存储的我点击偏移的左右箭头,观察上方的坐标值,从上往下,一个一个试,如果加超过了0x100都没有观察到可疑的值...,要么最后一列会很大行很大简称行大矩阵,本游戏就是行大矩阵这里xzy的顺序和你游戏的排列有关,根据我们之前找的自身坐标可以知道这里w计算有关,这里我们先不提列很大简称列大矩阵那么如何找矩阵呢,我教大家一个技巧...:x方向上的偏移=屏幕大小一半*通过矩阵计算得到的百分比(可正可负)计算偏移百分比::我们将x一列的数用x1,x2,x3,x4表示,其他列相同(这是列大矩阵的算法,给大家看看)然后根据如下公式,可以得到...我们使用外部绘制,在游戏窗口上创建一个和游戏等大小的窗口,置于桌面最上方,透明化,不接受我们的鼠标点击。2. 初始化D3D3.

    1.2K20

    图像分割领域的GPT-4.0,分割一切的AI算法:Segment Anything

    1、点击交互式图像分割:其实这个名字是我根据所实现的功能效果取得,点击交互式图像分割实现的是鼠标点击其中一类标签一次或者多次,实现图像分割,它所实现的功能是通过你手动选取其中一类Mask的一个定位点,算法模型会自动根据你选择的...图片通俗来说,此类分割不是对本张图片的所有Mask进行分割操作,仅指定图片中一个Mask时,算法模型会仅分割其中一类,同时也可以选择其中的Mult-mask模式,在“多标签”模式下,你可以在同一个类别中点击多次...,如下图中的对比效果图片2、设定方框图区域图像分割之前我们所提及的是点击交互式图像分割功能,而接下来要讲的是,设定方框区域内图像分割,与点击交互式图像分割方法相比,设定方框图区域图像分割方法采取手动绘制方框的形式来确定进行图像分割的区域...,对所放置的矩形方框的内部区域进行图像分割,具体的分割效果,我们以下面这张飞机图片进行演示,可以看到在我们所绘制的矩形方框内部进行图像分割,而其他区域不属于我们绘制的这个矩形方框范围内,所以没有进行分割...,使用者也可以手动设置矩形方框的大小,然后来决定对图像哪些部分进行分割。

    3.9K40

    观点 | 不需要敲代码就可以开发深度学习应用?我们来探个究竟

    目前还只有少量几个可供选择的模版,但是Lobe 的创建者说它们打算通过加入新的神经网络架构来进行扩展,并且创建一个用户可以分享它们的最佳模型的社区。...神经网络的不同部分在屏幕上以方框的形式显示出来(这种方框被大家自然地称作「lobes」),这些方框通过线条连接成一个类似于流程图的结构。你还可以查看每个节点的「内部」结构,并调整它们处理数据的方式。...他指出,要想构建最基础的应用(就像我设计的拼图游戏探测器)之外的任何东西,你仍然需要知道:「你想要使用哪些组件」,「如何将他们连接在一起」这样的技术细节。...「这种通过把数字输入方框构建深度学习模型的想法说明它们完全不知道人们需要做的是什么。」...(与其他免费的类似产品相比,Lobe 可能会付费使用,尽管 Matas 说价格还没有最终敲定。)但是即使像这样的可视化工具只是现有软件的一个皮肤,它们仍然是有其价值的。

    60020

    不需要敲代码就可以开发深度学习应用?我们来探个究竟

    目前还只有少量几个可供选择的模版,但是Lobe 的创建者说它们打算通过加入新的神经网络架构来进行扩展,并且创建一个用户可以分享它们的最佳模型的社区。...神经网络的不同部分在屏幕上以方框的形式显示出来(这种方框被大家自然地称作「lobes」),这些方框通过线条连接成一个类似于流程图的结构。你还可以查看每个节点的「内部」结构,并调整它们处理数据的方式。...他指出,要想构建最基础的应用(就像我设计的拼图游戏探测器)之外的任何东西,你仍然需要知道:「你想要使用哪些组件」,「如何将他们连接在一起」这样的技术细节。...「这种通过把数字输入方框构建深度学习模型的想法说明它们完全不知道人们需要做的是什么。」...(与其他免费的类似产品相比,Lobe 可能会付费使用,尽管 Matas 说价格还没有最终敲定。)但是即使像这样的可视化工具只是现有软件的一个皮肤,它们仍然是有其价值的。

    40020

    这是一篇很好的互动式文章,Framer Motion 布局动画

    例如,改变一个元素的宽度或高度就是一种布局变化,因为任何相邻的元素都必须移动,以便为该元素的新尺寸腾出空间。...例如,不能对justify-content的变化制作动画,因为justify-content不是一个可动画的属性。 性能问题。...另一方面,浏览器可以更快地对 transform 等CSS属性进行动画处理,因为它们不影响布局。 注意,随着蓝色方框的增长,灰色方框保持原状!...如果我们单独看一下这些变换,我们就可以知道这个正方形是如何结束的: 我们的算法首先将最终位置的左上角与原始位置的左上角对齐,然后将其缩小到初始尺寸。...尝试 我尝试的第一件事是,在父元素要做动画之前,先计算一次反比例,然后在子元素上单独运行一个动画。

    2.8K20

    GitHub标星7000+,快速恢复像素化图像,效果惊人

    对此,GitHub上的一个开发者创建了一个工具Depix,适用于使用线性方框滤波器创建的像素化图像,可从像素化屏幕快照中恢复密码,测试效果如下: ?...Buie在1994年编写了一个用于生成“ Plutos”的工具,可对图像进行模糊处理,并将其与观察到的图像进行匹配。...与其他技术类似,它通过Google图像查找的结果作“外力”参考,来恢复被像素化的面部图像。...图像模糊处理可以通过多种方式进行,使用线性方框滤波器的像素化可以看作是模糊技术的子集,大多数模糊算法在尝试模仿由摇晃的相机或聚焦问题引起的自然模糊时,往往会通过散布像素的方式。 ?...算法说明 由于线性方框滤波器是确定性算法,将相同的值进行像素化会导致相同的像素块。也就是说,使用相同的块位置对相同的文本进行像素化将产生相同的块值,因此可以尝试对文本进行像素化以找到匹配的模式。

    1.2K30

    复杂性思维中文第二版 八、自组织临界

    如果是,则它会“倒塌”并将沙子转移到四个相邻细胞;也就是说,细胞的斜率减少 4,并且每个邻居增加 1。在网格的周边,所有细胞保持为斜率 0,所以多余的会溢出边缘。...T = T[T>1] S = S[S>0] T和S的分布有许多小值和一些非常大的值。 我将使用thinkstats2中的Hist类创建值的直方图; 即每个值到其出现次数的映射。...结果是一个元组列表,其中每个元组包含i和i ** 2,用于比较,以及方框中的细胞数量。 最后,我们使用np.transpose生成一个 NumPy 数组,其中包含i,i ** 2和total。...请注意,只有val = 2(左下)从方框大小 1 开始,因为中心细胞的值为 2;其他直线从包含非零细胞数的第一个方框大小开始。...在双对数刻度上,细胞计数几乎形成直线,这表明我们正在测量方框大小的有效范围内的分形维度。

    50731

    手把手带你学习微信小程序 —— 四(事件绑定 & WXSS 样式学习)

    1.1 事件绑定初体验 首先创建一个新的目录 event,然后再次创建 event page 在 event.wxml中 加入如下view 视图代码 点击我 ,bindtap 为一个绑定事件,与 onclick...和上面的点击事件结合在一起,进行一个传参的操作 首先在wxml 文件中写好要绑定的事件,这个可以随意自定义 在js 文件,编写 自定义的事件函数,然后可以通过navigateTo 实现跳转功能 我们在控制台中也中也可以看到我们打印的内容...但是使用了事件阻止,这种情况就不会发生 啰嗦了这么一大堆,给大家来点实际的内容 冒泡事件: 我们假设绿色的方框代表一个小事件a,粉红色方框代表一个小事件b,b包含a,当我们点击B的时候,小程序会优先运行...A:我们知道事件的绑定需要使用 bindtap 完成,使用阻止事件只需要把bind 改成 catch 就可以实现 代码示例: 新建一个event文件,在 event.wxml 中加入如下代码 <view...布局 2.2 flex 布局 2.2.1 flex布局初体验 首先看一个样式 这就是一个典型的浮动实例,首先定义一个大方框,在定义两个小方框,然后在wxss 中修改样式,1方框左浮动,2方框右浮动。

    1.1K10

    真实测评揭秘:开发小程序用原生还是选框架?

    1.2 性能体验 三方框架,内部大多做了层层封装,这些封装是否会增加运行负载,导致性能下降?尤其是与原生微信小程序开发相比性能怎么样,这是大家普遍关心的问题。...这个结果,和web开发类似,web开发也有原生js开发、vue、react框架等情况。如果不做特殊优化,原生js写的网页,性能经常还不如vue、react框架的性能。...也恰恰是因为Vue、react框架的优秀,性能好,开发体验好,所以原生js开发已经逐渐减少使用了。...HBuilder是四大主流前端开发工具(可对比百度指数),其为uni-app做了很多优化,故uni-app的开发效率、易用性非其他框架可及。...taro:提供了js环境变量判断和统一接口的多端文件,可以在组件、js、文件方面扩展多端,不支持其他环节的分平台处理。

    6.8K50

    目标检测算法之SSD

    人们尝试了很多其他方法来构建更快的检测器,但是增加速度大多以损失检测精度为代价。本文提出了基于目标检测器的网络(object detector),它不需要为边框进行搜索,但是精度却不降反升。...在每个特征映射单元上,我们预测相对于默认方框形状的偏移,以及每一类别的分数(表明每一个方框中一个类的出现)。在给定的位置有个框,对于其中的每一个,计算类类别的分数,和相对于原来默认方框形状的个偏移。...训练时,首先将这些默认方框和 ground truth 边界框对应上。就像图中,作者匹配了2个默认方框,一个是猫,一个是狗,它们被认定为positive, 其余部分被认定为 negative....实际操作中,与 MultiBox 不同,当它们的 jaccard overlap高于阈值0.5时,作者就将默认方框认为 ground truth。...Training objective SSD的训练目标来自于MultiBox,但是作者将之扩展成可处理多目标分类的问题。表示匹配第个默认方框和类别第个ground truth边界框。

    1.6K30

    JAVA图形界面:加法计算器

    如上图所示,这个程序的界面在我们脑海中已经成型了:程序顶部有一个标题,这里用来交代我们程序的名字;功能上用户可以在方框 1 和方框 2 中放入想要进行相加的数值,然后我们点击下方的 “计算” 按钮,结果就会显示在方框...此时我们脑海中应该已经有了相应的对策 : 方框 1 , 方框 2 用来接收用户动态输入的值,方框 3 用来显示计算的结果;我们可以使用三个文本框来完成,其中方框 3 并不需要用户输入,我们可以给其设置用户不可编辑属性...8 ~ 11 行,将文本框与按钮控件作为类的成员属性,因为在程序运行时他们的状态需要保存下来,如果将其定义在某个函数中,该函数结束时,控件的生命周期也会结束,控件的状态已经其中的值无法保存,我们便无法完成后序的其他操作...19 行,设置点击窗口右上角叉叉时程序的事件响应。我这里设置为 EXIT_ON_CLOSE ,即点击后退出程序。...32 ~ 39 行,我们将上面定义的两个面板(两个模块)放入了一个垂直盒子中(将两个模块组合)。 其中 33,34 行我设置了两个支撑体,用来控制两个模块之间的距离。

    2.2K30

    Kbone原理解析 & 小程序技术选型

    Web端框架基本原理 首先我们来看下普通Web端框架,以Vue框架为例,一份Vue模板对应一个组件,在代码构建阶段编译成调用Dom接口的JS函数,执行此JS函数就会创建出组件对应的Dom树,从而渲染到浏览器页面上...[xzew2v2wz1.png] 然而,小程序是双线程的,并没有Dom树的概念,逻辑层和视图层完全分离,逻辑层是一个纯粹的JSCore,开发者可以编写JS脚本,但是无法直接调用Dom/Bom的api,...[rujujb1uzz.png] 原理是把代码语法分析一遍,然后将其中的模板部分翻译成对应的跨端需求的模板(微信小程序、支付宝小程序、H5、APP等)。...[iev8tn66kq.png] kbone这里还对节点数进行了优化: 如果一个dom节点对应一个自定义组件的话,就会创建很多自定义组件,这样会很浪费开销,这里做了子树的合并,也就是说3层才创建一个自定义组件...文章中提及到的部分第三方框架只是参考了官方文档,没有逐个一一尝试,有问题麻烦指出,鞠躬~~ [umjkhgsrjt.png]

    1.5K00

    算法·每日一题(详解+多解)-- day13

    例如下图中红色方框内的海洋格子,上边、左边都与岛屿相邻,我们可以计算出它变成陆地之后可以连接成的岛屿面积为 7 + 1 + 2 = 10。 然而,这种做法可能遇到一个问题。...那么,我们不能在方格中标记岛屿的面积,而应该标记岛屿的索引(下标),另外用一个数组记录每个岛屿的面积,如下图所示。这样我们就可以发现红色方框内的海洋格子,它的「两个」相邻的岛屿实际上是同一个。...Island Perimeter (Easy) 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地,0 表示海洋。网格中的格子水平和垂直方向相连(对角线方向不相连)。...整个网格被水完全包围,但其中恰好有一个岛屿(一个或多个表示陆地的格子相连组成岛屿)。 岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。...黄色的边是与网格边界相邻的周长,而蓝色的边是与海洋格子相邻的周长。

    38120

    不会Spring,不谈就业——学习SSM和Spring Boot的三点建议

    形象地说,Spring Boot就像一种快速、有效的“万能胶”,它几乎能将Java领域的所有框架与Spring框架迅速地整合在一起,而且由于Spring Boot为这些框架的整合提供了自动配置功能,因此整合它们几乎不需要提供额外的配置信息...伴随着Spring Boot的广泛应用(正如前文我所推荐的,我也极力推荐使用Spring Boot),所以有一些菜鸟(尤其是那些刚工作几年的菜鸟)往往跟着以讹传讹地传递一个错误的观念:SSM过时了、Hibernate...Boot的官方文档都已经说了:“尽可能自动配置Spring及第三方框架”,因此Spring Boot能快速整合、自动配置的框架恐怕比绝大部分开发者知道的框架还要多,难道这些框架都属于Spring Boot...正如前文提到的,Spring框架的源代码在架构设计和设计模式方面都具有极高的可参考性,因此阅读、并理解这些源代码不仅能迅速提高学习者在架构设计方面的能力,也能让开发者真正掌握设计模式在开发中实际应用,而不是停留在背诵设计模式包含哪些组件的层次...▼点击阅读原文,了解Java课程详情!

    89620
    领券