拥抱简洁:探索Stylus的简洁语法与CSS预处理器之美

news2024/11/13 18:36:35

在这里插入图片描述

文章目录

    • 1. 简洁的语法
    • 2. 强大的功能
    • 3. 嵌套规则
    • 4. 变量支持
    • 5. Mixin 混合
    • 6. 扩展支持
    • 7. 条件语句
    • 8. 内置函数
    • 9. 可扩展性
    • 10. 轻量高效
    • 附录:前后端实战项目(简历必备) 推荐:★★★★★

Stylus 是一种 CSS 预处理器,具有以下十大特点:

1. 简洁的语法

Stylus 使用类似于 Python 的缩进风格的语法,可以省略大括号和分号,使代码更加简洁易读。

当涉及到Stylus的简洁语法时,以下是一个实际的代码案例来展示其特点:

// 定义变量
primary-color = #ff0000
secondary-color = #00ff00

// 嵌套规则和属性定义
body
  font-size 14px
  color primary-color
  
  // 子选择器
  p
    margin 10px
    padding 5px

    // 伪类选择器
    &:hover
      background-color secondary-color

// Mixin 混合
rounded-border()
  border-radius 5px

.button
  background-color primary-color
  color #fff
  padding 10px
  rounded-border()

// 使用条件语句
if browser-prefixes
  -webkit-border-radius 5px
  -moz-border-radius 5px
  -ms-border-radius 5px
  -o-border-radius 5px
  border-radius 5px

在这个例子中,我们可以看到 Stylus 的简洁语法。它省略了大括号和分号,并且使用缩进进行嵌套规则的表示。

在代码中,我们首先定义了两个变量 primary-colorsecondary-color,分别表示主要颜色和次要颜色。

然后,使用嵌套规则来定义整个页面的样式。body 元素具有 14px 的字体大小,颜色为 primary-color。其中的 p 元素有一些 margin、padding,而且在悬停时会改变背景颜色。

接下来,我们定义了一个 Mixin(混合),名为 rounded-border,用于设置圆角边框样式。然后,我们将其应用到 .button 类选择器上,并设置一些其他样式属性。

最后,我们使用条件语句来判断是否需要添加浏览器前缀,以便在不同浏览器中都能正常显示圆角边框。

通过这个简洁的示例,可以清晰地看到 Stylus 的语法简洁性,以及如何使用变量、嵌套规则、Mixin 和条件语句来提高开发效率和代码的可读性。

2. 强大的功能

Stylus 提供了丰富的功能,如变量、嵌套规则、混合(Mixin)、继承、运算符等,可以提高代码的可维护性和重用性。

当涉及到 Stylus 的功能时,以下是一个实际的代码案例来展示如何使用变量、嵌套规则、Mixin、继承和运算符来提高代码的可维护性和重用性:

// 定义变量
primary-color = #ff0000
secondary-color = #00ff00

// 嵌套规则和属性定义
body
  font-size 14px
  color primary-color

  // 子选择器
  p
    margin 10px
    padding 5px

    // 伪类选择器
    &:hover
      background-color secondary-color

// Mixin 混合
rounded-border()
  border-radius 5px

button
  .primary
    background-color primary-color
    color #fff
    padding 10px
    rounded-border()

  .secondary
    background-color secondary-color
    color #000
    padding 8px
    rounded-border()

// 继承
.sidebar
  width 200px
  height 100%
  background-color #f2f2f2
  padding 10px

.content
  height 100%
  padding 20px
  font-family Arial
  background-color #fff

// 运算符
container-width = 800px

.container
  width container-width
  margin 0 auto

在这个例子中,我们使用了多个 Stylus 的功能来提高代码的可维护性和重用性。

首先,我们定义了两个变量 primary-colorsecondary-color 来表示主要颜色和次要颜色。

然后,使用嵌套规则和选择器来定义页面的样式。body 元素具有 14px 的字体大小,并且文字颜色为 primary-color。p 元素有一些 margin 和 padding,悬停时会改变背景颜色为 secondary-color

接下来,我们定义了一个 Mixin(混合) named rounded-border,用于设置圆角边框样式。然后,我们在 .button 类选择器中应用了这个 Mixin,并设置了不同的背景颜色、文字颜色、padding 等属性,分别表示主要样式和次要样式。

然后,我们使用继承来创建 .sidebar.content 的样式。.sidebar 继承了宽度、高度、背景颜色和内边距等属性,.content 继承了高度、内边距、字体和背景颜色等属性。这样可以避免重复编写相似的样式。

最后,我们使用了运算符,将容器的宽度通过变量 container-width 进行计算,并将其应用到 .container 类选择器上。

通过这个示例,展示了如何使用变量、嵌套规则、Mixin、继承和运算符等 Stylus 的功能来提高代码的可维护性和重用性,同时保持代码的简洁性和可读性。

3. 嵌套规则

Stylus 支持嵌套规则,可以避免重复书写选择器,并且可以更好地表达HTML标签之间的层次关系。
当涉及到 Stylus 的嵌套规则时,以下是一个代码案例来展示如何使用嵌套规则来避免重复书写选择器,并更好地表达 HTML 标签之间的层次关系:

// 默认样式
body
  font-family Arial, sans-serif
  font-size 16px

.container
  max-width 1200px
  margin 0 auto
  padding 20px

.header
  background-color #f2f2f2
  padding 10px

.title
  font-size 24px
  color #333
  margin-bottom 10px

.nav
  ul
    list-style none
    padding 0
    margin 0

  li
    display inline-block
    margin-right 10px

    a
      text-decoration none
      color #666

.content
  padding 10px
  background-color #fff

.footer
  background-color #f2f2f2
  padding 10px
  text-align center

在这个例子中,我们使用了嵌套规则来避免重复书写选择器,并更好地表达 HTML 标签之间的层次关系。

首先,我们设置了默认样式,为整个页面的字体和字体大小。

然后,我们定义了一个 .container 类选择器,它包含了整个页面的最大宽度、居中对齐的边距等属性。

.header 类选择器内部,我们设置了背景颜色和内边距。

.title 类选择器内部,我们设置了标题的字体大小、颜色和底部边距。

.nav 类选择器内部,我们通过嵌套规则来定义了无序列表的样式,包括列表项的样式、链接的文本装饰和颜色。

.content 类选择器内部,我们设置了内容区域的内边距和背景颜色。

.footer 类选择器内部,我们设置了页脚的背景颜色、内边距和居中对齐的文本。

通过以上示例,我们可以看到 Stylus 的嵌套规则如何帮助我们避免重复书写选择器,并更好地表达 HTML 标签之间的层次关系,从而提高代码的可读性和维护性。

4. 变量支持

Stylus 允许定义和使用变量,可以方便地在样式表中管理颜色、尺寸等可复用的值。

当涉及到 Stylus 的变量时,以下是一个代码案例来展示如何定义和使用变量来方便地管理颜色、尺寸等可复用的值:

// 定义变量
primary-color = #ff0000
secondary-color = #00ff00
font-size-large = 24px
container-width = 1200px

// 使用变量
body
  font-family Arial, sans-serif
  font-size font-size-large

.container
  max-width container-width
  margin 0 auto

.header
  background-color primary-color
  padding 10px

.title
  font-size font-size-large
  color #333
  margin-bottom 10px

.nav
  ul
    list-style none
    padding 0
    margin 0

  li
    display inline-block
    margin-right 10px

    a
      text-decoration none
      color secondary-color

.content
  padding 10px
  background-color #fff

.footer
  background-color primary-color
  padding 10px
  text-align center

在这个例子中,我们使用了变量来方便地管理颜色、尺寸等可复用的值。

首先,我们定义了几个变量,如 primary-colorsecondary-color 分别表示主要颜色和次要颜色。font-size-large 表示大号字体大小,container-width 表示容器的最大宽度。

然后,在样式表中使用这些变量。我们将字体设置为 Arial,字体大小设置为 font-size-large

.container 类选择器中,我们将最大宽度设置为 container-width,并将边距设置为自动。

.header 类选择器中,我们将背景颜色设置为 primary-color,并设置内边距。

.title 类选择器中,我们将字体大小设置为 font-size-large,文字颜色设置为 #333,底部设置为 10px 的外边距。

.nav 类选择器内部,我们将无序列表的样式设置为无序列表项的样式,并将链接的文字颜色设置为 secondary-color

.content 类选择器内部,我们设置了内容区域的内边距和背景颜色。

.footer 类选择器内部,我们将背景颜色设置为 primary-color,设置内边距,并居中对齐文本。

通过使用变量,我们可以将可复用的值定义为变量,并在样式表中使用这些变量,从而方便地管理颜色、尺寸等属性值。这样可以提高代码的可维护性和重用性。

5. Mixin 混合

Stylus 的 Mixin 是一种可以重复使用的代码块,可以在不同的选择器中引用,并且支持参数传递,提供了更好的代码复用性。

当涉及到 Stylus 的 Mixin 时,以下是一个代码案例来展示如何定义和使用 Mixin 来重复使用代码块,并支持参数传递,提供更好的代码复用性:

// 定义 Mixin
mixin centerElement()
  display flex
  justify-content center
  align-items center

// 使用 Mixin
.container
  width 100%
  height 300px
  background-color #f2f2f2
  mixin centerElement()

.box
  width 200px
  height 200px
  background-color #ccc
  mixin centerElement()

.text
  font-size 18px
  color #333

在这个例子中,我们定义了一个名为 centerElement 的 Mixin,它是一个可以重复使用的代码块,并且它没有参数传递。

然后,在样式表中使用该 Mixin。在 .container 类选择器中,我们先设置宽度、高度和背景颜色,然后通过 mixin centerElement() 引用了 centerElement Mixin,在该选择器中使用了 display: flex 和居中对齐的属性。

.box 类选择器内部,我们设置了盒子的宽度、高度和背景颜色,然后再次通过 mixin centerElement() 引用了 centerElement Mixin,以实现居中对齐。

.text 类选择器内部,我们设置了文字的字体大小和颜色,该选择器没有使用 Mixin。

通过使用 Mixin,我们可以将一段代码块定义为 Mixin,并在不同的选择器中引用该 Mixin,从而实现代码的重复使用。如果需要,我们还可以通过参数传递来定制代码块的行为。这样可以提高代码的复用性和维护性。

6. 扩展支持

Stylus 提供了 extend 语法,可以将一个选择器继承到另一个选择器上,避免了冗余的代码。

当涉及到 Stylus 的 Extend 语法时,以下是一个代码案例来展示如何使用 Extend 将一个选择器继承到另一个选择器上,避免冗余的代码:

// 定义选择器
.base-button
  padding 10px
  border 1px solid #ccc
  border-radius 5px
  text-align center
  cursor pointer

.primary-button
  background-color #ff0000
  color #fff
  extend .base-button

.secondary-button
  background-color #00ff00
  color #fff
  extend .base-button

// 使用选择器
.button-container
  display flex

.submit-button
  extend .primary-button
  margin-right 10px

.cancel-button
  extend .secondary-button

在这个例子中,我们定义了两个选择器 .base-button.primary-button.secondary-button

.base-button 定义了一些基本的按钮样式,如内边距、边框、圆角和居中对齐。这样的定义可以避免在每个按钮选择器中重复写这些公共样式。

.primary-button.secondary-button 分别定义了主要按钮和次要按钮的样式。我们使用 extend .base-button.base-button 选择器继承到这两个选择器上,这意味着它们会继承 .base-button 的所有样式。

在使用选择器时,我们创建了一个 .button-container 类选择器来包含按钮。然后,我们分别创建了一个 .submit-button 类选择器和一个 .cancel-button 类选择器,使用 extend.primary-button.secondary-button 继承到它们上面。这样,它们会继承 .base-button 和相应的特定按钮样式,避免了冗余的代码。

通过使用 Extend 语法,我们可以将一个选择器的样式继承到另一个选择器上,从而避免在多个选择器中重复写相同的样式,提高了代码的重用性和可维护性。

7. 条件语句

Stylus 支持条件语句,可以根据条件来动态生成样式,增强了样式表的灵活性。

当涉及到 Stylus 的条件语句时,以下是一个代码案例来展示如何使用条件语句来动态生成样式,增强样式表的灵活性:

// 定义变量
$theme = 'dark'

// 使用条件语句生成样式
.container
  width 100%
  height 300px
  background-color if($theme == 'dark', #333, #f2f2f2)
  color if($theme == 'dark', #fff, #333)

.button
  padding 10px
  border-radius if($theme == 'dark', 5px, 10px)
  background-color if($theme == 'dark', #ff0000, #00ff00)
  color if($theme == 'dark', #fff, #000)

.text
  font-size if($theme == 'dark', 16px, 14px)
  color if($theme == 'dark', #ccc, #666)

在这个例子中,我们定义了一个名为 $theme 的变量,用于指定主题样式(可以是 ‘dark’ 或 ‘light’)。

然后,我们使用条件语句来根据 $theme 的值动态生成样式。在 .container 类选择器中,我们设置了宽度、高度和背景颜色,根据 $theme 的值选择不同的背景颜色和文字颜色。

.button 类选择器内部,我们设置了按钮的内边距、边框半径、背景颜色和文字颜色,同样根据 $theme 的值选择不同的样式。

.text 类选择器内部,我们设置了文字的字体大小和颜色,同样根据 $theme 的值选择不同的样式。

通过使用条件语句,我们可以根据不同的条件动态生成样式,使样式表更加灵活。这样,我们可以轻松地切换不同的主题样式或根据其他条件动态调整样式,从而实现更好的样式定制和灵活性。

8. 内置函数

Stylus 内置了一些常用函数,如颜色操作、字符串处理等,可以在样式表中方便地调用这些函数进行样式计算。

当涉及到 Stylus 的内置函数时,以下是一个代码案例来展示如何在样式表中使用内置函数进行样式计算:

// 使用颜色操作函数
$primary-color = #ff0000

.container
  background-color $primary-color
  color darken($primary-color, 20%)

.button
  background-color lighten($primary-color, 10%)
  border-color rgba($primary-color, 0.5)
  box-shadow 0 0 10px mix($primary-color, #000, 50%)

// 使用字符串处理函数
$text = 'Hello, World!'

.heading
  font-size 20px
  text-transform uppercase
  content "'" + $text + "'"
  padding-left str-length($text) * 10px

在这个例子中,我们首先定义了一个名为 $primary-color 的变量,并将其设置为红色 #ff0000

然后,我们使用颜色操作函数来计算样式。在 .container 类选择器中,我们将背景颜色设置为 $primary-color,并将文字颜色设置为变暗了 20% 的颜色。

.button 类选择器中,我们将背景颜色设置为比 $primary-color 变亮了 10% 的颜色,将边框颜色设置为带有 50% 不透明度的 $primary-color。我们还使用 mix() 函数创建了一个混合的阴影效果,将 $primary-color 和黑色 #000 混合,透明度为 50%,然后应用了一个带有10像素模糊的阴影。

在样式表中,我们还使用字符串处理函数来操作文本。在 .heading 类选择器中,我们设置了字体大小为 20px,将文本转换为大写,并使用 str-length() 函数来计算文本长度,并在左边添加相应数量的 padding(每个字符对应 10 像素的 padding)。

通过使用内置函数,我们可以方便地进行颜色操作、字符串处理等样式计算,使样式表更加灵活和动态。这样,我们可以根据需要对颜色、文本等进行运算和处理,实现更精细的样式定制。

9. 可扩展性

Stylus 支持插件机制,可以通过插件扩展其功能,如自动添加浏览器前缀、使用 CSS3 新特性等。
当涉及到 Stylus 的插件机制时,以下是一个代码案例来展示如何使用插件扩展 Stylus 的功能:

首先,在项目的根目录下创建一个 package.json 文件,并添加对 Stylus 的依赖:

{
  "dependencies": {
    "stylus": "^0.54.8",
    "autoprefixer-stylus": "^1.0.0"
  }
}

然后,在根目录下运行 npm install 命令来安装依赖。

接下来,创建一个样式文件(例如 styles.styl),并写入以下代码:

@import 'autoprefixer-stylus'

.button
  display flex
  justify-content center
  align-items center

.prefixer()

在这个例子中,我们使用了 autoprefixer-stylus 插件来自动添加浏览器前缀。首先,我们使用 @import 导入了 autoprefixer-stylus 插件。然后,在 .button 类选择器内部,我们设置了一些基本的 flex 布局样式。

最后,我们调用了 prefixer() 函数,该函数会自动为样式中的属性添加浏览器前缀。根据插件的要求,我们在样式文件中调用该函数来触发插件的处理。

在根目录下运行 npx stylus styles.styl 命令来编译样式文件。编译完成后,将生成一个 styles.css 文件,其中包含经过插件处理的样式。

通过使用插件,我们可以方便地扩展 Stylus 的功能,如自动添加浏览器前缀、使用 CSS3 新特性等。这样,我们可以更高效地编写样式,并确保生成的样式在各种浏览器中具有一致的表现。请确保在使用插件时遵循相关的文档和要求。

10. 轻量高效

Stylus 的编译器非常轻量高效,生成的 CSS 代码也相对精简,减少了文件大小和加载时间。

当涉及到 Stylus 的编译器时,以下是一个代码案例来展示如何使用 Stylus 编译器将 Stylus 代码转换为 CSS 代码:

首先,安装全局的 Stylus 编译器:

npm install -g stylus

然后,创建一个名为 styles.styl 的文件,并写入以下内容:

$primary-color = #ff0000

.container
  background-color $primary-color
  color rgba($primary-color, 0.8)

.button
  background-color lighten($primary-color, 10%)
  border-color darken($primary-color, 20%)

在这个例子中,我们定义了一个名为 $primary-color 的变量,并将其设置为红色 #ff0000

然后,我们使用该变量 $primary-color 设置了 .container 类选择器的背景颜色,并使用 rgba() 函数将其颜色值设置为透明度为 0.8 的颜色。

接下来,在 .button 类选择器中,我们使用内置的颜色操作函数 lighten()darken() 来分别调整 $primary-color 的亮度。我们将背景颜色设置为比 $primary-color 变亮了 10% 的颜色,并将边框颜色设置为比 $primary-color 变暗了 20% 的颜色。

最后,在终端中运行以下命令来编译 Stylus 代码并生成 CSS 文件:

stylus styles.styl

编译完成后,将生成一个名为 styles.css 的文件,其中包含转换后的 CSS 代码。

通过使用 Stylus 编译器,我们可以轻松地将 Stylus 代码转换为精简的 CSS 代码。这样可以减少 CSS 文件的大小,提高网页加载的性能和效率。同时,Stylus 提供了丰富的功能和语法,使得样式表的编写更加简洁、灵活和可维护。

这些特点使得 Stylus 成为一个受欢迎的 CSS 预处理器,它能够显著提高开发效率,并且让样式表更加模块化、可维护和可扩展。

附录:前后端实战项目(简历必备) 推荐:★★★★★

Vue.js 和 Egg.js 开发企业级健康管理项目
带你从入门到实战全面掌握 uni-app

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

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

相关文章

OpenCV 入门教程:Laplacian算子和Canny边缘检测

OpenCV 入门教程: Laplacian 算子和 Canny 边缘检测 导语一、Laplacian 算子二、Canny 边缘检测三、示例应用3.1 图像边缘检测3.2 边缘增强 总结 导语 边缘检测在图像处理和计算机视觉领域中起着重要的作用。 Laplacian 算子和 Canny 边缘检测是两种常用的边缘检测…

pytorch-Tensor

神经网络的数据存储中都使用张量(Tensor),那张量又是什么呢? py 张量这一概念的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它是数字的容器。你可能对矩阵很熟悉,它是二…

商城小程序页面展示

——首页登录(wx.login(),getPhoneNumber) 进入首页时,加载商品列表数据展示在页面。从缓存中获取token信息,判断用户登录状态,如果用户没有登录,调用微信小程序的login方法,进行登…

Spring Boot原理分析(二):项目启动(下)——自动装配

文章目录 一、Spring手动装配1.使用XML配置文件2.使用Java注解3.使用Java类 二、Spring Boot自动装配1.AutoConfigurationPackage2.Import(AutoConfigurationImportSelector.class) 一、Spring手动装配 Spring Framework提供了多种手动装配的方式,其中比较常见的有…

硬盘被程序使用

diskutil list diskutil umount /dev/disk2s1退出该进程 硬盘即可成功退出

springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库

一、重点 代码讲解:6-点赞功能-定时持久化到数据库-pipelinelua-优化pipeline_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代码: blogLike_schedule/like06 xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://g…

ubuntu下,verdi语法错误Syntax error: “(“ unexpected

【问题】/home/EDA_TOOLS/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdi: 56: /home/EDA_TOOLS/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdi: Syntax error: "(" unexpected 【解析】 代码对于标准bash而言没有错,因为Ubuntu/Debian为了加…

网络应用基础交换机的基础操作(NETBASE第六课)

网络应用基础交换机的基础操作(NETBASE第六课) 1 回顾代码实操 主题背景的转换 字体设置 背景的设置 第一点 在操作ENSP个人建议要关闭防火墙 第二点 在操作ENSP软件是观察下面的软件是否全部关闭了 第三点 打开软件 ENSP软件注册信息 操作如下 注册前…

Oracle之Scott用户

Oracle增删改查,事务与序列 前言 1、解锁scott用户 2、雇员表(emp) 3、部门表(dept) 4、工资等级表(salgrade)了解 5、奖金表(bonus)了解 1、解锁scott用户 --解锁scot…

对卷积和全连接之间关系的学习(1*1卷积与全连接层可以互换吗?)

1.对于卷积和全连接 首先我们看一张图,它是一张关于卷积的操作: 然后在看关于全连接的操作: 从上面两张图中可以看出卷积的过程和全连接的过程,我们利用粉色的卷积核在image上进行卷积,进行内积计算得到输出值3&#…

调用GPU进行深度学习模型训练问题检查总结

1、电脑是否具有nvidia的GPU显卡。 2、安装的cuda版本是否超过显卡支持的最高版本。 在nvidia设置->帮助->系统信息->组件,可查看。 3、安装的pytorch是否为gpu版,即使在官网中复制的gpu版安装命令,安装得到的也有可能为cpu版。 建…

【监控系统】监控系统简介以及主流监控框架对比

互联网应用中离不开监控系统,那么为什么会有监控系统呢? 互联网公司产品通常是通过软件、网站、App或其他数字化方式提供服务的,这类产品在使用过程中可能会面临一系列风险和挑战。 比如网络故障或稳定性问题,由于网络故障、硬件…

外设资源共享须知

外设资源共享 具有相同ID的只能使用一个,无法同时使用。 例如当使能了SPIM0, 就不能用TWIM0,因为基地址相同,不能同时使用。此时建议使用TWIM1. 在sdk_config.h 中配置时需留意。

tecplot360 只显示指定phase的设定体积分数的区域

tecplot360 只显示指定phase的设定体积分数的区域 到数入据抽取切面设定显示体积分数范围 参考1: Tecplot中如何提取水线面(自由表面)并绘图 参考2: 两相流计算中,如何用Tecplot提取水相断面平均物理量? …

创建一个django项目详细说明

1.首先安装django pip install django 2.创建django项目 django-admin startproject myproject 输入命令后自动生成相关文件 manage.py文件:这是管理Django项目的重要命令行工具,它主要用于启动项目、创建应用和完成数据库的迁移等。settings.py文件&…

mongodb集群工作原理学习

mongodb集群 MongoDB集群有好几种方式:,主从模式,副本集模式和分片的模式 其中主从模式基本不再使用,大多是后面两种 副本集模式 副本集模式主要是用于实现服务的高可用性,类型Redis的哨兵模式. 它主要是的特点: 创建集群后会有主节点(primary)和从节点(secondary). 但从节点…

1765_Perl实现fileread功能

全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com) fileread是MATLAB中的一个函数,可以实现对一个文本文件的全文读取。读取后的内容返回给一个字符串量。在Python中也有类似的功能,不过MATLAB中的这个更能…

快速创建ES集群

win10 中docker 设置 快速创建集群 访问 官网 elasticsearch/docs/reference/setup/install/docker at main elastic/elasticsearch GitHub 负责上面2个文件,并修改,修改如下 .env文件 # Password for the elastic user (at least 6 characters) …

【私有云】网络虚拟化

前言 大家好,我是秋意零。 之前一直对 OpenStack 网络很陌生与神奇啊,不知道它是如何实现的,网络结构是怎样的。不过,今天介绍的是网络虚拟化,它在 OpenStack 中及云计算中是非常重要的概念,是理解 OpenS…

springboot整合websocket遇到的小问题

今天尝试了通过springboot整合websocket来初步学习使用websocket,然后发现启动的时候报错了,发这篇文章分享一下。 springboot整合websocket的步骤很简单: 第一步:创建一个springboot项目,在这里命名为websocket 在I…