当前位置: 首页 > news >正文

vuejs3.0 从入门到精通【左扬精讲】—— 从原生到原子化:一文梳理现代 CSS 技术体系(2025 版)

vuejs3.0 从入门到精通【左扬精讲】—— 从原生到原子化:一文梳理现代 CSS 技术体系(2025 版)

        作为前端开发的核心技术之一,CSS(层叠样式表)早已不是 “写几行样式” 那么简单。

        随着项目规模扩大和工程化需求升级,CSS 技术栈也衍生出众多分支 —— 从解决复用性的预处理器,到隔离冲突的模块化方案,再到提升效率的原子化框架。今天就带大家系统梳理现代 CSS 技术体系,帮你在不同场景下选对工具。

一、原生 CSS:所有技术的基石

原生 CSS 是浏览器直接支持的样式语言,无需任何编译工具,是所有 CSS 技术的基础。随着 CSS3 标准的完善,原生 CSS 也新增了不少实用特性。

1.1 标准原生 CSS

    • 核心特点:语法简单直接,通过<style>标签或.css文件引入,无任何依赖。
    • 优势:学习成本低,现代浏览器对 CSS3(Flex、Grid、过渡动画等)支持已非常完善。
    • 不足:缺乏变量、嵌套、复用能力,大型项目中易出现 “样式冲突” 和 “代码冗余”。
    • 适用场景:小型静态页面、简单组件样式、快速原型开发。

示例:

/* 按钮基础样式 */
.btn {padding: 8px 16px;background: #165DFF;color: white;border: none;border-radius: 4px;cursor: pointer;
}
/* hover状态 */
.btn:hover {background: #0E4BD8;
}
/* 禁用状态 */
.btn:disabled {opacity: 0.6;cursor: not-allowed;
} 

1.2 CSS Variables(CSS 变量)

原生 CSS 的 “变量机制”,是 CSS3 新增的核心特性之一,解决了原生 CSS “硬编码” 的痛点。

  • 核心特点:
    • 定义:通过--变量名声明(如--primary-color: #165DFF);
    • 使用:通过var(--变量名)调用;
    • 作用域:支持全局(:root下)和局部(组件内)。
  • 优势:
    • 统一管理颜色、尺寸等公共值,修改时 “一处改,处处改”;
    • 支持 JS 动态修改(可实现主题切换、响应式适配等交互);
    • 无依赖,浏览器原生支持。
    • 兼容性:IE 不支持,现代浏览器(Chrome 49+、Firefox 31+、Safari 9.1+)均兼容。

示例:

/* 全局变量:所有组件可复用 */
:root {--primary-color: #165DFF; /* 主色调 */--secondary-color: #6B7280; /* 辅助色 */--btn-padding: 8px 16px; /* 按钮内边距 */--border-radius: 4px; /* 统一圆角 */
}/* 局部变量:仅在.card组件内生效 */
.card {--card-shadow: 0 2px 8px rgba(0,0,0,0.1); /* 卡片阴影 */box-shadow: var(--card-shadow);border-radius: var(--border-radius);
}/* 使用变量 */
.btn-primary {background: var(--primary-color);padding: var(--btn-padding);border-radius: var(--border-radius);
} 

二、CSS 预处理器:增强 CSS 的 “编程语言能力”

原生 CSS 缺乏变量、嵌套、函数等工程化特性,预处理器应运而生。它通过扩展 CSS 语法,让样式编写更像 “写代码”,最终再编译为原生 CSS 供浏览器识别。
主流的预处理器有 3 种:Sass、Less、Stylus,各有侧重,我们通过对比快速了解:

特性Sass(.scss/.sass)Less(.less)Stylus(.styl)
语法风格 两种格式:
- .scss(类 CSS,需大括号 / 分号)
- .sass(缩进式,无大括号)
类 CSS 语法,需大括号 / 分号,学习成本低 极致灵活:
- 可省大括号 / 分号 / 冒号
- 支持缩进式
变量定义 $color: #165DFF; @color: #165DFF; color = #165DFF 或 $color = #165DFF
嵌套支持 支持,通过&引用父选择器(如&:hover) 支持,同 Sass 语法 支持,语法更简洁(如hover直接嵌套)
混合(Mixin) @mixin btn { ... } + @include btn ._btn { ... } + .btn { ._btn() } btn() { ... } + btn()
函数 / 运算 内置丰富函数(颜色lighten()、数值round()),支持算术运算 支持基本运算,内置函数较少 支持运算,可自定义函数,灵活性高
依赖工具 需安装sass包(Dart Sass,官方推荐) 需安装less包 + less-loader(Webpack) 需安装stylus包 + stylus-loader
生态成熟度 最高(React/Vue 官方推荐,社区资源多) 较高(早期流行,适合简单项目) 中等(小众场景用得多,如 Node 项目)

2.1、为什么选择 Sass?

Sass 是目前生态最成熟、使用最广泛的预处理器,尤其在中大型项目中。它的.scss格式兼容 CSS 语法,学习成本低,且内置了大量实用功能(如颜色处理、条件判断、循环),能极大提升样式复用性。

Sass 示例(.scss 格式):

// 1. 变量:统一管理主题色
$primary: #165DFF;
$danger: #F53F3F;
$btn-padding: 8px 16px;// 2. 混合(Mixin):复用按钮基础样式,支持传参
@mixin btn-style($bg: $primary, $color: white) {padding: $btn-padding;background: $bg;color: $color;border: none;border-radius: 4px;cursor: pointer;// 嵌套:引用父选择器&:hover {background: darken($bg, 10%); // 内置函数:颜色加深10%}&:disabled {opacity: 0.6;cursor: not-allowed;}
}// 3. 嵌套:组件样式组织更清晰
.btn-group {display: flex;gap: 8px; // 按钮间距// 主按钮:使用默认Mixin参数.btn-primary {@include btn-style();}// 危险按钮:传参覆盖默认值.btn-danger {@include btn-style($danger);}// 文本按钮:自定义参数.btn-text {@include btn-style(transparent, $primary);}
}

三、CSS 后处理器:优化 CSS 的 “自动化工具”

如果说预处理器是“写样式时的增强”,那后处理器就是“写完样式后的优化”。它不改变开发时的 CSS 语法,而是对原生 CSS(或预处理器编译后的 CSS)进行二次处理,核心作用是兼容性适配和代码优化。

3.1、主流工具:PostCSS

PostCSS 本身是一个“插件框架”,所有功能都通过插件实现,灵活性极高。常用插件包括:

      1. autoprefixer:自动添加浏览器前缀
        • 无需手动写-webkit- -moz-等前缀,它会根据browserslist配置(如last 2 versions)自动补全,适配不同浏览器。
      2. postcss-preset-env:现代 CSS 特性兼容
        • 将 CSS 变量、@custom-media(自定义媒体查询)等现代特性,编译为低版本浏览器可识别的语法,无需担心兼容性。
      3. cssnano:CSS 代码压缩
        • 移除空格、合并重复规则、简写属性(如margin: 0 0 0 0→margin: 0),减小 CSS 文件体积,提升加载速度。
      4. postcss-modules:实现 CSS 模块化
        • 配合模块化方案,自动生成唯一类名,避免样式冲突(下文会讲)。

PostCSS 处理前后对比:

/* 开发时写的CSS(现代特性) */
.btn {display: flex;gap: 8px;background: #165DFF;transition: all 0.3s;
}/* PostCSS(autoprefixer + cssnano)处理后 */
.btn{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#165DFF;-webkit-transition:all .3s;transition:all .3s}

四、CSS 模块化:解决 “样式冲突” 的核心方案

大型项目中,多个组件共用 CSS 时,很容易出现“选择器冲突”(比如两个组件都用.btn,样式互相覆盖)。模块化方案通过“作用域隔离”,让样式只对当前组件生效,从根本上解决冲突。

4.1 CSS Modules:最通用的模块化方案

核心原理:将.css文件视为 “独立模块”,编译时为每个选择器生成 “唯一哈希类名”(如.btn→.btn__123abc),确保全局唯一。

使用方式:

      • 文件名命名为[组件名].module.css(或.module.scss,支持预处理器);
      • 在组件中通过import styles from './组件名.module.css'导入;
      • 通过styles.类名使用样式。

 优势:

      • 完全隔离样式,无全局冲突;
      • 支持预处理器(如 Sass);
      • TypeScript 项目中自动生成.d.ts类型文件,提供类名提示,避免拼写错误。

示例:

/* Button.module.scss */
.btn {padding: 8px 16px;background: #165DFF;color: white;border-radius: 4px;
}.disabled {opacity: 0.6;cursor: not-allowed;
} 
// Button.tsx
import styles from './Button.module.scss';export default function Button({ disabled, children }) {return (<button className={`${styles.btn} ${disabled ? styles.disabled : ''}`}disabled={disabled}>{children}</button>);
}

4.2 Vue Scoped CSS:Vue 专属模块化

Vue 为组件样式隔离提供了原生支持,只需在<style>标签中添加scoped属性即可。

      • 核心原理:Vue 编译时会为组件内的所有元素添加 “唯一 data 属性”(如data-v-123abc),同时为 CSS 选择器添加对应的属性选择器(如.btn[data-v-123abc]),确保样式只对当前组件生效。
      • 优势:无需额外配置,语法简单,与 Vue 组件无缝集成。
      • 注意:若需修改子组件样式,可使用 “深度选择器”::v-deep(或/deep/)。
      • 示例(Vue 组件):
        <template><div class="btn-container"><button class="btn">Vue按钮</button></div>
        </template><style scoped lang="scss">
        // 仅对当前组件生效
        .btn-container {display: flex;justify-content: center;
        }.btn {padding: 8px 16px;background: #165DFF;color: white;border-radius: 4px;
        }// 深度选择器:修改子组件样式(如子组件的 .child-class)
        ::v-deep .child-class {margin-top: 8px;
        }
        </style>

4.3 CSS-in-JS:样式写在 JS/TS 中

CSS-in-JS 是将样式以 “JS 对象” 或 “模板字符串” 的形式写在组件代码中,样式与组件完全绑定,天然隔离。

      • 主流库:
        • Styled Components:用模板字符串定义 “样式组件”,支持动态 props;
        • Emotion:轻量高性能,支持 JS 对象和模板字符串两种语法,适配 React/Vue。
      • 优势:
        • 样式与组件紧密耦合,便于维护;
        • 支持动态样式(如根据 props 切换颜色、尺寸);
        • 天然支持 SSR(服务端渲染),无样式闪烁问题。
      • 不足:运行时生成样式,可能增加性能开销;调试时样式来源为 JS,不如原生 CSS 直观。
      • 示例(Styled Components)
        import styled from 'styled-components';// 定义样式组件,支持动态props
        const Button = styled.button<{ primary?: boolean; disabled?: boolean }>`padding: 8px 16px;border: none;border-radius: 4px;// 动态样式:根据primary props切换背景色background: ${(props) => (props.primary ? '#165DFF' : '#F2F3F5')};color: ${(props) => (props.primary ? 'white' : '#1D2129')};// 动态样式:根据disabled props切换透明度opacity: ${(props) => (props.disabled ? 0.6 : 1)};cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};
        `;// 使用组件
        export default function App() {return (<div><Button primary>主要按钮</Button><Button disabled>禁用按钮</Button><Button>普通按钮</Button></div>);
        }

五、原子化 CSS 框架:极致效率的 “样式乐高”

原子化 CSS 的核心是“提供大量预定义的「原子类」”(如flex mt-4 text-red-500),开发时无需写自定义 CSS,直接组合原子类即可实现样式,极大提升开发效率。

主流框架对比

框架核心特点优势不足
Tailwind CSS 最流行,高度可配置(颜色、尺寸、间距等),支持 JIT(按需生成原子类),生态完善 开发效率极高,样式统一,可定制性强,社区资源多 初期需记忆原子类,HTML 类名可能较长
Windi CSS 基于 Tailwind,支持 “按需生成” 和 “属性模式”(如bg="blue-500"),编译速度更快 比 Tailwind 更灵活,支持属性语法,编译快 生态比 Tailwind 弱,社区资源较少
UnoCSS 轻量(无核心预设,按需加载),支持多种语法(Tailwind/Windi/ 自定义),可扩展 极致灵活,体积小,适配多种开发习惯 需手动配置预设,学习成本略高

为什么 Tailwind CSS 最火? 

Tailwind CSS 通过“可配置性”和“JIT 模式”解决了原子化 CSS 的痛点:

    • 可配置:通过tailwind.config.js自定义颜色、尺寸、间距等,贴合项目设计规范;
    • JIT 模式:仅生成项目中使用的原子类,避免 CSS 文件过大;
    • 生态完善:有大量组件库(如 Headless UI、Daisy UI)和插件,降低开发成本。

Tailwind CSS 示例: 

<!-- 无需写自定义CSS,直接组合原子类 -->
<button class="px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600 transition-colors shadow-sm">原子化按钮
</button><!-- 解析后等效于以下CSS(JIT模式按需生成) -->
.px-4 { padding-left: 1rem; padding-right: 1rem; }
.py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
.bg-blue-500 { background-color: #3b82f6; }
.text-white { color: #ffffff; }
.rounded-md { border-radius: 0.375rem; }
.hover\:bg-blue-600:hover { background-color: #2563eb; }
.transition-colors { transition-property: color, background-color; }
.shadow-sm { box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05); }

六、其他实用 CSS 技术:规范与架构补充

除了上述主流工具,还有一些 CSS 技术虽不直接“生成样式”,但能帮你规范代码结构、提升维护性,尤其在中大型项目中不可或缺。

6.1 BEM 命名规范:无工具依赖的 “冲突解决方案”

BEM 不是工具,而是一套 CSS 类名命名约定,全称为 Block(块)__Element(元素)--Modifier(修饰符),核心是通过 “结构化命名” 避免选择器冲突,适合没有模块化工具的项目(如传统多页面应用)。

核心规则:

    • Block(块):独立的功能组件(如按钮、卡片),类名用小写字母 + 短横线,如 btn、card;
    • Element(元素):块的组成部分,依赖于块存在(如按钮内的图标、卡片内的标题),用 __ 连接块名,如 btn__icon、card__title;
    • Modifier(修饰符):块或元素的状态 / 样式变体(如禁用按钮、红色卡片),用 -- 连接,如 btn--disabled、card--red。

优势:

    • 无依赖,直接上手使用;
    • 类名语义清晰,见名知意,后期维护时能快速定位样式归属;
    • 避免深层嵌套选择器(如 .card .title .text),提升 CSS 渲染效率。
示例:
<!-- BEM命名的卡片组件 -->
<div class="card card--shadow"><img class="card__img card__img--round" src="pic.jpg" alt="卡片图片"><div class="card__content"><h3 class="card__title">卡片标题</h3><p class="card__desc card__desc--gray">卡片描述文本</p></div><button class="card__btn btn btn--primary">点击按钮</button>
</div>
/* 块:card */
.card {width: 300px;border-radius: 8px;overflow: hidden;
}/* 修饰符:card--shadow */
.card--shadow {box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}/* 元素:card__img */
.card__img {width: 100%;height: 180px;object-fit: cover;
}/* 修饰符:card__img--round */
.card__img--round {border-radius: 50%;width: 80px;height: 80px;margin: 0 auto;
}

6.2 ITCSS:大型项目的 “CSS 架构方案”

ITCSS 全称 Inverted Triangle CSS(倒三角形 CSS),是一套 CSS 文件组织架构,核心是按“样式通用性从高到低、specificity(权重)从低到高” 分层管理 CSS,避免样式优先级混乱,适合团队协作的大型项目。

七层结构(从下到上,权重递增):

层级作用内容示例
1. Settings 全局配置(无实际样式) 预处理器变量(如颜色、尺寸、字体)、工具函数
2. Tools 工具类(无实际样式) 预处理器混合(Mixin)、函数(如颜色加深)
3. Generic 通用样式(全局基础样式) 重置样式(Reset CSS)、浏览器默认样式覆盖
4. Elements 元素样式(HTML 原生标签) body、p、h1-h6、a 等标签的基础样式
5. Objects 抽象组件(无样式的结构组件) 网格布局(Grid)、弹性容器(Flex Container)
6. Components 业务组件(具体功能组件) 按钮(btn)、卡片(card)、导航(nav)等
7. Trumps 覆盖样式(高权重,慎用) 工具类(如 mt-0 清除 margin)、紧急修复

优势:

      • 结构清晰,团队成员能快速找到对应样式文件;
      • 按权重分层,避免 “!important” 滥用,减少样式优先级冲突;
      • 可复用性高,通用样式(如 Settings、Tools)可跨项目使用。  

项目目录示例:

src/
└── styles/├── 1-settings/        # 全局配置│   ├── _colors.scss    # 颜色变量│   ├── _sizes.scss     # 尺寸变量│   └── _fonts.scss     # 字体变量├── 2-tools/           # 工具类│   ├── _mixins.scss    # 混合│   └── _functions.scss # 函数├── 3-generic/         # 通用样式│   └── _reset.scss     # 重置样式├── 4-elements/        # 元素样式│   └── _typography.scss # 文本标签样式├── 5-objects/         # 抽象组件│   └── _grid.scss      # 网格布局├── 6-components/      # 业务组件│   ├── _btn.scss       # 按钮样式│   └── _card.scss      # 卡片样式└── main.scss          # 入口文件(按层级导入所有样式)

6.3 Styled JSX:Next.js 生态的 “CSS-in-JS 方案”

Styled JSX 是 Next.js 官方推荐的 CSS-in-JS 方案,由 Next.js 团队开发,专门适配服务端渲染(SSR)场景,解决了传统 CSS-in-JS 在 SSR 中“样式闪烁”的问题。

    • 核心特点
      • 零配置:Next.js 项目中无需额外安装依赖,直接在组件中使用 <style jsx> 标签;
      • 作用域隔离:样式默认只对当前组件生效,编译时生成唯一类名,类似 CSS Modules;
      • SSR 友好:服务端渲染时同步生成样式,客户端无需等待 JS 加载完成再渲染样式,避免闪烁;
      • 支持全局样式:通过 <style jsx global> 标签编写全局样式(如重置样式)。
    • 示例(Next.js 组件):

      // pages/index.js
      export default function Home() {const isPrimary = true;return (<div className="container"><h1>Next.js + Styled JSX</h1><button className={`btn ${isPrimary ? 'btn--primary' : 'btn--default'}`}>点击按钮</button>{/* 组件内样式(作用域隔离) */}<style jsx>{`.container {max-width: 1200px;margin: 0 auto;padding: 20px;}.btn {padding: 8px 16px;border: none;border-radius: 4px;cursor: pointer;}.btn--primary {background: #165DFF;color: white;}.btn--default {background: #F2F3F5;color: #1D2129;}`}</style>{/* 全局样式(作用于整个项目) */}<style jsx global>{`body {margin: 0;font-family: 'Inter', sans-serif;}h1 {color: #1D2129;font-size: 24px;}`}</style></div>);
      }

七、如何选择适合的 CSS 方案?(2025 选型建议)

了解了这么多 CSS 技术,很多人会问:“我该用哪一个?”其实没有“最好”的方案,只有“最适合”的场景。以下是基于项目类型、框架、团队规模的选型建议:

 

项目场景推荐方案核心原因
小型项目 / 静态页面 原生 CSS + CSS Variables 无依赖,开发快,无需额外配置工具
个人项目 / 快速原型 Tailwind CSS 原子类组合高效,无需写自定义 CSS,上手快
Vue 项目(中小型) Vue Scoped CSS + Sass Vue 原生支持 Scoped,Sass 提升复用性,学习成本低
Vue 项目(大型) Vue Scoped CSS + Sass + PostCSS 加 PostCSS 自动补兼容前缀,适配多端浏览器
React 项目(中小型) CSS Modules + Sass 样式隔离彻底,Sass 支持复杂样式逻辑,生态成熟
React 项目(大型 / SSR) Styled Components / Emotion + Tailwind CSS CSS-in-JS 适配 SSR,Tailwind 提升效率,两者可配合使用
传统多页面应用 BEM + Sass + PostCSS 无框架依赖,BEM 规范命名,PostCSS 补兼容
团队协作大型项目 ITCSS 架构 + Sass + PostCSS + CSS Modules ITCSS 规范结构,模块化避免冲突,团队协作高效

八、总结:现代 CSS 技术的核心趋势

从原生 CSS 到原子化框架,CSS 技术的发展始终围绕三个核心需求:提升开发效率、解决工程化问题、优化用户体验。2024 年的 CSS 技术趋势也很明确:

    1. 原子化成为主流:Tailwind CSS 的普及,让 “少写自定义 CSS” 成为共识,开发效率大幅提升;
    2. 模块化不可缺少:无论是 CSS Modules、Scoped CSS 还是 CSS-in-JS,样式隔离已成为中大型项目的标配;
    3. 工具链自动化:PostCSS 自动补兼容、预处理器增强语法、JIT 模式按需生成,减少手动操作;
    4. 适配框架生态:不同前端框架(Vue/React/Next.js)有专属 CSS 方案,贴合框架特性,降低适配成本。

最后提醒大家:技术是为业务服务的。不必盲目追求“最新”,而是根据项目规模、团队技术栈、开发效率需求选择合适的方案 —— 能用简单技术解决的问题,就不要引入复杂工具。

希望这篇文章能帮你理清现代 CSS 技术体系,让你的样式编写更高效、更规范!

相关文章:

vuejs3.0 从入门到精通【左扬精讲】—— 从原生到原子化:一文梳理现代 CSS 技术体系(2025 版)

vuejs3.0 从入门到精通【左扬精讲】—— 从原生到原子化:一文梳理现代 CSS 技术体系(2025 版)作为前端开发的核心技术之一,CSS(层叠样式表)早已不是 “写几行样式” 那么简单。随着项目规模扩大和工程化需求升级,CSS 技术栈也衍生出众多分支 —— 从解决复用性的预处理器…...

java中JSON字符串处理的踩坑

在处理JSON字符串的时候,读取的数据原封不动每一行是,前后有两个引号"{\"cuidC54E92418CA1CD099A5AFC4D2F322015|VECB5VMT4\": {\"REFINED_APPLIST_TIMESTAMP\": 1756716480, \"DEVICE_INFO\": {\"SOURCE\": 131072, \"br…...

11111

1111111111...

阿里云微服务引擎 MSE 及 API 网关 2025 年 8 月产品动态

...

TIA Portal中S7-1500F CPU与ET200SP安全模块的配置例程(转载)

ET200SP 分布式 IO 系统除 ET200SP 标准模块外,还包含故障安全模块。具有 PROFINET接口的安全 CPU 与配有故障安全模块的 ET200SP IO设备可以实现安全功能。配置过程与标准系统中一样,通过在硬件组态中进行网络连接,并在在线状态下分配从站的设备名称。ET200SP上的故障安全模…...

获取第一个运行的Word应用程序实例

获取第一个运行的COM应用程序实例1 using System;2 using System.Collections.Generic;3 using System.Runtime.InteropServices;4 using System.Runtime.InteropServices.ComTypes;5 6 /// <summary>7 /// 提供查询运行中COM对象的改进方案8 /// </summary>9 publ…...

S7-1500 TRACE功能组态 (转载)

1、TRACE配置介绍1.1、新建TRACE配置 在TIA博途软件中,双击项目树相应PLC站点下的“Traces”,展开后来实现TRACE的各项功能,TRACE在线视图如图2所示。图2. 创建TRACE ①点击“添加新Trace”,用于新建Trace配置;② 为目前离线文件和CPU已装载有相同名称的TRACE; 为目前仅…...

如何在Proxmox VE中使用fdisk命令行扩展LVM存储池 - 若

前言 在Proxmox VE(PVE)的使用过程中,为虚拟机和容器添加额外的存储空间是一项常见任务。当你为服务器新增了一块硬盘后,Web管理界面有时可能无法提供所有所需的图形化操作选项。本篇教程将介绍如何完全通过命令行,使用经典的 fdisk 和 lvm 工具,安全地将一块新硬盘添加到…...

垃圾AV覆盖defender

免责声明 本文章涉及的内容仅用于安全研究、学习和技术讨论,不针对任何杀毒软件进行虚假陈述或恶意操作。文中所提及的软件及操作均不旨在贬低、攻击或损害其品牌、名誉及正常功能。请读者仅在合法、受控的环境下进行实验和测试,作者对因使用本文内容而产生的任何后果不承担责…...

SAP-PO:怎么控制传输的内容在单数据情况下是数组格式还是单对象格式

像下图,没设置前是对象格式 设置后是数组格式 可以在CC的Custom XML/JSON Comversion Rules下进行设置 sender通道是在general第一个页签 receiver是在dataformat页签 如果字段为空则在结构中就不会显示该字段,需要在函数中可以配置一下...

开源新基建:数字中国创新发展的底层密码与生态实践

开源新基建:数字中国创新发展的底层密码与生态实践 在全球数字化转型加速的背景下,开源技术已从开发者工具演变为国家数字战略的核心基础设施。中国正通过构建自主可控的开源生态体系,打造数字经济发展的安全基座,这一战略布局正在重塑产业创新范式并创造显著的商业价值。最…...

员工离职停用Salesforce帐号?这11个“坑”千万别踩!

在Salesforce里,用户离职很常见,看似只是一个“停用账号”的小操作。但如果涉及到管理员(Admin)账号,情况就完全不同。管理员往往绑定了大量的报表、自动化流程和系统配置,一旦处理不当,轻则报表失效、流程中断,重则影响关键业务。 本文结合实践,总结了停用Salesforce…...

Linux的运行模式

在 Linux 系统中,getenforce 是一个用于查询 SELinux(Security-Enhanced Linux)当前运行模式的命令。 SELinux 是一种强制访问控制(MAC)安全机制,它有三种主要运行模式: Enforcing(强制模式):SELinux 会强制执行所有安全策略,违反策略的操作会被阻止并记录日志 Perm…...

Spring Boot + MybatisX,效率翻倍!

1.什么是MybatisX? 2.使用MybatisX的好处 3.如何使用MybatisX?1.什么是MybatisX? MybatisX 是一款基于 IDEA 的快速开发插件,方便在使用mybatis以及mybatis-plus开始时简化繁琐的重复操作,提高开发速率。 2.使用MybatisX的好处节省大量持久层代码开发时间 强大的功能为业务…...

条码控件Aspose.BarCode教程:使用 Java 自动生成 DotCode 条形码

DotCode 是一种二维条码符号,广泛应用于制造业和制药业等行业。这种条码简化了创建机器可读代码的流程,从而提升了物流效率。借助Aspose.BarCode for Java,我们可以构建一个工具,以 Java 编程方式自动生成 DotCode 条码。此 Java SDK 允许您自定义属性并将条码导出为图像格…...

AI 玩转网页自动化无压力:基于函数计算 FC 构建 Browser Tool Sandbox

从 Web 1.0 到 Web2.0,再到单页应用(SPA)和 React/Vue 等前端框架时代,再到当下的 AI Agent 时代。每个阶段都有当时的浏览器自动化的王者。作者:计缘 浏览器自动化的前世今生 从 Web 1.0 到 Web2.0,再到单页应用(SPA)和 React/Vue 等前端框架时代,再到当下的 AI Agen…...

AI时代的全栈框架:独立开发者的机会与挑战

独立开发者终于能全干了?AI帮忙还愁生态?一体性是王道,但选什么框架还得自己纠结。AI写代码真靠谱?前言 本文本来只是 DjangoStarter v3.2.1 新版本发布博客里的一段思考,不过越写越长,干脆拆分成一篇独立的文章得了。😄全栈这个词已经被喊烂了,但在 AI 时代,它的含义…...

创建逻辑卷

查看创建pv创建vg创建lv...

Server 13 ,CentOS 上使用 Nginx 部署多个前端项目完整指南( 协助多端口与脚本自动化 )

Server 13 ,CentOS 上使用 Nginx 部署多个前端项目完整指南( 协助多端口与脚本自动化 )pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…...

洛谷P2490 [SDOI2011] 黑白棋

传送门 首先容易想到,白色棋子与其右边的黑色棋子越靠越近,最后挨在一起,与其他棋子无关。 朴素地想到 \(NimK\) 的建模,一共有 \(\dfrac{k}{2}\) 堆石子,每次取 \(d\) 堆。 注意到必胜局面比较难求,适合正难则反,用总方案数 \(\dbinom{n}{k}\) 减去必败局势。 难点在于…...

WGCLOUD的告警日志在哪儿存贮的?

WGCLOUD所有发送的告警消息都存贮在【系统日志】模块里 WGCLOUD系统日志功能模块,用于存贮系统操作的各种记录,也包括各种系统运行的日志信息,告警通知信息,告警恢复信息 所有系统运行产生的错误日志,操作日志,告警日志都会记录在系统日志中 系统日志记录只能查看,不能删…...

传统软件部署的痛点

这是对之前《Docker 容器化》文章的一个补充 在 Docker 等容器技术普及前,开发、测试、运维团队常被环境不一致、部署复杂、资源浪费、扩容低效为典型的问题困扰,这些问题不仅可能导致项目的交付周期的延后,还会引发跨团队协作矛盾,甚至导致线上故障,我们逐一来看每个问题…...

HarmonyOS 5分布式数据管理初探:实现跨设备数据同步

本文将引导您了解HarmonyOS 5的分布式数据管理能力,并通过一个简单的示例演示如何实现跨设备数据同步。1. 分布式数据管理简介 HarmonyOS的分布式数据管理能力允许应用程序在多个设备之间无缝地同步和共享数据。它抽象了底层设备差异,让开发者可以像操作本地数据一样处理跨设…...

qoj965 Trade

题意 有 \(n\) 件商品,第 \(i\) 件商品有基准价格 \(c_i\) 和抬价价格 \(p_i\),\(p_i\) 互不相同,每件商品只能买一件,你有 \(S\) 元钱。 若你买了 \(k\) 件商品,则第 \(i\) 件商品的价格为 \(c_i+k\times p_i\)。问你最多能买多少件商品。 \(1\le c_i\le 10^9,0\le p_i,S…...

复盘我的第一个 大模型Agent:从核心循环到模块化架构的演进之路

本文将以我编写的一个 Go Agent Demo 为例,穿透各类框架的表层封装,回归其工程本质。我将首先分析其核心的 ReAct 循环,并展示这个看似简单的循环是如何通过模块化设计,演进为一个结构化、可扩展的软件系统。最近,我投入了一些时间学习和研究大语言模型(LLM)驱动的 Agen…...

Linux内核不使用bear如何快速生成compile_commands.json使用vscode阅读源码

野火鲁班猫SDK 进入内核目录 cd /opt/LubanCat_SDK/kernel-5.10 编译内核 ../build.sh kernel 生成compile_commands.json /opt/LubanCat_SDK/kernel-5.10/scripts/clang-tools/gen_compile_commands.py打开vscode code . 安装clangd插件 打开一个c文件 开始生成clangd数据库...

Docker 容器化

引言 在解释docker是什么之前,我们首先应该先了解的是容器化的概念。 什么是容器?就是一个沙箱,在这个沙箱中涵盖了特定应用运行的一切依赖的内容。但他不是一个操作系统,且和底层的操作系统是隔离的。 什么是容器化?容器化就是将软件和应用所需要的所有依赖打包到一个独立…...

phpmyadmin漏洞利用

1、信息搜集 1.1、版本号 访问/README /doc/html/index.html获取版本信息1.2、绝对路径 (1) phpinfo() 页面:最理想的情况,直接显示web路径 (2) web报错信息:可以通过各种fuzz尝试让目标报错,也有可能爆出绝对路径 (3) 一些集成的web框架:如果目标站点是利用phpstudy、LAM…...

CF19E Fairy

题意:给定一个无向图,$n,m \le 10^4$,需对每个点黑白染色,使每条边两端点颜色不同,求对每一条边,删除该边后是否存在合法染色方案。思路:合法染色方案即删除边后图为二分图,不存在奇环。先构造 dfs 生成树,将一条非树边和其覆盖树边形成的环称为基本环,包含多个非树边…...

Wireshark 学习笔记(二)

Wireshark 学习笔记 (二) 数据包操作 统计|摘要 统计 此菜单提供多种统计选项,可供调查,帮助用户了解流量范围、可用协议、端点和会话等宏观情况,以及一些特定协议的详细信息,如 DHCP、DNS 和 HTTP/2。 解析地址 此选项通过提供解析地址及其主机名的列表,帮助分析师识别捕…...

鸿蒙应用开发从入门到实战(三):第一个鸿蒙应用

持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中。本文使用DevEco Studio创建应用,并使用预览、模拟器、真机三种方式进行调试。​ 大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更…...

Litctf2025 Write-up

逼逼叨 很难受啊,出去跑项目封闭管理,结果没打上,只能赛后复现了。 上班是真滴累 Web [LitCTF 2025]多重宇宙日记进来先随便注册个账户,说实话看到这样的题目第一眼怀疑二次注入、直接不想做登陆后发现可以设置主题语言之类的,随便试试无果查看页面源码摘出JS中的关键代码…...

DFS算法(递归)

DFS算法(递归) DFS(Depth-First Search,深度优先搜索)是一种用于遍历或搜索树、图等数据结构的算法。其核心思想是:沿着一条路径尽可能深入地探索,直到无法继续前进(遇到已访问节点或无未访问邻接节点),再回溯到上一个节点,选择另一条未探索的路径继续深入。所以可以…...

博客园出海记

在开篇中我们宣布了博客园出海计划的启航,出海航船选择了阿里云。第一件准备工作是在航船上组装集装箱 —— 搭建 Kubernetes 集群。出海根据地选在了阿里云新加坡机房,Kubernetes 集群用阿里云 ECS 自己搭建,没有使用阿里云容器服务 ACK。首先购买一台 ECS 用于部署 Contro…...

vue3 - pinia状态管理库

概念 Pinia 是 Vue 官方推荐的状态管理库,是 Vuex 的继任者(Vuex 作者同一人开发),专门为 Vue 3 设计,完全支持 Composition API 和 TypeScript。它简化了状态管理的流程,提供了更简洁的 API 和更好的开发体验。 核心特点简洁的 API 去掉了 Vuex 中的 mutation(突变),…...

做会议海报就是在淘汰老实人

还好有模板直接用!不仅节省更多时间,做出来的ppt,或是学术海报既清晰又美观,导师看了都说好! ppt和学术海报都是可直接编辑的哦!每张文件图片均获取网络,仅供学习与研究交流使用。支持原创! 感兴趣可直接无套路领取 【450+学术会议海报poster模板】+【600+学术汇报PPT模…...

ubuntu24.04安装mysql5.7.42

环境Os:ubuntu 24.04 desktop桌面版mysql:5.7.42 说明: a.ubuntu24下安装mysql 5.7 使用的依赖库 需要创建软连接指向新的依赖库.查看操作系统信息root@hxl-VirtualBox:/# uname -a Linux hxl-VirtualBox 6.14.0-29-generic #29~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Aug 14…...

易基因:Cell封面:中国科学家杨学勇/黄三文m6A-seq等揭示同义突变通过表观转录调控机制决定生物性状|顶刊突破

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,中国农业科学院蔬菜花卉研究所杨学勇研究员、中国农业科学院深圳农业基因组所黄三文研究员和英国约翰英纳斯中心丁一倞研究员团队合作,以封面文章形式在顶刊《Cell》(细胞)上发表题为“Recessive epi…...

一文看懂Deepspeed:用ZeRO训练大模型原理解析及参数含义解释

实际训练中Deepspeed参数配置ZeRO各stage含义是什么,offload以及gradient checkpoint是如何起作用的,本篇基于ZeRO不同stage含义,以及实践时参数含义来阐述Deepspeed原理。 这几天在做大模型的微调,发现几乎所有都用到了deepspeed,这里给大家提供一个ChatGLM2在ptuning模式…...

AC-DC整流器双闭环控制MATLAB/Simulink仿真

AC-DC整流器双闭环控制系统的MATLAB/Simulink仿真程序,包含电压外环和电流内环控制。 这个仿真实现了一个三相PWM整流器的双闭环控制:电压外环:控制直流侧输出电压,提供电流内环的参考信号 电流内环:控制网侧电流,实现单位功率因数运行MATLAB:参数设置与仿真启动 % AC-D…...

新娘化妆 造型 美甲 护肤 资料合集

化妆的核心--眉妆 眉毛的结构认识眉毛主要由眉头眉峰眉尾眉头在鼻翼外侧到内眼角的垂直线上眉峰在眉头到眉尾的三分之二处, 是鼻翼外侧至人眼平视前方时外眼球的延长线上。眉腰眉头与眉峰中间称之为眉腰眉尾在鼻翼外侧到外眼角的 延长线上,或则嘴角到外眼角的延长线上。 标准…...

rabbitMQ-基础day1 - a

微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们成这种调用方式为同步调…...

实用指南:Nginx反向代理与负载均衡部署

实用指南:Nginx反向代理与负载均衡部署pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importa…...

C# Avalonia 13- MoreDrawing - BlurEffects

C# Avalonia 13- MoreDrawing - BlurEffectsBlurEffects.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xm…...

【IEEE出版】第三届算法、图像处理与机器视觉国际学术会议(AIPMV2025)

由江苏科技大学、江苏大学、中国图象图形学学会联合主办,江苏科技大学计算机学院、镇江市计算机学会承办,镇江市软件行业协会、AEIC学术交流中心协办的第三届算法、图像处理与机器视觉国际学术会议(AIPMV2025)将于2025年9月26日-28日在江苏镇江召开。【江苏科技大学、江苏大…...

C++ - 了解STL的数据容器

CSP考试用的STL内容也越来越多了,我们有必要详细了解一下。 常用容器array 静态数组(大小固定,) vector 矢量(动态数组,大小可变) string 字符串 stack 栈 queue 队列 set 集合 map 键值对array 静态数组 array是固定大小的序列容器,array中包含特定个数并且严格按照线…...

收费详情

套餐价格_真免费!导出采集结果无任何限制_后羿采集器 https://www.houyicaiji.com/?type=pricing个人免费版 ¥ 0永久免费,不要积分智能模式:智能识别列表和分页,一键采集 流程图模式:可视化操作,可以模拟人为操作 采集任务:100个任务 支持多任务同时运行,无数量限制,…...

bluetoothctl UUIDs

数据 bluetoothctl 中的抓取数据: [CHG] Device 66:55:44:33:22:11 UUIDs: 1beeffff-0000-1000-8000-00805f9b34fb [CHG] Device 66:55:44:33:22:11 UUIDs: 4af678c8-0000-1000-8000-00805f9b34fb [CHG] Device 66:55:44:33:22:11 UUIDs: 5a079046-0000-1000-8000-00805f9b34f…...

ANOLIS8安装配置ldap账号登录

sudo dnf install -y openldap-clients nss-pam-ldapd authconfig配置 nslcd​​ sudo vim /etc/nslcd.confuri ldap://your_ldap_server base dc=example,dc=com binddn cn=admin,dc=example,dc=com bindpw your_admin_password ssl no tls_cacertdir /etc/openldap/cacerts​…...

实用指南:小程序非主页面的数据动作关联主页面的数据刷新操作

实用指南:小程序非主页面的数据动作关联主页面的数据刷新操作pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New"…...