Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

作者头像
用户1174620
发布于 2022-09-08 03:54:28
发布于 2022-09-08 03:54:28
80800
代码可运行
举报
运行总次数:0
代码可运行

上一篇介绍了表单控件,这一篇介绍一下表单里面的各种子控件的封装方式。

主要内容

  • 需求分析
  • 子控件的分类
  • 子控件属性的分类
  • 定义 interface。
  • 定义子控件的的 props。
  • 定义 json 文件。
  • 基于 UI库 进行二次封装,实现依赖 json 渲染。
  • 通过 slot 、 “字典”,实现自定义子控件。
  • 做个工具维护 json 文件。(下篇介绍)

需求分析

表单里面需要各种各样的子控件,像文本、数字、选择、日期等常见的需求,可以由内部提供组件解决,但是其他各种“奇奇怪怪”的需求怎么办呢?

如果还是由“内部”提供组件的话,那肯定是行不通的,因为以往的经验教训告诉我们,内部不断扩充子控件的结果,必然会导致内部代码越来越臃肿,以至后期无法维护,最终崩盘!

所以必须支持自定义扩展!感谢 Vue 和 UI库,提供基础的技术支持,让扩展变得非常容易。

我们先对表单子控件进行一下分类,然后为其设计一套接口,即定义一套规则,这样才好方便做长期维护。

子控件的分类

我们对常见的组件进行分析,得到了下面的分类:

上图涵盖了一些常用控件,但是很显然并不全面,比如没有金额类的控件,输入金额也是需要一些辅助的,比如金额的大小写的切换等,不过这些应该用扩展的方式实现。

属性的分类

组件的分类可以做的“规整”一些,但是组件的属性的分类,就比较有难度了,我们可以把组件需要的属性分为三个主要部分:代码里需要的、共用的、扩展的。

  • 低代码需要的属性 需要在代码里面使用的属性,比如字段名称、控件类型、默认值、防抖延迟等,集中在一起,通过 props 的方式传递。
  • 共用属性 各个组件(或者大部分组件)都需要的属性,比如浮动提示、size、是否显示清空按钮等,作为一级属性,通过 props 的方式传递。
  • 扩展属性 某个组件需要的属性,比如数字组件需要 max、min、step等。通过 $attrs 的方式传递。

其中扩展属性最为复杂,如果按照面向对象的方式来设计的话,结构就会非常复杂,会复杂到什么程度呢?可以参考当初 asp.net 里面 webform 的继承结构:

(controll是控件(组件)的意思,下面分出来WebControll和 repeater 两个子类,然后又,,,算了不说了,是不是看着就很累的样子?)

定义接口

现在是 JS 环境,我们没有必要生搬硬套,而是可以利用JS的灵活性来做简洁设计:

我们给表单子控件的 props 定义一个interface:(虽然暂时用不上)

  • IFormItemProps
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 表单控件的子控件的 props。
 */
export interface IFormItemProps {
  /**
   * 低代码需要的数据
   */
  formItemMeta: IFormItemMeta,
  /**
   * 子控件备选项,一级或者多级
   */
  optionList: Array<IOptionList | IOptionTree>,
  /**
   * 表单的 model,含义多个属性
   */
  model: any,
  /**
   * 是否显示清空的按钮
   */
  clearable: boolean,
  /**
   * 浮动提示信息
   */
  title: string,
  /**
   * 子控件的扩展属性
   */
  [key: string]: any
}
  • IFormItemMeta 的定义:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 子控件的低代码需要的数据
 */
export interface IFormItemMeta {
  /**
   * -- 字段ID、控件ID
   */
  columnId?: number | string,
  /**
   * -- 字段名称
   */
  colName: string,
  /**
   * -- 字段的中文名称,标签
   */
  label?: string,
  /**
   * -- 子控件类型,number,EControlType
   */
  controlType: EControlType | number,
  /**
   * 子控件的默认值
   */
  defValue: any,
  /**
   * -- 一个控件占据的空间份数。
   */
  colCount?: number,
  /**
   * 访问后端API的配置信息,有备选项的控件需要
   */
  webapi?: IWebAPI,
  /**
   * -- 防抖延迟时间,0:不延迟
   */
  delay: number,
  /**
   * 防抖相关的事件
   */
  events?: IEventDebounce,
}

规则定义之后呢,总会发现有特例的属性,比如 select 的 option。代码里面需要使用 option 去绑定组件,应该放在“低代码需要的属性”里面。

但是实际使用的时候发现,放在“共用属性”里面会更方便。

然后在做“维护JSON的小工具”的时候,发现需要放在“扩展属性”里面维护,这样维护代码更容易实现。

综合考虑之后,就出现了一个不符合规则的属性 —— optionList。

定义组件的 props。

按照接口实现一下 props 的定义。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import type { PropType } from 'vue'

import type {
  IOptionList,
  IOptionTree,
  IFormItemProps
} from '../types/20-form-item'

/**
 * 基础控件的共用属性,即表单子控件的基础属性
 */
export const itemProps = {
  formItemMeta: {
    type: Object as PropType<IFormItemProps>,
    default: () =>  {return {}}
  },
  /**
   * optionList:IOptionList | IOptionTree,控件的备选项,单选、多选、等控件需要
   */
  optionList: {
    type: Object as PropType<Array<IOptionList | IOptionTree>>,
    default: () =>  {return []}
  },
  /**
   * 表单的 model,整体传入,便于子控件维护字段值。
   */
  model: {
    type: Object
  },
  /**
   * 是否显示可清空的按钮,默认显示
   */
  clearable: {
    type: Boolean,
    default: true
  },
  /**
   * 浮动的提示信息,部分控件支持
   */
  title: {
    type: String,
    default: ''
  }
}

其他属性以及扩展属性,可以通过 $attrs 传递和绑定,这样可以方便各种扩展。

定义 json 文件。

我们来定义一个示例用的 json文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "formItemMeta": {
      "columnId": 90,
      "colName": "kind",
      "label": "分类",
      "controlType": 107,
      "isClear": false,
      "defValue": 0,
      "colCount": 7
    },
    "placeholder": "分类",
    "title": "编号",
    "optionList": [
      {"value": 1, "label": "文本类"},
      {"value": 2, "label": "数字类"},
      {"value": 3, "label": "日期类"},
      {"value": 4, "label": "时间类"},
      {"value": 5, "label": "选择类"},
      {"value": 6, "label": "下拉类"}
    ]
}

基于 UI库 封装,实现依赖 json 渲染。

首先要感谢强大的UI库,实现了大部分的功能,我们只需要再稍微封装一下即可,只有少数几个组件需要我们补充点代码。

文本类

  • template
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <el-input
    v-model="value"
    v-bind="$attrs"
    :id="'c' + formItemMeta.columnId"
    :name="'c' + formItemMeta.columnId"
    :title="title"
    :clearable="clearable"
    @blur="run"
    @change="run"
    @clear="run"
    @keydown="clear"
  >
  </el-input>

使用 v-bind="$attrs" 绑定扩展属性

  • ts
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  import { defineComponent } from 'vue'
  import { ElInput } from 'element-plus'
  // 引入组件需要的属性、控制类
  import { itemProps, itemController } from '@naturefw/ui-elp'

  export default defineComponent({
    name: 'nf-el-form-item-text',
    inheritAttrs: false,
    components: {
      ElInput
    },
    props: {
      modelValue: [String, Number],
      ...itemProps // 基础属性
    },
    emits: ['update:modelValue'],
    setup (props, context) {
      const {
        value,
        run,
        clear
      } = itemController(props, context.emit)

      return {
        value,
        run,
        clear
      }
    }
  })

使用 ...itemProps 定义属性。

是不是很简单。

可能你会问了,这不是封装了个寂寞吗,你看看里面空荡荡的,完全没有封装的必要嘛。

确实,对于文本这类简单的组件,确实没有封装的必要,直接使用UI库提供的组件即可。

那么为啥好要封装一下呢?

首先为了统一风格,不管是简单的,还是复杂的,都按照统一方式封装一下,这样便于维护和扩展。

日期类

  • template
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <el-date-picker
    ref="domDate"
    v-model="value"
    v-bind="$attrs"
    :type="dateType"
    :name="'c' + formItemMeta.columnId"
    :format="format"
    :value-format="valueFormat"
    :title="title"
    :clearable="clearable"
  >
  </el-date-picker>
  • ts
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  import { defineComponent } from 'vue'
  // 引入组件需要的属性 引入表单子控件的管理类
  import { itemProps, itemController } from '@naturefw/ui-elp'
  
  /**
   * 日期
   */
  export default defineComponent({
    name: 'nf-el-from-item-date',
    inheritAttrs: false,
    props: {
      ...itemProps, // 基础属性
      format: {
        type: String,
        default: 'YYYY-MM-DD'
      },
      'value-format': {
        type: String,
        default: 'YYYY-MM-DD'
      },
      modelValue: [String, Date, Number, Array]
    },
    emits: ['update:modelValue'],
    setup (props, context) {
      const { value } = itemController(props, context.emit)

      // 根据类型判断是否为数组,判断是否 使用范围。
      let dateType = 'date'
      if (props.formItemMeta.controlType == '125' ) {
        dateType = 'daterange'
        if (!Array.isArray(value.value)) {
          value.value = []
        }
      } else {
        if (Array.isArray(value.value)) {
          value.value = ''
        }
      }

      return {
        dateType, // 控件类型
        value // 控件值
      }
    }
  })

可以增设属性,然后根据需求设置默认值,这样方便统一风格。

选择类

  • template
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <el-select
    v-model="value"
    v-bind="$attrs"
    :id="'c' + formItemMeta.columnId"
    :name="'c' + formItemMeta.columnId"
    :clearable="clearable"
    :multiple="multiple"
    :collapse-tags="collapseTags"
    :collapse-tags-tooltip="collapseTagsTooltip"
  >
    <el-option
      v-for="item in optionList"
      :key="'select' + item.value"
      :label="item.label"
      :value="item.value"
      :disabled="item.disabled"
    >
    </el-option>
  </el-select>
  • ts
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  import { defineComponent, computed } from 'vue'
  // 引入组件需要的属性 引入表单子控件的管理类
  import { itemProps, itemController } from '@naturefw/ui-elp'

  export default defineComponent({
    name: 'nf-el-from-select',
    inheritAttrs: false,
    props: {
      ...itemProps, // 基础属性
      'collapse-tags': {
        type: Boolean,
        default: true
      },
      'collapse-tags-tooltip': {
        type: Boolean,
        default: true
      },
      modelValue: [String, Number, Array]
    },
    emits: ['update:modelValue'],
    setup (props, context) {
      const multiple = computed (() => props.formItemMeta.controlType === 161)
  
      return {
        ...itemController(props, context.emit)
      }
    }
  })

template 里面增加了 el-option 部分,通过对 optionList 的遍历,实现了选项的渲染。

其他组件也是一样的方式进行封装,就不一一介绍了。

封装 el-form-item

el-table 通过 el-form-item 来加载子组件,所以我们也可以封装一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <el-row :gutter="15">
    <el-col
      v-for="(ctrId, index) in colOrder"
      :key="'form_' + ctrId + '_' + index"
      :span="formColSpan[ctrId]"
      v-show="showCol[ctrId]"
    >
      
      <transition name="el-zoom-in-top">
        <el-form-item
          :label="itemMeta[ctrId].formItemMeta.label"
          :prop="itemMeta[ctrId].formItemMeta.colName"
          :rules="ruleMeta[ctrId] ?? []"
          :label-width="itemMeta[ctrId].formItemMeta.labelWidth??''"
          :size="size"
          v-show="showCol[ctrId]"
        >
          <component
            :is="formItemKey[itemMeta[ctrId].formItemMeta.controlType]"
            :model="model"
            v-bind="itemMeta[ctrId]"
          >
          </component>
        </el-form-item>
      </transition>
    </el-col>
  </el-row>
  • el-row、el-col:实现多列
  • transition:组件联动的时候的动画效果
  • component:动态加载子控件
  • formItemKey 子控件的字典,key-value形式,key就是控件编号,value是组件。这样就可以根据控件的编号加载对应的子控件了。

使用 slot 和 字典 实现扩展自定义子控件。

这里要感谢强大的 vue3,提供了插槽这种很灵活的扩展方式。以及组件的形成管理代码。

说到扩展,想必大家想到的是插槽,我们也支持使用插槽的扩展方式,不过我觉得,既然定义了接口,那么不用的话,是不是有点浪费。

我们可以定义组件实现接口,然后并入字典(formItemKey),这样表单控件就可以从字典里面加载我们自己定义的组件了,更便于管理和扩展。

源码和演示

core:https://gitee.com/naturefw-code/nf-rollup-ui-controller

二次封装: https://gitee.com/naturefw-code/nf-rollup-ui-element-plus

演示: https://naturefw-code.gitee.io/nf-rollup-ui-element-plus/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Rust 补丁两年零通过,34年开发者煽动网友逼Linus表态,维护者激烈反击:Rust 就是 Linux 的“癌症”!
近日,Linux 社区再次爆发关于是否在内核中使用 Rust 语言的激烈争论。一些开发者试图将 Rust 代码添加到 Linux 内核中,但遭到了一些内核维护人员的强烈反对。他们认为,在内核中引入多种语言会增加复杂性,带来安全风险,并且不受欢迎。
深度学习与Python
2025/02/08
930
Rust 补丁两年零通过,34年开发者煽动网友逼Linus表态,维护者激烈反击:Rust 就是 Linux 的“癌症”!
Linus 将不顾反对合并Rust代码?!内核维护者无奈强调:不能让“癌症”扩散!
背景:自从 2022 年 Rust 代码首次被合并到 Linux 内核中,围绕它的争议就不断升温。Rust 因其在内存安全方面的优势而备受推崇,也被各国政府和安全专家认为能够有效减少由于内存安全漏洞导致的高危安全问题。
深度学习与Python
2025/02/25
960
Linus 将不顾反对合并Rust代码?!内核维护者无奈强调:不能让“癌症”扩散!
Linux之父:我们不会用Rust取代C语言开发内核
Linux 诞生于 1991 年,距今已经 30 年了。虽然它一开始只是 Linus 的一个个人项目,而非出于要开发一个新操作系统的伟大梦想,但如今的 Linux 早已无处不在。
范蠡
2021/06/17
1.1K0
FOSDEM 2025:Rust在Linux中蓬勃发展,尽管面临强烈反对
越来越多的开发者和内核维护者喜欢 Rust,但在内核开发社区中,支持 Rust 和支持 C 的阵营之间存在争议。
云云众生s
2025/02/09
1400
FOSDEM 2025:Rust在Linux中蓬勃发展,尽管面临强烈反对
用Rust重写Linux内核,这可能吗?
众所周知,Linux 是 C 语言的代言人。但是,时代变了,Rust 正在兴起并赢得越来越多人的支持,它开始逐渐扮演 Linux 系统语言的角色。 在 2020 年 Linux Plumbers 峰会上,开发人员认真考虑过将 Rust 语言用于 Linux 内联代码的想法。此外,已经有很多 Linux 中的 Rust 内容被推向市场。比如,AWS 在 2020 年发布了 Bottlerocket,这是一种专为运行容器而打造的基于 Linux 的开源操作系统,其中包含大量的 Rust 代码。 另一个例子则与
深度学习与Python
2023/04/01
1.8K0
用Rust重写Linux内核,这可能吗?
Rust for Linux 源码导读 | Rust 驱动开发与通用时钟管理框架抽象
Rust for Linux 这个项目的目的就是为了将 Rust 引入 Linux,让 Rust 成为 C 语言之后的第二语言。但它最初的目的是:实验性地支持Rust来写内核驱动。
张汉东
2022/03/29
1.2K0
“羊了个羊”背后公司清仓式分红10亿元;Meta元宇宙部门今年已亏94亿美元;微软称GitHub年收入10亿美元|Q资讯
整理|燕珊 “羊了个羊”背后公司清仓式分红 10 亿引热议;Marvell 大面积裁撤中国研发团队;微软称 GitHub 年收入 10 亿美元,有 9 千万活跃用户;亏损创纪录,Meta 元宇宙部门今年已亏 94 亿美元;马斯克正式入主 Twitter:当场炒掉 CEO 和 CFO;华为前三季度营收 4458 亿元,终端业务下行放缓;Chrome 浏览器将停止支持 Windows 7/8/8.1;Docker 发布 WebAssembly 支持工具预览版;Meta 开发 Android 应用使用的语言迁
深度学习与Python
2023/03/29
4940
“羊了个羊”背后公司清仓式分红10亿元;Meta元宇宙部门今年已亏94亿美元;微软称GitHub年收入10亿美元|Q资讯
【Rust日报】2022-01-28 Rust 编程,2022 年的展望
2022 年对于成为 Rust 程序员来说是伟大的一年。Rust 还不是很主流,但凭借其忠实的用户群和在科技界不断增长的用例,很容易看出 Rust 将如何在 2022 年继续发展壮大。我们列出了许多值得期待在 Rust 世界中发生的事情。列出了几个会议以及对 Rust 本身的一些改进。此外,我还介绍了 Rust 编程语言的一些主要采用点。
MikeLoveRust
2022/03/24
4280
【Rust 日报】2023-11-23 - egui 0.24 发布
egui 0.24 的重要新特性是多视窗功能。在支持的后端上(如eframe),用户可以利用全新的 viewport API 同时生成多个本机窗口。
MikeLoveRust
2023/11/27
3240
【Rust 日报】2023-11-23 - egui 0.24 发布
Linux 之父:不出意外,Rust 将出现在 Linux 6.1 版本中
作者 | 李冬梅 当地时间 9 月 19 日,在刚刚结束的内核维护者峰会上,有关于 Rust 是否将出现在 Linux 中的讨论已经结束,Linux 的创建者 Linus Torvalds 在接受媒体采访时表示,“如果不出意外,Rust 将会出现在 Linux 6.1 版本中。” 关于 Rust 编程语言将进入 Linux 内核的讨论已经有一段时间了。早在 2020 年在 Linux Plumbers Conference 上,Thomas 、Gaynor、Rust 语言团队的联合领导者 Josh Tr
深度学习与Python
2023/03/29
9360
Linux 之父:不出意外,Rust 将出现在 Linux 6.1 版本中
曾遭 Linus 炮轰“很烂”的 C++,现受开发者支持:Linux 内核应从 C 转到 C++!
前有 C 语言当道,后有 Rust “杀入”,时下又有一场关于 C++ 才应该成为 Linux 内核语言的争论被旧事重提了。
C语言中文社区
2024/01/17
1.1K2
曾遭 Linus 炮轰“很烂”的 C++,现受开发者支持:Linux 内核应从 C 转到 C++!
Linux核心维护者都五六十岁了,Linus称社区后继无人
本周在线举行的开源峰会和嵌入式Linux会议上,Linux开发者Linus Torvalds谈到了寻找开源内核未来维护者的挑战。
大数据文摘
2020/07/07
4420
抛弃 C / C++!微软官宣:请用 Rust 编写 Windows 驱动!
在这众多大厂之中,微软对于 Rust 的重视与支持力度也一直未减。继 5 月效仿 Linux 用 Rust 重写部分 Windows 内核后,近来微软在拥抱 Rust 上又进了一步:微软在 GitHub 中发布了一系列开发工具包,让开发者可以使用 Rust 语言来编写 Windows 驱动程序。
C语言与CPP编程
2023/10/09
7050
抛弃 C / C++!微软官宣:请用 Rust 编写 Windows 驱动!
腾讯所有事业群继续人员缩减;字节跳动更新价值观;传阿里正逐步解除与蚂蚁集团的业务往来 | Q资讯
整理 | 蔡芳芳 字节跳动更新价值观;蔚来回应测试车坠楼事件:这是一起(非车辆原因导致的)意外事故;腾讯所有事业群继续人员缩减;消息称阿里正逐步解除与蚂蚁集团的业务往来;TikTok 将美国全部用户流量导至甲骨文云;Linux 之父发话:Rust 即将出现在 Linux 内核中;StackOverflow 2022 年度调查报告:JavaScript 连续霸榜,Java 被挤出前五,Rust 最受欢迎;微软禁止俄罗斯用户从官网下载 Win11/10 系统…… 科技公司 字节跳动更新价值观 据晚
深度学习与Python
2023/03/29
1K0
腾讯所有事业群继续人员缩减;字节跳动更新价值观;传阿里正逐步解除与蚂蚁集团的业务往来 | Q资讯
【Rust 日报】2022-08-04 异步Rust的实践:性能、隐患、分析​
至于目前的状态,v8补丁系列仍然带有这样的信息: "Rust支持仍然被认为是实验性的。然而,支持已经足够好了,内核开发者可以开始研究子系统的Rust抽象,并编写驱动和其他模块。" 对于那些对Linux内核的Rust感兴趣的人来说,更多的细节可以在内核邮件列表中看到v8补丁。
MikeLoveRust
2022/11/28
5170
【Rust 日报】2022-08-04 异步Rust的实践:性能、隐患、分析​
如何用 Rust 编写一个 Linux 内核模块
2021 年 4 月 14 号,一封主题名为《Rust support》的邮件出现在 LKML 邮件组中。这封邮件主要介绍了向内核引入 Rust 语言支持的一些看法以及所做的工作。邮件的发送者是 Miguel Ojeda,为内核中 Compiler attributes、.clang-format 等多个模块的维护者,也是目前 Rust for Linux 项目的维护者。
用户8639654
2021/09/06
3.3K0
Linux内核收获一批新的Rust基础设施优化补丁
今年 10 月,初始的 Rust 基础设施已被合并到 Linux 6.1 。意味着未来 Rust 编程语言将用于内核驱动程序和其他子系统的代码。但 10 月的 Rust for Linux 只提供了底层的基础设施和一些非常基础的集成,缺少很多规范和子系统抽象。
MikeLoveRust
2022/11/28
5130
Linux内核收获一批新的Rust基础设施优化补丁
Linux内核将引入Rust,Linus:以防此事搞砸了我又发脾气,先给大家道个歉
丰色 发自 凹非寺 量子位 | 公众号 QbitAI 这几天,由Linux基金会主办的2022开源峰会如约而至。 Linux之父Linus Torvalds也出席了会议。 一个小插曲是,一张现场传来的他本人的照片让不少网友和粉丝感叹: Linus真的老了! 不过,53岁的Linus在和老朋友Cardano基金会的首席开源官进行的一番畅谈中却表示,自己仍然充满了干劲。 同时,他还透露了一个大惊喜: 下一个版本的Linux内核主线,可能就会合并用Rust语言提交的PR分支了。 对Linux的热情30年未减
量子位
2022/07/04
4940
Linux内核将引入Rust,Linus:以防此事搞砸了我又发脾气,先给大家道个歉
优秀开发者能编码到70岁!Linus Torvalds:Linux是个能留住人的社区,许多顶级Linux内核维护者即将步入60岁
近日,在一场开源峰会上,Linux 与 Git 的创始人 Linus Torvalds 谈到 Rust 语言在 Linux 中的应用、Linux 维护者的高强度工作、以及 AI 技术在 Linux 乃至开源开发领域的未来作用。
深度学习与Python
2023/12/12
3030
优秀开发者能编码到70岁!Linus Torvalds:Linux是个能留住人的社区,许多顶级Linux内核维护者即将步入60岁
Linux 6.0 首亮相,Linus Torvalds 感叹:Rust for Linux 尚未合并
作者 | 闫园园 美东时间 2022 年 8 月 14 日下午,Linus Torvalds 发布了 Linux 6.0 的第一个候选版本。Linus Torvalds 表示,在接下来的两个月内,Linux 6.0 内核将逐步稳定,并且从各种系统上的早期测试来看,Linux 6.0 内核功能和性能均表现良好。 此前 Linux 之父 Linus 表示由于小版本数字过大,计划放弃 5.x 系列,改为 Linux 6.0 版本号。据 The Register 报道,本次 Linux 6.0 版本并未对内核进行
深度学习与Python
2023/03/29
9550
Linux 6.0 首亮相,Linus Torvalds 感叹:Rust for Linux 尚未合并
推荐阅读
Rust 补丁两年零通过,34年开发者煽动网友逼Linus表态,维护者激烈反击:Rust 就是 Linux 的“癌症”!
930
Linus 将不顾反对合并Rust代码?!内核维护者无奈强调:不能让“癌症”扩散!
960
Linux之父:我们不会用Rust取代C语言开发内核
1.1K0
FOSDEM 2025:Rust在Linux中蓬勃发展,尽管面临强烈反对
1400
用Rust重写Linux内核,这可能吗?
1.8K0
Rust for Linux 源码导读 | Rust 驱动开发与通用时钟管理框架抽象
1.2K0
“羊了个羊”背后公司清仓式分红10亿元;Meta元宇宙部门今年已亏94亿美元;微软称GitHub年收入10亿美元|Q资讯
4940
【Rust日报】2022-01-28 Rust 编程,2022 年的展望
4280
【Rust 日报】2023-11-23 - egui 0.24 发布
3240
Linux 之父:不出意外,Rust 将出现在 Linux 6.1 版本中
9360
曾遭 Linus 炮轰“很烂”的 C++,现受开发者支持:Linux 内核应从 C 转到 C++!
1.1K2
Linux核心维护者都五六十岁了,Linus称社区后继无人
4420
抛弃 C / C++!微软官宣:请用 Rust 编写 Windows 驱动!
7050
腾讯所有事业群继续人员缩减;字节跳动更新价值观;传阿里正逐步解除与蚂蚁集团的业务往来 | Q资讯
1K0
【Rust 日报】2022-08-04 异步Rust的实践:性能、隐患、分析​
5170
如何用 Rust 编写一个 Linux 内核模块
3.3K0
Linux内核收获一批新的Rust基础设施优化补丁
5130
Linux内核将引入Rust,Linus:以防此事搞砸了我又发脾气,先给大家道个歉
4940
优秀开发者能编码到70岁!Linus Torvalds:Linux是个能留住人的社区,许多顶级Linux内核维护者即将步入60岁
3030
Linux 6.0 首亮相,Linus Torvalds 感叹:Rust for Linux 尚未合并
9550
相关推荐
Rust 补丁两年零通过,34年开发者煽动网友逼Linus表态,维护者激烈反击:Rust 就是 Linux 的“癌症”!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验