• vue.js3.x安装tinymce 5.8.2并应用(vue 3.0.5)


    一,tinymce在npm的代码地址:

    https://www.npmjs.com/package/@tinymce/tinymce-vue

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

    说明:作者:刘宏缔 邮箱: 371125307@qq.com

     

    二,tinymce的官方网站:

    https://www.tiny.cloud/tinymce/

    三,tinymce的安装命令

    liuhongdi@lhdpc:/data/vue/vue3index$ npm install tinymce @tinymce/tinymce-vue -S

    四,查看安装后的版本: 

    liuhongdi@lhdpc:/data/vue/vue3index$ npm list tinymce
    vue3login@0.1.0 /data/vue/vue3index
    └── tinymce@5.8.2
     
    liuhongdi@lhdpc:/data/vue/vue3index$ npm list @tinymce/tinymce-vue
    vue3login@0.1.0 /data/vue/vue3index
    └── @tinymce/tinymce-vue@4.0.4

    五,使用前的准备工作:

    1,在需要使用编辑器的目录下新建一个static目录:
        复制node_modules/tinymce/skins   复制到 static目录下
          
    2,从官网下载语言包,也保存到static目录下:
       地址:
    https://www.tiny.cloud/get-tiny/language-packages/
    选择chinese下载
    解压缩后,
    复制langs目录到static目录下:
    效果如图:

    六,写一个应用tinymce的demo

     
    <template>
      <div class="view_root">
    
      <!-- 新增公告弹窗 -->
    
        <el-form :model="addForm" ref="addNoticeForm" label-width="80px" label-position="right">
          <el-form-item label="用户" >
            <div>
              <el-checkbox-group v-model="checkboxGroup1" size="small">
                <el-checkbox v-for="staffone in staffs" :label="staffone.userid" :key="staffone.userid">{{staffone.nickname}}</el-checkbox>
              </el-checkbox-group>
            </div>
          </el-form-item>
          <el-form-item label="标题" prop="title">
            <el-input v-model="addForm.title" autocomplete="off" ></el-input>
          </el-form-item>
          <el-form-item label="内容" prop="content">
          <!--
            <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 8}" v-model="addForm.content" autocomplete="off" ></el-input>
          -->
    
            <editor v-model="addForm.content" :init="init"/>
    
          </el-form-item>
        </el-form>
        <div style="text-align: right;">
          <el-button @click="closeAddDialog">取 消</el-button>
          <el-button @click="saveAddNotice" type="primary">确 定</el-button>
        </div>
      </div>
    </template>
    <script>
    import {apiNoticeAdd,apiNoticeEdit} from "@/network/api";
    import {reactive, ref,onMounted} from "vue";
    import {ElMessage} from "element-plus";
    
    import tinymce from 'tinymce/tinymce'
    import Editor from '@tinymce/tinymce-vue'
    import 'tinymce/themes/silver/theme'; // 引用主题文件
    import 'tinymce/icons/default'; // 引用图标文件
    import "tinymce/plugins/image";
    import "tinymce/plugins/link";
    import "tinymce/plugins/code";
    import "tinymce/plugins/table";
    import "tinymce/plugins/lists";
    
    import "tinymce/plugins/print";
    import "tinymce/plugins/fullscreen";
    import "tinymce/plugins/preview";
    import "tinymce/plugins/codesample";
    import "tinymce/plugins/anchor";
    import "tinymce/plugins/pagebreak";
    import "tinymce/plugins/media";
    import "tinymce/plugins/insertdatetime";
    import "tinymce/plugins/emoticons";
    import "tinymce/plugins/hr";
    import "tinymce/plugins/searchreplace";
    
    export default {
    
      components: {
        'editor': Editor
      },
      setup() {
        //--------------------------------------tinymce begin
    
        const content = ref('');
        const init = {
          language_url: require("./static/langs/zh_CN.js"), // 中文语言包路径
          language: "zh_CN",
          skin_url: require("./static/skins/ui/oxide/skin.css"), // 编辑器皮肤样式
          height: 320,
          toolbar_mode: "none",
          plugins: 'image searchreplace link code table lists print preview fullscreen restoredraft codesample anchor pagebreak media insertdatetime emoticons hr', // 插件需要import进来
          toolbar1: 'undo redo cut copy paste searchreplace | styleselect fontselect fontsizeselect | lineheight forecolor backcolor bold italic underline strikethrough ',
          toolbar2:  'alignleft aligncenter alignright alignjustify outdent indent | removeformat subscript superscript | link image media insertdatetime emoticons anchor pagebreak hr blockquote  table numlist bullist codesample | code print preview fullscreen',
          content_style: "p {margin: 5px 0; font-size: 14px}",
          fontsize_formats: "12px 14px 16px 18px 24px 36px 48px 56px 72px",
          font_formats: "微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif;仿宋体=FangSong,serif;黑体=SimHei,sans-serif;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;",
          branding: false,
          elementpath: false,
          resize: false, // 禁止改变大小
          statusbar: false, // 隐藏底部状态栏
          menubar: 'file edit insert view format table',
          menu: {
            file: {title: 'File', items: 'newdocument restoredraft | preview | print'},
          },
    
        };
    
        //--------------------------------------tinymce end
    
        onMounted(() => {
          tinymce.init(); // 初始化
        })
    
        return {
          //-----------------------------tinymce begin
          content,
          init,
          //-----------------------------tinymce end
        }
      },
    }
    //display: none;
    </script>
    <style>
    .el-form-item {
      margin-bottom: 2px;
    }
    .hiddenInput {
      height: 160px;
      160px;
      background: #ff0000;
      opacity: 0.5;
      display: none;
    }
    .system_state {
      padding: 10px;
    }
    
    .demo-input-label {
      display: inline-block;
       130px;
    }
    </style>

    七,效果展示

    八,查看当前项目中vue.js的版本 

    liuhongdi@lhdpc:/data/vue/vue3index$ npm list vue
    vue3login@0.1.0 /data/vue/vue3index
    ├─┬ @tinymce/tinymce-vue@4.0.4
    │ └── vue@3.0.5 deduped
    ├─┬ @vue/cli-plugin-babel@4.5.9
    │ └─┬ @vue/babel-preset-app@4.5.9
    │   └── vue@3.0.5 deduped
    ├─┬ @vue/compiler-sfc@3.0.5
    │ └── vue@3.0.5 deduped
    ├─┬ element-plus@1.0.1-beta.20
    │ └── vue@3.0.5 deduped
    ├─┬ vue-router@4.0.2
    │ └── vue@3.0.5 deduped
    ├── vue@3.0.5
    ├─┬ vue3-count-to@1.0.10
    │ └── vue@3.0.5 deduped
    └─┬ vuex@4.0.0
      └── vue@3.0.5 deduped
     
    可以看到vue的版本是3.0.5 
  • 相关阅读:
    递归函数之阶乘和字符串反转-基于R和Python
    ERROR getting 'android:label' attribute: attribute is not a string value
    CefGlue 学习杂记
    WinDbg 解决Font.ToLogFont AccessViolationExcetion
    使用ActivityManager的forceStopPackage方法结束进程
    (转) lucene+paoding亲密接触
    (转)Lucene中文分词图解
    (转)实战 Lucene,第 1 部分: 初识 Lucene
    Python时间戳的使用
    Andriod中Style/Theme原理以及Activity界面文件选取过程浅析
  • 原文地址:https://www.cnblogs.com/architectforest/p/15134263.html
Copyright © 2020-2023  润新知