【JavaScript脚本宇宙】革新前端样式:CSS-in-JS库大比拼与最佳实践

解锁响应式设计的潜力:使用CSS-in-JS库构建动态样式

前言

随着前端技术的发展,CSS-in-JS(CSS in JavaScript)逐渐得到开发者的青睐。它通过将CSS样式定义在JavaScript中,利用JavaScript的强大特性,实现了更灵活、动态的样式管理方式。本文将介绍几个流行的CSS-in-JS库,包括styled-components、Emotion、JSS、Linaria、Fela和Aphrodite。

欢迎订阅专栏:JavaScript脚本宇宙

文章目录

  • 解锁响应式设计的潜力:使用CSS-in-JS库构建动态样式
    • 前言
    • 1. styled-components:一个用于React的CSS-in-JS库
      • 1.1 概述
      • 1.2 安装与设置
        • 1.2.1 使用npm安装
        • 1.2.2 基本配置
      • 1.3 核心概念
        • 1.3.1 Tagged Template Literals
        • 1.3.2 自动生成类名
        • 1.3.3 主题支持
    • 2. Emotion: 一个灵活的CSS-in-JS库
      • 2.1 概述
      • 2.2 安装与设置
        • 2.2.1 使用npm或yarn安装
        • 2.2.2 配置Babel插件
      • 2.3 核心概念
    • 3. JSS:一种使用JavaScript编写样式的解决方案
      • 3.1 概述
      • 3.2 安装与设置
        • 3.2.1 使用npm安装
        • 3.2.2 创建JSS实例
      • 3.3 核心概念
        • 3.3.1 Styles对象
        • 3.3.2 动态样式
    • 4. Linaria:零运行时CSS-in-JS库
      • 4.1 概述
      • 4.2 安装与设置
        • 4.2.1 使用npm或yarn安装
        • 4.2.2 Babel插件配置
      • 4.3 核心概念
      • 4.3.1 Tagged Template Literals
        • 4.3.2 零运行时
        • 4.3.3 CSS提取
    • 5. Fela:基于插件机制的CSS-in-JS库
      • 5.1 概述
      • 5.2 安装与设置
        • 5.2.1 使用npm安装
        • 5.2.2 创建Renderer
      • 5.3 核心概念
        • 5.3.1 Renderer
        • 5.3.2 插件
        • 5.3.3 样式单元
      • 5.4 使用示例
    • 6. Aphrodite:Facebook出品的CSS-in-JS库
      • 6.1 概述
      • 6.2 安装与设置
        • 6.2.1 使用npm安装
        • 6.2.2 引入库
      • 6.3 核心概念
        • 6.3.1 StyleSheet.create
        • 6.3.2 css函数
    • 总结

1. styled-components:一个用于React的CSS-in-JS库

1.1 概述

styled-components是一个流行的CSS-in-JS库,用于React框架。它允许开发人员在组件内部直接编写CSS样式,并通过JavaScript对象或模板字符串进行样式化。styled-components还具备一些强大的功能,如自动生成类名、主题支持和服务器端渲染等。

1.2 安装与设置

1.2.1 使用npm安装

可以通过以下命令来安装styled-components:

npm install --save styled-components
1.2.2 基本配置

安装完成后,您可以在React组件中导入并使用styled-components。下面是一个基本示例:

import React from 'react';
import styled from 'styled-components';const Button = styled.button`background: blue;color: white;padding: 8px 16px;border: none;border-radius: 4px;cursor: pointer;
`;function App() {return (<div><Button>Click me</Button></div>);
}export default App;

在上面的示例中,我们导入了styled-components模块并将其作为styled函数使用。通过styled函数,我们可以将任何React组件转换为具有内联CSS样式的样式组件。在这个例子中,我们将标准的button元素包裹在styled函数中,为其提供了一些CSS属性。然后,我们可以在render函数中使用Button组件,就像使用其他React组件一样。

1.3 核心概念

1.3.1 Tagged Template Literals

styled-components使用Tagged Template Literals来定义组件的样式。这允许你使用模板字符串来定义CSS规则,并使用JavaScript变量来动态设置值。例如:

const Button = styled.button`color: ${props => props.theme.colors.primary};padding: 10px;border: none;cursor: pointer;
`;

这个例子创建了一个名为Button的新组件,该组件是带有一些CSS样式的button元素。${props => props.theme.colors.primary}部分使用了JavaScript变量来动态设置color属性。

1.3.2 自动生成类名

styled-components会自动为每个组件生成唯一的类名,这使得样式变得更加具体和可预测。由于这些类名是根据组件的名称和样式自动生成的,因此它们在组件之间总是唯一的,并且不会干扰其他样式。

1.3.3 主题支持

styled-components还具有内置的主题支持,允许你创建一组一致的样式应用于整个应用程序。你可以使用ThemeProvider组件来定义主题,并在组件上使用props.theme访问它。例如:

import { ThemeProvider } from 'styled-components';const theme = {colors: {primary: '#ff0000',secondary: '#00ff00'},fontSizes: {small: '12px',medium: '16px',large: '24px'}
};function App() {return (<ThemeProvider theme={theme}><YourApp /></ThemeProvider>);
}

您可以在官方文档中了解更多关于标签模板字面量的内容。

2. Emotion: 一个灵活的CSS-in-JS库

Emotion是一个基于JavaScript的CSS-in-JS库,它提供了一种将样式和组件紧密结合的方式。它使用简单的API来定义和修改组件的样式,并且能够自动处理样式冲突和优化代码。

2.1 概述

Emotion是一个非常流行和灵活的CSS-in-JS库,它可以很容易地与你的React应用程序集成。它支持静态样式、动态样式和主题,并且提供了出色的性能和开发体验。

2.2 安装与设置

2.2.1 使用npm或yarn安装

你可以使用npm或者yarn来安装Emotion:

# using npm
npm install @emotion/css @emotion/react# using yarn
yarn add @emotion/css @emotion/react
2.2.2 配置Babel插件

在你的项目中使用Emotion,你需要配置Babel插件来支持CSS-in-JS语法。你可以使用以下命令来安装相应的Babel插件:

npm install --save-dev @babel/plugin-proposal-class-properties @babel/plugin-proposal-object-rest-spread @emotion/babel-plugin @babel/core @babel/preset-env @babel/preset-react babel-loader

然后在你的.babelrc文件中添加以下代码:

{"plugins": ["@emotion/babel-plugin"]
}

最后,将你的.js文件改为.jsx扩展名,以便Babel能够正确处理它们。

2.3 核心概念

Emotion的核心概念是css函数和styled函数,它们允许你在组件内部编写样式,并将其应用于DOM元素。此外,Emotion还支持主题机制,允许你在应用程序中共享和更改样式变量。

3. JSS:一种使用JavaScript编写样式的解决方案

JSS(Javascript Style Sheets)是一种使用JavaScript编写样式的解决方案,它允许你使用JavaScript来定义和修改CSS样式。JSS由Facebook创建,并被广泛应用于React应用程序中。

3.1 概述

JSS的主要目标是提供一种灵活、高效的样式管理解决方案,同时避免了传统CSS的局限性。使用JSS,你可以将样式定义为JavaScript对象,并与组件代码一起组织和维护。这样可以更好地实现样式与组件逻辑的解耦,提高代码的可维护性和重用性。

3.2 安装与设置

要开始使用JSS,首先需要通过npm安装所需的包。

3.2.1 使用npm安装
npm install --save jss
3.2.2 创建JSS实例

创建一个JSS实例是使用JSS的第一步。通常,我们会创建一个名为jss的变量来保存这个实例,以便在应用中共享和使用。

下面是一个基本的示例:

import JSS from 'jss';const jss = new JSS(); // 创建一个JSS实例

在实际应用中,我们通常会在项目的入口文件中创建一个JSS实例,并导出它以供其他组件使用。

3.3 核心概念

要理解和掌握JSS的工作原理,需要熟悉以下几个核心概念:

  • Styles对象:表示一组CSS样式的定义。在JSS中,样式被定义为JavaScript对象,其中属性名对应于CSS属性名,属性值对应于CSS属性值。例如:
const styles = {color: 'red', // CSS中的color属性fontSize: '16px' // CSS中的font-size属性
};
  • 动态样式:JSS允许你根据组件状态或用户交互动态地更新样式。你可以使用函数作为样式属性的值,该函数将被调用并返回当前状态下的样式值。例如:
const styles = {color: (props) => props.color, // 根据props中的color属性动态设置color样式fontSize: (props) => props.size, // 根据props中的size属性动态设置font-size样式
};
  • 插件系统:JSS具有强大的插件系统,允许你扩展其功能以满足特定的需求。插件可以执行各种任务,例如添加新功能、改善性能、提供语法糖等。一些常用的JSS插件包括jss-nestedjss-vendor-prefixerjss-camel-case等。
3.3.1 Styles对象

在JSS中,样式被定义为一个JavaScript对象,其中包含类名和对应的样式规则。每个属性代表一个类名,属性值可以是另一个包含样式规则的对象。以下是一个简单的样式示例:

const styles = {button: {color: 'red','&:hover': {color: 'blue'}},input: {fontSize: '14px'}
};

这个示例中定义了两个类 buttoninput,分别包含了一些样式规则。注意,可以使用 & 符号来表示父选择器。

3.3.2 动态样式

JSS支持动态地更新样式,这意味着可以根据某些状态或条件来改变元素的样式。只需要返回一个函数,该函数接收到当前组件的状态作为参数后返回样式对象即可。以下是一个示例:

const styles = {button: (props) => ({color: props.color,'&:hover': {color: props.color === 'red' ? 'blue' : 'red'}})
};

4. Linaria:零运行时CSS-in-JS库

Linaria是一个基于Tagged Template Literals的CSS-in-JS库,它具有以下特点:

  • 在编译时将CSS提取到单独的文件中,从而实现真正的零运行时。
  • 支持CSS预处理,如Sass和Less。
  • 良好的开发体验,包括自动完成、类型检查和样式linting。

4.1 概述

Linaria是一个基于Tagged Template Literals的CSS-in-JS库,它允许你使用JavaScript来定义和修改CSS样式。与传统的CSS-in-JS库不同,Linaria在编译时将CSS提取到单独的文件中,从而实现真正的零运行时。这意味着你的应用程序将不再需要在运行时加载任何CSS-in-JS库的代码或依赖项。

Linaria还支持CSS预处理,如Sass和Less,这可以让你更方便地使用这些语言来定义和修改CSS样式。此外,Linaria还提供了一些其他的功能,如自动完成、类型检查和样式linting,以帮助你更好地编写和维护CSS-in-JS代码。

4.2 安装与设置

要使用Linaria,你需要在你的项目中安装并配置它。下面是一些有关如何安装和设置Linaria的基本步骤。

4.2.1 使用npm或yarn安装

首先,你需要使用npm或yarn安装Linaria。可以使用以下命令进行安装:

npm install --save-dev linaria

或者:

yarn add --dev linaria
4.2.2 Babel插件配置

接下来,你需要配置Babel插件以启用Linaria。在你的Babel配置文件中,添加以下行:

{"plugins": ["linaria/babel"]
}

这将告诉Babel在编译过程中使用Linaria的插件来提取CSS样式。

4.3 核心概念

Linaria是基于Tagged Template Literals的CSS-in-JS库,它具有以下核心概念:

4.3.1 Tagged Template Literals

Linaria使用Tagged Template Literals来定义样式并与JavaScript组件紧密耦合。以下是一个示例:

import React from 'react';
import { styled } from 'linaria/react';const Button = styled.button`background: blue;color: white;padding: 10px;border-radius: 5px;
`;

在这个例子中,我们使用styled函数来定义一个带有自定义样式的按钮组件。 styled函数返回一个具有指定标签(这里是button)的新组件,并将所有属性直接传递给底层组件。这种语法允许我们轻松地将样式与组件定义组合在一起,而不需要显式地创建单独的样式对象或类名。

4.3.2 零运行时

Linaria的主要特点是其零运行时架构。这意味着在运行时不需要进行样式注入或更新。相反,所有的样式都是在构建时进行提取和捆绑的。这样可以提高应用程序的性能,并减少对客户端资源的需求。

4.3.3 CSS提取

Linaria会将所有标记的模板字面量中的CSS提取到单独的文件中。然后,它会将提取的CSS与相应的组件关联起来,并在适当的时机将其注入到DOM中。这使你可以轻松地使用模块化的CSS,而无需手动管理样式的注入和更新。

5. Fela:基于插件机制的CSS-in-JS库

Fela是一个基于插件机制的CSS-in-JS库,它允许你使用JavaScript来定义和修改CSS样式。Fela通过插件机制,为开发者提供了高度的灵活性和可扩展性。

5.1 概述

Fela将样式定义为JavaScript对象,这使得样式可以在运行时动态地创建和修改。Fela的核心概念包括Renderer、插件和样式单元。通过这些概念,Fela可以与其他库(如React)结合使用,以实现组件化的风格。

5.2 安装与设置

5.2.1 使用npm安装

首先,通过npm安装Fela:

npm install fela --save
5.2.2 创建Renderer

创建一个renderer是使用Fela的第一步。renderer是一个用于管理样式和插件的对象。下面是一个基本的renderer配置:

import { createRenderer } from 'fela';
import fallbackPlugin from 'fela-plugin-fallback';
import prefixer from 'fela-plugin-prefixer';const renderer = createRenderer({plugins: [fallbackPlugin(), prefixer()],
});

在上面的例子中,我们使用了两个插件:fela-plugin-fallbackfela-plugin-prefixer。这些插件添加了浏览器兼容性支持,使我们的样式可以在不同的浏览器上正常工作。

5.3 核心概念

5.3.1 Renderer

renderer是用于管理样式和插件的对象。它包含了有关当前样式的信息,并提供了将样式呈现为CSS的接口。renderer还负责执行插件,这些插件可以修改样式或添加额外的功能。

5.3.2 插件

插件是Fela的核心功能之一。插件是函数,可用于在样式对象上执行转换操作。插件可以是异步的,也可以是同步的,并且可以接收任意数量的参数。Fela有许多内置的插件,也有大量的第三方插件可供使用。

5.3.3 样式单元

样式单元是Fela用于表示单个样式集合的概念。样式单元是由create方法生成的对象,它接受一个包含属性和值的对象作为参数。样式单元有自己的唯一类名和CSS属性字符串,可以通过toString方法访问。

5.4 使用示例

以下是一些使用Fela的示例:

6. Aphrodite:Facebook出品的CSS-in-JS库

Aphrodite是Facebook开源的一个轻量级CSS-in-JS库,它可以帮助我们在JavaScript中声明样式,并将其应用于DOM节点。与传统的CSS相比,它在样式的组织和管理上更加灵活和方便。

6.1 概述

Aphrodite的主要特点包括:

  • 使用JavaScript来定义样式,可以更方便地组织和管理样式。
  • 通过StyleSheet.create()函数将样式对象转换为可复用的类名,并在组件中应用。
  • 自动添加前缀和压缩样式,提高代码的兼容性和效率。
  • 支持媒体查询、关键帧动画等高级特性。

6.2 安装与设置

6.2.1 使用npm安装

首先,我们需要使用npm安装Aphrodite库:

npm install aphrodite --save
6.2.2 引入库

然后,在我们的JavaScript文件中引入Aphrodite库:

import { StyleSheet, css } from 'aphrodite';

这将使我们能够使用Aphrodite提供的核心功能,例如StyleSheet.create()css()函数。

6.3 核心概念

下面我们来介绍Aphrodite的核心概念。

6.3.1 StyleSheet.create

StyleSheet.create方法用于创建一个包含多个样式的样式表。它接受一个对象作为参数,其中每个键表示一个类名,对应的值是一个样式对象。StyleSheet.create方法会返回一个新的对象,其中包含生成的类名和原始样式对象。

以下是一个示例:

import { StyleSheet, create } from 'aphrodite';const styles = StyleSheet.create({button: {backgroundColor: 'blue',color: 'white',padding: '10px',borderRadius: '5px',},container: {textAlign: 'center',},
});
6.3.2 css函数

css()函数用于将样式应用于DOM节点。它接受一个或多个样式规则(或它们的类名)作为参数,并返回一个字符串。我们可以将此字符串用作HTML元素的类属性。例如:

const styles = StyleSheet.create({button: {backgroundColor: 'blue',color: 'white'},activeButton: {backgroundColor: 'red'}
});function Button() {return <button className={css(styles.button)}>Click me</button>;
}

总结

通过本文的介绍,您将了解到CSS-in-JS的基本原理和应用场景,并且能够根据具体需求选择合适的库进行开发。无论是styled-components的易用性、Emotion的灵活性,还是JSS的可扩展性、Linaria的零运行时特性、Fela的插件机制,以及Aphrodite的关键帧动画支持,每个库都提供了不同的解决方案来满足各种需求。

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

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

相关文章

人人讲视频如何下载

一、工具准备 1.VLC media player 2.谷歌浏览器 二、视频下载 1.打开人人讲网页&#xff0c;需要下载的视频 谷歌浏览器打开调试窗口 搜索m3u8链接 拷贝到VLCplayer打开网络串流方式打开测试是否能正常播放 2.下载视频 能正常播放后&#xff0c;切换播放为转换选择mp4格式…

24年火爆全网的企业信贷产品-民生惠详解

今年&#xff0c;民生惠企业信贷产品非常火爆&#xff01;客户想申请这信用贷款前&#xff0c;先确认下自己是不是在白名单里。有些地区还能加进白名单&#xff0c;不在的话就别申请了&#xff0c;这是专门给受邀的小微企业的。 这款产品的细节是这样的&#xff1a; 额度&am…

leetcode:只出现一次的数字(原理分析)

一.异或运算&#xff08;^&#xff09; 当我们对一个变量进行异或运算时&#xff0c;运算规则如下&#xff1a; 0 ⊕ 0 0 0 ⊕ 1 1 1 ⊕ 0 1 1 ⊕ 1 0 现在假设我们有一个数组 [2, 2, 1, 3, 3]&#xff0c;我们将对数组中的所有元素进行异或运算&#xff1a; 首先 ret …

visual studio 创建c++项目

目录 环境准备&#xff1a;安装 visual studiovisual studio 创建c项目Tips&#xff1a;新建cpp文件注释与取消注释代码 其他初学者使用Visual Studio开发C和C时常遇到的3个坑 环境准备&#xff1a;安装 visual studio 官网&#xff1a;https://visualstudio.microsoft.com/zh…

ThreadLocal的原理

ThreadLocal原理 1ThreadLocal是一个工具类&#xff0c;为每个线程提供自己专属的本地变量 2ThreadLocal底层是通过ThreadLocalMap实现的&#xff0c;每个Thread对象中存在一个ThreadLocalMap&#xff0c;Map的key为ThreadLocal对象&#xff0c;Map的value为要缓存的值。 Thre…

中介子方程二十九

XXFXXuXXWXXuXXdXXrXXαXXuXXαXXrXXdXXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXXrXXαXXuXXαXXrXXeXqXXNXXpXπXbXeXyXeXWXXπXWXuXXdXXrXXαXXuXXαXXrXXdXXuXXWXXuXXFXXEXXyXXEXXrXXαXXuXXαXXrXXEXXyXXαXiXXαXiXrXkXtXyXXpXVXXdXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXXrXXαXXuXXα…

【十三】图解mybatis缓存模块之装饰器模式

图解mybatis缓存模块之装饰器模式 简介 之前有写过一篇博客介绍过mybatis的缓存模块设计【九】mybatis 缓存模块设计-CSDN博客 &#xff0c;当时着重讲解的是mybatis种一级缓存和二级缓存&#xff0c;本次博客补充讲解一下装饰器模式的应用&#xff0c;本篇主要分两部分讲解&a…

kotlin智能类型转换

1、在kotlin这中&#xff0c;定义如下类型&#xff0c;在判断不为null的语句里边&#xff0c;会发生类型转换&#xff1a; fun main(){var a:String? "XXX" // a 类型为 String? 可能为 null// 在if 语句中&#xff0c;a 的类型为 Stringif(a ! null){println(a.l…

动态ARP

定义 动态ARP表项由ARP协议通过ARP报文自动生成和维护&#xff0c;可以被老化&#xff0c;可以被新的ARP报文更新&#xff0c;可以被静态ARP表项覆盖。 动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。 ARP地址解析过程 动态ARP通过广播ARP请求和单播ARP应答这两个过…

使用 Kubernetes 部署 MinIO 和 Trino

Trino&#xff08;以前称为 Presto&#xff09;是一个 SQL 查询引擎&#xff0c;而不是 SQL 数据库。Trino 避开了 SQL 数据库的存储组件&#xff0c;只专注于一件事 - 超快的 SQL 查询。Trino 只是一个查询引擎&#xff0c;不存储数据。相反&#xff0c;Trino与各种数据库交互…

GWO-CNN-SVM,基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

GWO-CNN-SVM&#xff0c;基于GWO灰狼优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1. GWO灰狼优化算法 灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#xff09;是一种启发式优化算法&#xff0c;模拟了灰狼群体的社会行为&#xff0c;包…

天马学航——智慧教务系统(移动端)开发日志六

天马学航——智慧教务系统(移动端)开发日志六 日志摘要&#xff1a;统一身份认证设计&#xff0c;修复了选课信息错乱的问题 界面设计 实现思路 使用 Java 和 Jedis 完成实现&#xff1a; 步骤一&#xff1a;添加 Jedis 依赖 首先需要在项目中添加 Jedis 依赖&#xff0c;…

使用海康威视的SDK,利用WPF设计一个网络摄像头的显示控制程序(上位机)

目录 一、下载海康威视的SDK 1.1 关于SDK 1.2 关于API 1.3 关于DLL 1.4 下载海康威视的SDK 1.5 关于网络高清摄像机 二、对下载的SDK进行调试 三、利用Visual Studio打开项目的解决方案 3.1 Visual Studio 2022下载 3.2 关于句柄 四、打开WPF进行ui页面设计 4.1 关…

react笔记-03react-router篇

本文章是react的路由笔记 一、react路由&#xff08;v5版本&#xff09; 1. 什么是路由&#xff08;前端&#xff09;&#xff1f; 一个路由就算一个映射关系&#xff08;key: value)key为路径&#xff0c;value为组件 2. 前端路由的工作原理 根据浏览器历史记录&#xff…

双例集合(三)——双例集合的实现类之TreeMap容器类

Map接口有两个实现类&#xff0c;一个是HashMap容器类&#xff0c;另一个是TreeMap容器类。TreeMap容器类的使用在API上于HashMap容器类没有太大的区别。它们的区别主要体现在两个方面&#xff0c;一个是底层实现方式上&#xff0c;HashMap是基于Hash算法来实现的吗&#xff0c…

【Qt6.3 基础教程 04】探索Qt项目结构和配置文件

文章目录 前言Qt项目的基本结构配置文件&#xff1a;.pro文件基本构成示例.pro文件&#xff1a; qmake和构建过程步骤简述&#xff1a; 修改项目设置结论 前言 当你开始使用Qt进行开发时&#xff0c;理解项目结构和配置文件的作用是至关重要的。这篇博文将带你深入了解Qt项目的…

什么是电商大数据?主流电商大数据的采集||关键性技术|电商API接口接入说明

大数据的时代早已到来&#xff0c;然而想要全方位掌握大数据&#xff0c;务必要掌握大数据造成的时代特征&#xff0c;之前大数据被视为废物&#xff0c;如今被视为财产。主流电商大数据的采集&#xff0c;电商API接口的接入在大多数人理解中&#xff0c;是企业用数据来优化自己…

HackTheBox-Linux基础

Linux 结构 历史 许多事件导致了第一个 Linux 内核的创建&#xff0c;并最终创建了 Linux 操作系统 &#xff08;OS&#xff09;&#xff0c;从 1970 年 Ken Thompson 和 Dennis Ritchie&#xff08;当时都在 AT&T 工作&#xff09;发布 Unix 操作系统开始。伯克利软件发行…

什么叫图像的均值滤波,并附利用OpenCV和MATLB实现均值滤波的代码

均值滤波是一种常见的图像处理技术&#xff0c;主要用于平滑图像、去除噪声。它通过计算图像中每个像素及其邻域像素的平均值来实现。具体过程如下&#xff1a; 定义滤波器窗口&#xff1a;选择一个窗口&#xff08;通常是一个正方形或矩形&#xff0c;比如 33或 55 的大小&…

TDengine Cloud 新增签约,这次是能源物联网平台

最近&#xff0c;全托管的物联网、工业大数据云服务平台 TDengine Cloud 新增一项签约&#x1f973;。为进一步提升平台的数据处理能力与系统稳定性&#xff0c;推动智能设备数据管理和能效优化到新的高度&#xff0c; 德中恒越物联网数据平台选择应用 TDengine Cloud ☁️。 …