cmake 升级_「Yapi 改造计划四」升级 tui.editor@2.x

本文介绍了在React项目中升级tui.editor@2.x的步骤和注意事项。内容包括tui.editor@2.x的优化点,如npm包的变更、ext到plugin的拆分,以及对React的支持。升级需求包括编辑器功能的扩展和封装,以提高代码维护性。
摘要由CSDN通过智能技术生成

b7b70f8de3edd990478e413e22269003.png

如何优雅的在 React 项目中使用 tui.editor

Yapi 使用 tui.editor 作为系统的文档编辑器,用于接口备注的编辑以及 wiki 模块,如果需要针对编辑器做一些调整,我们就会意识到之前的写法可维护性不太友好,加之 tui.editor@2.x 带来的优化,可以顺手做一次升级。

关于 tui.editor@2.x

关于 tui.editor@2.x,可以通过下面的链接获取更多的信息:

  • 2.0 优化项介绍
  • 1.x -> 2.x 升级指南

涉及开发的部分可以总结为下面三点:

  • npm 包更改到 @toast-ui 空间下
  • ext 更改为 plugin,并从核心库中拆分,作为单独的 npm 包
  • 2.x 提供了面向 React 和 Vue 的封装,封装逻辑比较简单,但对开发使用而言更简洁

需求

以上三点是我们在迁移 2.x 过程中需要注意的,开始动手前需要再梳理下我们的需求:

  • 编辑器需要支持语法高亮、颜色选择、表格、视频插件以及文件上传
  • 项目应该针对 EditorViewer 进行封装,对编辑器配置进行收敛,便于维护
关于视频插件可以查看之前的 tui.editor 视频嵌入插件

改造源码

// 封装 Editor
import React from 'react'
import { Editor as TuiEditor } from '@toast-ui/react-editor'
// 引入插件
import codeSyntaxHighlight from '@toast-ui/editor-plugin-code-syntax-highlight'
import hljs from 'highlight.js'
import tableMergedCell from '@toast-ui/editor-plugin-table-merged-cell'
import colorSyntax from '@toast-ui/editor-plugin-color-syntax'
import videoPlugin from '@leeonfield/editor-plugin-video'
// 引入语言包
import '@toast-ui/editor/dist/i18n/zh-cn'
// 引入样式
import 'codemirror/lib/codemirror.css'
import '@toast-ui/editor/dist/toastui-editor.css'
import 'tui-color-picker/dist/tui-color-picker.css'
import 'highlight.js/styles/github.css'
// 可选:从 highlight.js 中挑选一些常见语法进行支持
import javascript from 'highlight.js/lib/languages/javascript'
import bash from 'highlight.js/lib/languages/bash'
import c from 'highlight.js/lib/languages/c'
import cmake from 'highlight.js/lib/languages/cmake'
import java from 'highlight.js/lib/languages/java'
import json from 'highlight.js/lib/languages/json'
import less from 'highlight.js/lib/languages/less'
import css from 'highlight.js/lib/languages/css'
import php from 'highlight.js/lib/languages/php'
import go from 'highlight.js/lib/languages/go'
hljs.registerLanguage('javascript', javascript)
hljs.registerLanguage('java', java)
hljs.registerLanguage('bash', bash)
hljs.registerLanguage('c', c)
hljs.registerLanguage('cmake', cmake)
hljs.registerLanguage('json', json)
hljs.registerLanguage('css', css)
hljs.registerLanguage('less', less)
hljs.registerLanguage('php', php)
hljs.registerLanguage('go', go)
// 可选:自定义图片上传方法
// const { uploadBlob } = require('common/utils.js')
const plugins = [
  [codeSyntaxHighlight, { hljs }],
  tableMergedCell,
  [
    colorSyntax,
    {
      preset: [
        '#1abc9c',
        '#2ecc71',
        '#3498db',
        '#9b59b6',
        '#34495e',
        '#f1c40f',
        '#e67e22',
        '#e74c3c',
        '#ecf0f1',
        '#95a5a6',
      ],
    },
  ],
  videoPlugin,
]

export default React.forwardRef((props, ref) => (
  <TuiEditor
    height="500px"
    previewStyle="vertical"
    initialEditType="markdown"
    language="zh-CN"
    usageStatistics={false}
    placeholder="输入文档内容"
    useCommandShortcut={false}
    // hooks={{
    //   addImageBlobHook: function(blob, callback) {
    //     uploadBlob(blob, function(imgUrl) {
    //       callback(imgUrl, blob.name)
    //     })
    //     return false
    //   },
    // }}
    plugins={plugins}
    {...props}
    ref={ref}
  />
))
// 封装 Viewer 
import React from 'react'
import { Viewer as TuiViewer } from '@toast-ui/react-editor'
// 引入插件
import codeSyntaxHighlight from '@toast-ui/editor-plugin-code-syntax-highlight'
import tableMergedCell from '@toast-ui/editor-plugin-table-merged-cell'
import hljs from 'highlight.js'
import videoPlugin from './videoPlugin'
// 引入样式
import 'codemirror/lib/codemirror.css'
import '@toast-ui/editor/dist/toastui-editor.css'
import 'tui-color-picker/dist/tui-color-picker.css'
import 'highlight.js/styles/github.css'
// 可选:从 highlight.js 中挑选一些常见语法进行支持
import javascript from 'highlight.js/lib/languages/javascript'
import bash from 'highlight.js/lib/languages/bash'
import c from 'highlight.js/lib/languages/c'
import cmake from 'highlight.js/lib/languages/cmake'
import java from 'highlight.js/lib/languages/java'
import json from 'highlight.js/lib/languages/json'
import less from 'highlight.js/lib/languages/less'
import css from 'highlight.js/lib/languages/css'
import php from 'highlight.js/lib/languages/php'
import go from 'highlight.js/lib/languages/go'
hljs.registerLanguage('javascript', javascript)
hljs.registerLanguage('java', java)
hljs.registerLanguage('bash', bash)
hljs.registerLanguage('c', c)
hljs.registerLanguage('cmake', cmake)
hljs.registerLanguage('json', json)
hljs.registerLanguage('css', css)
hljs.registerLanguage('less', less)
hljs.registerLanguage('php', php)
hljs.registerLanguage('go', go)

const plugins = [
  videoPlugin,
  [codeSyntaxHighlight, { hljs }],
  tableMergedCell,
]

export default React.forwardRef((props, ref) => (
  <TuiViewer plugins={plugins} {...props} ref={ref} />
))

使用插件时,引入封装的组件,通过 ref 获取 editor 实例即可

// Editor 插件使用
import React, { Component } from 'react'
import Editor from './components/Editor'

export default class Untitled-2 extends Component {
  constructor(props) {
    super(props)
    this.state = {
      markdown: ''
    }
    this.editorRef = React.createRef()
  }

  componentDidMount() {
    this.editor = this.editorRef.current.getInstance()
    // 获取到实例后,可以调用官方提供的 api,如下
    // 获取 HTML
    const html = this.editor.getHtml()
    // 获取 markdown
    const markdown = this.editor.getMarkdown()
  }

  render() {
    return (
      <div>
        <Editor
          initialValue={this.state.markdown}
          ref={this.editorRef}
        />
      </div>
    )
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ament_cmake_autoConfig.cmake和ament_cmake_auto-config.cmake都是用于自动配置ament_cmake包的CMake模块文件。这些文件包含了一些CMake变量和函数,用于设置ament_cmake包的构建和安装过程中所需的依赖项、编译选项和安装目录等信息。这些模块文件通常由ament_cmake包提供,可以在CMakeLists.txt文件中使用include()命令来加载它们,以便使用其中定义的功能和变量。具体来说,ament_cmake_autoConfig.cmake用于配置ament_cmake包的构建,而ament_cmake_auto-config.cmake用于配置ament_cmake包的安装。这两个文件都是通过在CMake的扩展点系统中使用的,以实现代码的模块化和灵活性。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【ROS2原理3】:构建系统“ament_cmake”和构建工具“ament_tools”](https://blog.csdn.net/gongdiwudu/article/details/126192244)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ROS2学习(十六).ROS概念 - 构建系统](https://blog.csdn.net/amuro_ray027/article/details/120201983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值