CKEditor5+vue3使用以及如何添加新工具栏,自定义设置字体fontFamily

这篇具有很好参考价值的文章主要介绍了CKEditor5+vue3使用以及如何添加新工具栏,自定义设置字体fontFamily。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本使用

官网地址:https://ckeditor.com/ckeditor-5/online-builder/
官网提供了以下几种模式,一般使用经典模式居多,具体差别可访问官网自己试一下。
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端

基本的使用方法(经典模式),先别急着操作,看完再决定使用哪种方法。

//下载ckeditor5-vue
npm install @ckeditor/ckeditor5-vue
//下载经典模式
npm install @ckeditor/ckeditor5-build-classic
  • 代码
<template>
  <div id="ckeditor">
    <ckeditor
      ref="editorRef"
      v-model="editorDesign"
      :editor="editor"
      :config="editorConfig"
      :disabled="disabled"
      @ready="onEditorReady"
      @focus="onEditorFocus"
      @blur="onEditorBlur"
      @input="onEditorInput"
      @destroy="onEditorDestroy"
    ></ckeditor>
  </div>
</template>

<script setup>
import { ref, reactive } from 'vue'
import ClassicEditor from '@ckeditor/ckeditor5-build-classic'
import '@ckeditor/ckeditor5-build-classic/build/translations/zh-cn.js' //引入中文包
const props = defineProps({
  disabled: {
    type: Boolean,
    default: false, //是否禁用
  },
})
const editor = ClassicEditor
const editorDesign = ref('') //默认内容

const editorConfig = reactive({
  language: 'zh-cn',
  toolbar: {
    items: ['heading', '|', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', '|', 'outdent', 'indent', '|', 'imageUpload', 'blockQuote', 'insertTable', 'mediaEmbed', 'undo', 'redo'],
  },
  language: 'zh',
  image: {
    toolbar: ['imageTextAlternative', 'toggleImageCaption', 'imageStyle:inline', 'imageStyle:block', 'imageStyle:side'],
  },
  table: {
    contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells'],
  },
  ckfinder: {
    uploadUrl: `/uploadfile`, // 上传图片接口
    options: {
      resourceType: 'Images',
    },
  },
})

const emit = defineEmits(['ready', 'focus', 'blur', 'input', 'destroy'])

const editorRef = ref(null)
const onEditorReady = () => {
  console.log('准备好了')
  emit('ready')
}

const onEditorFocus = () => {
  console.log('聚焦')
  emit('focus')
}
const onEditorBlur = () => {
  console.log('失去焦点')
  emit('blur')
}

const onEditorInput = () => {
  console.log('正在录入')
  emit('input')
}

const onEditorDestroy = () => {
  console.log('销毁')
  emit('destroy')
}
</script>

<style lang="scss">
#ckeditor {
  .ck-editor__editable {
    min-height: 100px;
    max-height: 500px;
  }
}
</style>

  • 效果如图

vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端

以上基本的工具栏配置比较少,如果基本的满足你的需要,可直接使用如上的方法。

我想要添加更多的工具栏。
以下是我的踩坑经历,我想要一个字体的工具栏,直接下载了字体的依赖

npm i @ckeditor/ckeditor5-font
  • 引入
import FontColor from '@ckeditor/ckeditor5-font/src/fontcolor.js';
import FontFamily from '@ckeditor/ckeditor5-font/src/fontfamily.js';
import FontSize from '@ckeditor/ckeditor5-font/src/fontsize.js';

然后直接报错Uncaught CKEditorError:ckeditor-duplicated-modules Read more …
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端
文档说明
大概意思就是重复安装了一些模块,因此以上方法行不通。

更多新工具栏使用方法

如果想要多工具栏的,直接按照如下方法操作。第一种基本使用方法可不操作。

先说一下操作思路,在@ckeditor/ckeditor5-build-classic代码的基础上,添加新工具栏,然后上传打包后的包到私服或者放到项目目录里。

  • 官网去设置工具栏
    官网地址:https://ckeditor.com/ckeditor-5/online-builder/
    1、这里我使用的是第一个经典模式classic
    vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端

2、这一步操作,可以直接在下面的工具栏中add想要的工具栏。带☆的是收费的。在默认的基础上我又添加了几种。
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端

3、把上面的工具栏添加到下面的可以看效果
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端

4、选择第二个Chinese语言包
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端

5、start生成包并下载
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端
6、下载下来之后,在package.json里面可以看到这些依赖就是刚才我们选择的。build文件就是咱们项目中用到的包。
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端
目前已经有的工具栏就是刚才选择的。如果需要增加新的工具栏,在当前目录执行如添加字体 npm i @ckeditor/ckeditor5-font -D,然后在src/ckeditor.js文件引入,添加到builtinPlugins,defaultConfig
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端

最后执行npm run build打包,重新生成的build文件夹,就是最新的包,把这个包直接放在项目目录里,或者上传到私服都可以。

我这里是上传到了私服,package.json如下配置,package.json的name自己重新命名一下。private改为false。
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端
publishConfig为上传的私服地址
vue3使用ckeditor5,vue3,CKEditor5,vue.js,javascript,前端

  • 使用
npm install @ckeditor/ckeditor5-vue
//下载私服上的包
npm install @custom/ckeditor5-custom-build

实际项目中的用法和前面的基本方法一样,只需要更新一下toolbar里面的配置和引入的路径名称。
代码:

<template>
  <div id="ckeditor">
    <ckeditor
      ref="editorRef"
      v-model="editorDesign"
      :editor="editor"
      :config="editorConfig"
      :disabled="disabled"
      @ready="onEditorReady"
      @focus="onEditorFocus"
      @blur="onEditorBlur"
      @input="onEditorInput"
      @destroy="onEditorDestroy"
    ></ckeditor>
  </div>
</template>

<script setup>
import { ref, reactive } from 'vue'
import ClassicEditor from '@custom/ckeditor5-build-classic'
import '@customr/ckeditor5-build-classic/build/translations/zh-cn.js' //引入中文包
const props = defineProps({
  disabled: {
    type: Boolean,
    default: false, //是否禁用
  },
})
const editor = ClassicEditor
const editorDesign = ref('') //默认内容

const editorConfig = reactive({
  language: 'zh-cn',
  toolbar: {
    items: ['heading', '|', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', '|', 'outdent', 'indent', '|', 'imageUpload', 'blockQuote', 'insertTable', 'mediaEmbed', 'undo', 'redo','|','fontColor','fontFamily','fontSize','fontBackgroundColor',],
  },
  //自定义设置字体
   fontFamily: {
    options: [
      'default',
      '宋体',
      '新宋体',
      '仿宋',
      '楷体',
      '微软雅黑',
      '黑体',
      '华文仿宋',
      '华文楷体',
      '华文隶书',
      '华文宋体',
      '华文细黑',
      '华文新魏',
      '华文行楷',
      '华文中宋',
      '隶书',
      '苹方 常规',
      '幼圆',
    ],
  },
  language: 'zh',
  image: {
    toolbar: ['imageTextAlternative', 'toggleImageCaption', 'imageStyle:inline', 'imageStyle:block', 'imageStyle:side'],
  },
  table: {
    contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells'],
  },
  ckfinder: {
    uploadUrl: `/uploadfile`, // 上传图片接口
    options: {
      resourceType: 'Images',
    },
  },
})

const emit = defineEmits(['ready', 'focus', 'blur', 'input', 'destroy'])

const editorRef = ref(null)
const onEditorReady = () => {
  console.log('准备好了')
  emit('ready')
}

const onEditorFocus = () => {
  console.log('聚焦')
  emit('focus')
}
const onEditorBlur = () => {
  console.log('失去焦点')
  emit('blur')
}

const onEditorInput = () => {
  console.log('正在录入')
  emit('input')
}

const onEditorDestroy = () => {
  console.log('销毁')
  emit('destroy')
}
</script>

<style lang="scss">
#ckeditor {
  .ck-editor__editable {
    min-height: 100px;
    max-height: 500px;
  }
  //设置默认字体
   .ck-editor__editable_inline p {
    font-family: '宋体' !important;
  }
}
</style>

CKEditor5设置默认字体,用的是css写法,这里尝试了config.font_defaultLabel = fontFamily这类写法,都没有用。最后用css实现的。文章来源地址https://www.toymoban.com/news/detail-689805.html

//设置默认字体
   .ck-editor__editable_inline p {
    font-family: '宋体' !important;
  }

到了这里,关于CKEditor5+vue3使用以及如何添加新工具栏,自定义设置字体fontFamily的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3中ref和reactive联系与区别以及如何选择

    1、ref既可定义基本数据类型,也可以定义引用数据类型,reactive只能定义应用数据类型 2、ref在js中取响应值需要使用 .value,而reactive则直接取用既可 3、ref定义的对象通过.value重新分配新对象时依旧保持数据响应式,而reactive重新分配新对象会失去响应式 4、使用ref定义引用数

    2024年01月25日
    浏览(43)
  • element-ui Vue 封装组件按钮工具栏,使用slot插槽

    封装常用按钮工具栏,方便其它页面调用 缺点:工具栏下面div会显示工具栏下面,下面需要使用margin-top:40px(小学生一个没整明白)希望大神能帮解决 运行效果          组件代码 tt-btnBar.vue 父窗口调用 testbtnbar.vue

    2024年02月02日
    浏览(44)
  • vue2与vue3—引入echarts以及使用

    npm install echarts --save       main.js中   vue组件中 引入方法一: 通过getCurrentInstance main.js文件中: vue组件中: 引入方法二: 组件中直接引入

    2024年02月16日
    浏览(43)
  • Vue3前端开发,如何获取组件内dom对象以及子组件的属性和方法

    Vue3前端开发,借助Ref来获取组件内dom对象,借助defineExpose编译宏可以获取到子组件的属性和方法。 app入口文件,我们作为父组件,在里面调用了自定义组件TestCom.vue。 先做了一个测试,借助于ref来访问自身的dom对象。如图所示是可以拿到的。 ref又称谓钩子函数,在vue2版本中

    2024年01月22日
    浏览(61)
  • 关于vue3生命周期的使用、了解以及用途(详细版)

    每一个Vue组件实例在创建时都需要经历一系列的初始化步骤,比如数据侦听,编译模板,挂载实例到DOM,以及在数据改变时更新DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。最常用的是created、mounted、updated和unmounted。

    2024年01月19日
    浏览(44)
  • Qt添加菜单栏和工具栏

    一般常规的PC软件都会有主窗口,主窗口中都会有菜单栏和工具栏,例如我们正在使用的Qt creator: 首先需要先创建mainWindow设计师类,基类直接选择默认的MainWindow即可,然后就可以进行设计了,这里选择直接设计ui文件,下拉菜单无法直接输入中文,需要在其它地方输入中文

    2024年02月11日
    浏览(60)
  • Vue3使用高德地图、搜索、地图选点、以及省市区三级联动

    1、准备工作 需要在 高德开发平台 申请自己的 key 和 密钥 这里的 Key 名称大家可以随意填写 申请完之后我们得到 key 和 密钥 vue中使用需要安装**@amap/amap-jsapi-loader --save** 官方文档 2、代码实现 首先我们需要三个文件,一个 index.vue 一个用来存放省市区的 index.js 文件 一个 ma

    2024年02月05日
    浏览(75)
  • vue3使用高德地图实现点击获取经纬度以及搜索功能

     话不多说直接上干活 在此之前你需要有高德地图的 key,这个自己去申请即可 1,首先需要在终端安装 2,准备一个容器 3,在需要使用的页面引入刚才安装的 4, 5,绑定input框 最后附上css代码 ​​​​​​​这个时候就已经可以了

    2024年02月12日
    浏览(45)
  • Vue3前端h5移动端页面预览PDF使用pdfjs-dist,添加自定义文本水印

    pnpm i pdfjs-dist@2.5.207

    2024年01月18日
    浏览(77)
  • ​WordPress顶部管理工具栏怎么添加一二级自定义菜单?

    默认情况下,WordPress前端和后台页面顶部都有一个“管理工具栏”,左侧一般就是站点名称、评论、新建,右侧就是您好,用户名称和头像。那么我们是否可以在这个管理工具栏中添加一些一二级自定义菜单呢? 其实,我们想要在顶部管理工具栏中添加自定义菜单,只需要使

    2024年01月23日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包