vue3中使用editor.js的详细步骤记录

 更新时间:2024年01月25日 16:19:24   作者:前端程序猿i  
富文本编辑器作为直接与用户交互的内容输入生产工具,对大家的项目来说非常重要,下面这篇文章主要给大家介绍了关于vue3中使用editor.js的详细步骤,需要的朋友可以参考下

第一步安装依赖

npm i @editorjs/editorjs --save

第二步创建editor.vue插件

<template>
  <div>
    <div id="editorjs" :style="'width:' + props.width + 'px;height:' + props.height + 'px;'"></div>
  </div>
</template>
<script setup>
// 标题(Header):用于设置文本的标题级别,支持多级标题。
// 段落(Paragraph):用于添加普通文本段落。
// 引用(Quote):用于添加引用文本块。
// 列表(List):支持有序列表和无序列表。
// 图像(Image):可以插入图片,并指定图片的来源、标题和描述等属性。
// 插入链接(Link):可以插入超链接,指定链接的URL、标题和打开方式等。
// 视频(Embed):可以插入媒体内容的外部嵌入代码或链接。
// 表格(Table):可以创建简单的表格,指定表格行数和列数。
// 代码(Code):用于插入代码块,支持多种编程语言的语法高亮。
// 内容警告(Warning):用于突出显示重要提示或警告。
// 勾选框(Checklist):用于创建待办事项列表,可以勾选完成状态。
// 分割线(Delimiter):用于在内容中插入水平分割线。
import EditorJS from '@editorjs/editorjs';
import Header from '@editorjs/header';
import List from '@editorjs/list';
import Paragraph from '@editorjs/paragraph';
import Quote from '@editorjs/quote';
import Image from '@editorjs/image';
import Embed from '@editorjs/embed';
import Table from '@editorjs/table';
import Code from '@editorjs/code';
import Delimiter from '@editorjs/delimiter';


import zh from './i18n.json'
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
const store = useStore()
const { ctx, proxy } = getCurrentInstance()
const emit = defineEmits(['update:modelValue'])
const props = defineProps({
  modelValue: {
    type: String,
    default: "",
  },
  width: {
    type: Number,
    default: 500,
  },
  height: {
    type: Number,
    default: 500,
  },
})
const editor = ref(null)

const saveEditor = () => {
  editor.value.save().then((outputData) => {
    console.log(outputData)
  }).catch((error) => {
    console.log(error)
  });
}
const { data } = toRefs(reactive({
  //定义数组和对象
  data: ''
}))
onMounted(() => {
  editor.value = new EditorJS({
    holder: 'editorjs',//应该包含编辑器的元素Id
    // autofocus: true,//自动获取焦点
    placeholder: '请输入内容',
    i18n: {
      messages: zh
    },
    logLevel: 'VERBOSE',//日志级别   VERBOSE显示所有消息(默认) INFO显示信息和调试消息 WARN只显示警告消息 ERROR只显示错误信息
    readOnly: false,//只读模式
    tools: {//工具列表
      header: {
        class: Header,
        inlineToolbar: ['link']
      },
      list: {
        class: List,
        inlineToolbar: true
      },
      paragraph: {
        class: Paragraph,
        inlineToolbar: true
      },
      quote: {
        class: Quote,
        inlineToolbar: true
      },
      // image: SimpleImage,
      image: {
        class: Image,
        inlineToolbar: true
      },
      embed: {
        class: Embed,
        inlineToolbar: true
      },
      table: {
        class: Table,
        inlineToolbar: true
      },
      code: {
        class: Code,
        inlineToolbar: true
      },
      delimiter: {
        class: Delimiter,
        inlineToolbar: true
      },
    },
    onReady: () => {
      console.log('Editor.js is ready to work!')
    },
  })
  console.log(editor.value);
})
// watch(propData,(newVal,oldVal)=>{})
defineExpose({ saveEditor })
</script>

<style scoped></style>

创建i18n翻译文件   i18n.json

{
  "ui": {
    "blockTunes": {
      "toggler": {
        "Click to tune": "点击调整",
        "or drag to move": "或者拖动移动"
      }
    },
    "inlineToolbar": {
      "converter": {
        "Convert to": "转换为"
      }
    },
    "toolbar": {
      "toolbox": {
        "Add": "添加"
      }
    }
  },
  "toolNames": {
    "Text": "文本",
    "Heading": "标题",
    "List": "列表",
    "Warning": "警告",
    "Checklist": "清单",
    "Quote": "引用",
    "Code": "代码",
    "Delimiter": "分隔符",
    "Raw HTML": "原始HTML",
    "Table": "表格",
    "Link": "链接",
    "Marker": "标记",
    "Bold": "加粗",
    "Italic": "斜体",
    "Image": "图片"
  },
  "tools": {
    "warning": {
      "Title": "标题",
      "Message": "消息"
    },
    "link": {
      "Add a link": "添加链接"
    },
    "stub": {
      "The block can not be displayed correctly.": "该块不能正确显示"
    }
  },
  "blockTunes": {
    "delete": {
      "Delete": "删除"
    },
    "moveUp": {
      "Move up": "向上移动"
    },
    "moveDown": {
      "Move down": "向下移动"
    }
  }
}

在页面引入组件

<template>
  <div class="editorBox">
    <editorJs ref="editorRef" :width="700" :height="1000" v-model="data"></editorJs>
    <el-button @click="save">保存</el-button>
  </div>
</template>
<script setup>
import editorJs from '@/components/Editor/editorJs'
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
const store = useStore()
const { ctx, proxy } = getCurrentInstance()
const emit = defineEmits(['update:modelValue'])
const props = defineProps({
  propData: {
    type: String,
    default: '',
  },
})
const { data } = toRefs(reactive({
  //定义数组和对象
  data: ''
}))
const editorRef = ref(null)//定义普通类型
function save() {
  editorRef.value.saveEditor()
}

// onMounted(() => {})
// watch(propData,(newVal,oldVal)=>{})
</script>

<style scoped>
.editorBox {
  padding: 40px;
  width: 700px;
  background-color: #fff;
  margin: 50px auto auto;
  box-shadow: 0 1px 4px rgba(0, 0, 0, .04), 0 4px 10px rgba(0, 0, 0, .08);
}
</style>

这只是一个简单的示例,具体配置请去官网Editor.js (editorjs.io)

 Editor.js 在其核心设计中不直接包含一个传统的“顶部工具栏”。它的设计理念是简洁、无干扰的用户体验,焦点是在“块”内容上,而非传统的富文本编辑器的样式。因此,Editor.js 的默认设置下,不会显示类似 Word 或其他传统编辑器的顶部工具栏。

说一下我的心得:

官方文档对中文及其不友好,不建议使用这个编辑器,除非你有大量时间来开发研究

Editor.js 是一个用于构建具有完全可定制化块结构的现代编辑器的开源库。它提供了一个简洁、可扩展和易于使用的接口,使开发人员能够创建拥有丰富内容和互动性的编辑器。

以下是一些 Editor.js 的特点和优势:

  • 块结构:Editor.js 采用了块结构的概念,将内容分解为可独立操作和样式化的不同块,如段落、标题、图像、列表等。这种结构使得对内容的编辑和扩展变得更加直观和灵活。

  • 嵌套块:不仅可以创建单一块的内容,还可以在块内部创建嵌套结构,构建复杂的内容组合。例如,你可以在段落块中嵌套标题、列表或引用块等。

  • 简洁的用户界面:Editor.js 的用户界面被设计成简洁、直观且易于使用。用户可以通过简单的操作来创建、编辑和删除块,不需要关注复杂的标记语法或样式细节。

  • 开放的插件系统:Editor.js 提供了一个强大的插件系统,允许开发人员创建自定义块类型和扩展编辑器功能。你可以根据需要编写自己的块插件,并将其集成到编辑器中,以满足特定的编辑需求。

  • 丰富的内容保存:Editor.js 使用 JSON 格式保存编辑器的内容。这种格式简单易懂,便于存储和传输,同时保留了块结构和样式的信息。你可以将编辑器的内容保存到数据库中,然后在需要时重新加载。

  • 可扩展的主题和样式:Editor.js 的外观和样式可以根据你的品牌和设计需求进行定制。你可以创建自己的主题或使用现有的主题来改变编辑器的外观。

  • 多语言支持:Editor.js 支持多种语言,可以轻松地切换编辑器的显示语言或自定义特定术语的翻译。

总而言之,Editor.js 是一个功能强大、灵活且易于使用的编辑器库,适用于构建各种应用程序中的富文本编辑功能,如内容管理系统、博客平台、电子商务平台等。它提供了现代化的编辑体验,同时让开发人员能够自由定制编辑器以满足个性化需求。

总结

到此这篇关于vue3中使用editor.js的文章就介绍到这了,更多相关vue3使用editor.js内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vant picker选择器设置默认值导致选择器失效的解决

    Vant picker选择器设置默认值导致选择器失效的解决

    这篇文章主要介绍了Vant picker选择器设置默认值导致选择器失效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Vue3 封装扩展并简化Vuex在组件中的调用问题

    Vue3 封装扩展并简化Vuex在组件中的调用问题

    这篇文章主要介绍了Vue3 封装扩展并简化Vuex在组件中的调用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • Vue给 elementUI 中的 this.$confirm、this.$alert、 this.$prompt添加按钮加载效果

    Vue给 elementUI 中的 this.$confirm、this.$alert、 this.$promp

    这篇文章主要介绍了Vue给 elementUI 中的 this.$confirm、this.$alert、 this.$prompt添加按钮的加载效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Vue form表单动态添加组件实战案例

    Vue form表单动态添加组件实战案例

    这篇文章主要介绍了Vue form表单动态添加组件实战案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • vue使用vue-json-viewer展示JSON数据的详细步骤

    vue使用vue-json-viewer展示JSON数据的详细步骤

    最近在开发一个公司的投放管理系统的操作日志模块,要查看某条操作日志的请求参数,要将请求的参数以JSON格式的形式展示出来,下面这篇文章主要给大家介绍了vue使用vue-json-viewer展示JSON数据的相关资料,需要的朋友可以参考下
    2022-09-09
  • 如何使用JS监听一个变量改变

    如何使用JS监听一个变量改变

    在JS编程中如果能监测变量的内容,当变量值发生变化时,实时发出通知,这定是一项很有用的功能,下面这篇文章主要给大家介绍了关于如何使用JS监听一个变量改变的相关资料,需要的朋友可以参考下
    2023-05-05
  • vue为自定义路径设置别名的方法

    vue为自定义路径设置别名的方法

    这篇文章介绍了vue为自定义路径设置别名的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • Vue中父子组件的值传递与方法传递

    Vue中父子组件的值传递与方法传递

    这篇文章主要介绍了Vue中父子组件的值传递与方法传递,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • VUE学习宝典之el-dialog使用示例

    VUE学习宝典之el-dialog使用示例

    在我工作过程中使用el-dialog的需求挺多的,也积累了一下使用技巧,这篇文章主要给大家介绍了关于VUE学习宝典之el-dialog使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • 使用vue-cli脚手架工具搭建vue-webpack项目

    使用vue-cli脚手架工具搭建vue-webpack项目

    这篇文章主要介绍了使用vue-cli脚手架工具搭建vue-webpack项目,通过几个默认的步骤帮助你快速的构建Vue.js项目。非常具有实用价值,需要的朋友可以参考下
    2019-01-01

最新评论