doc-note 可编辑的语法高亮vue2组件 highlight

doc-note是基于prismjs开发的语法高亮vue2组件, 支持编辑和提交.

vue3版doc-note -> 请看 um-note

点击这里下载 开发源码&完整demo

效果预览:




-- 基本用法 --


- 下载依赖

npm i doc-note -S

-   注册组件

// main.js
import { DocNote, DocNoteConfig } from 'doc-note'

// DocNoteConfig是doc-note组件的配置方法, 相当于初始化方法, 必须在Vue.use(DocNote)之前执行.
DocNoteConfig()

Vue.use(DocNote)

* DocNoteConfig 配置

-   .vue文件中使用

<template>
  <doc-note :codes="code"/>
</template>
export default {
  data() {
    return {
      code: `const helloWord = 'Hello, doc-note!'`
    }
  }
}

-- props --


参数说明类型默认值
width组件的宽度. *必须带单位.string‘100%’
height组件的高度. *必须带单位.string‘auto’
editable是否开启可编辑功能. 如果editable的值是false, 则隐藏组件右上角的编辑开关.booleanfalse
foldable是否开启折叠功能. 如果foldable的值是false, 则unfold属性将失效, 组件将保持展开状态.booleantrue
unfold是否默认展开组件.booleanfalse
*codes需要展示的代码. 查看属性codes的格式.string | object | array[]
language组件的默认语言.string‘javascript’

-- event --


名称说明回调参数回调参数类型回调参数说明
submit组件提交操作时的回调函数. 完整示例demosubmitInfoobject当前提交的内容信息和初始化编辑状态方法.

--- codes的格式 ---

类型格式示例
string-`const value = ‘Hello Word!’`
object{
    language:  [ string | 可选 | 默认: ‘javascript’ ],
    code:  [ string | 可选 | 默认: ‘’ ]
}
{
    language:  ‘javascript’,
    code:  `const value = ‘Hello Word!’`
}
array[
    {
        language:  [ string | 可选 | 默认: ‘javascript’ ],
        code:  [ string | 可选 | 默认: ‘’ ]
    },
    …
]
[
    {
        language:  ‘html’,
        code:  `<div>{{ msg }}<div>`
    },
    {
        language:  ‘javascript’,
        code:  `const msg = ‘Hello Word!’`
    },
    …
]

--- submitInfo ---

submitInfo的属性类型说明
dataarray需要提交的数据. [
    {
        code : [ 原始展示用代码 | string ],
        language : [ 实际代码语言 | string ],
        processedCode : [ prismjs处理过的代码 | string ],
        showingLanguage : [ 展示的语言 | string ]
    },
    …
]
closefunction初始化组件的编辑状态为’未编辑’状态.

-- DocNoteConfig 配置 --   [完整DocNoteConfig示例]

- DocNoteConfig     * DocNoteConfig必须在组件挂载之前被调用

名称类型功能回调参数回调参数类型回调参数说明
DocNoteConfigfunction配置doc-note的主题、支持语言、权限等.ConfigureobjectDocNoteConfig方法的配置对象

--- Configure ---

Configure的属性类型功能默认值回调参数回调参数类型回调参数说明
themestring配置doc-note的主题. [所有主题]. [示例].‘default’---
languagesarray配置doc-note支持的语言. [所有可被支持的语言]. [示例][‘html’, ‘javascript’, ‘css’]---
contentNamesobject配置doc-note中删除代码块弹框中的相关文字描述. [示例]undefined---
editConfigurefunction配置doc-note中的编辑权限. [示例]undefinednextfunction继续下一步.
addConfigurefunction配置doc-note中添加代码块权限. [示例]undefinednextfunction继续下一步.
removeConfigurefunction配置doc-note中删除代码块权限. [示例]undefinednextfunction继续下一步.
submitConfigurefunction配置doc-note中的提交权限. [示例]undefinednextfunction继续下一步.

$ - 配置示例

       - 配置主题

              - 所有支持的主题
// 本组件一共可支持8中主题, 分别是: 'default', 'coy', 'dark', 'funky', 'okaidia', 'solarizedlight', 'tomorrow', 'twilight'
// 可通过全局属性Prism.allThemes来获取所有支持的主题
console.log(Prism.allThemes) // ['default', 'coy', 'dark', 'funky', 'okaidia', 'solarizedlight', 'tomorrow', 'twilight']
              - 主题配置示例
DocNoteConfig({
  theme: 'okaidia'
})
-> 主题预览


       - 配置语言

              - 所有支持的语言
// 本组件一共可支持270+种语言
// 可通过全局属性Prism.allLanguages来获取所有支持的语言
console.log(Prism.allLanguages) // ['html', 'javascript', 'css', ...]

// 可通过全局方法Prism.hasLanguage来判断某种语言是否被支持
/**
 * 检测语言是否被支持
 * 
 * @param {String} 被检测的语言字符串
 * 
 * @returns {Boolean} 
 */
console.log(Prism.hasLanguage('html')) // true
              - 语言配置示例
DocNoteConfig({
  languages: ['html', 'javascript', 'css', 'c++', 'ASP.NET (C#)']
})



       - 配置删除文本


DocNoteConfig({
  contentNames: {
    cancel: 'cancel', // 取消按钮展示文本
    confirm: 'done', // 确定按钮展示文本
    explain: 'Are you sure to delete??', // 删除弹框内容展示文本
  }
})



       - 配置编辑权限


DocNoteConfig({
  // 如果不想配置edit权限, 请不要设置editConfigure, 或者在editConfigure内部直接调用next()方法
  editConfigure (next) {
    if (store.getters.isLogin) { // 如果用户已登录
      next() // 继续下一步
    } else {
      alert(`You don't have permission! Please log in first!!!`)
    }
  }
})


       - 配置添加权限


DocNoteConfig({
  // 如果不想配置add权限, 请不要设置addConfigure, 或者在addConfigure内部直接调用next()方法
  addConfigure (next) {
    if (store.getters.isLogin) { // 如果用户已登录
      next() // 继续下一步
    } else {
      alert(`You don't have permission! Please log in first!!!`)
    }
  }
})


       - 配置删除权限


DocNoteConfig({
  // 如果不想配置remove权限, 请不要设置removeConfigure, 或者在removeConfigure内部直接调用next()方法
  removeConfigure (next) {
    if (store.getters.isLogin) { // 如果用户已登录
      next() // 继续下一步
    } else {
      alert(`You don't have permission! Please log in first!!!`)
    }
  }
})


       - 配置提交权限


DocNoteConfig({
  // 如果不想配置submit权限, 请不要设置submitConfigure, 或者在submitConfigure内部直接调用next()方法
  submitConfigure (next) {
    if (store.getters.isLogin) { // 如果用户已登录
      next() // 继续下一步
    } else {
      alert(`You don't have permission! Please log in first!!!`)
    }
  }
})


       - 完整DocNoteConfig配置


DocNoteConfig({
  /**
   * 权限配置-使页面可被编辑
   * 
   * @param {Function} next 继续下一步
   */
  editConfigure (next) { // 如果不想配置edit权限, 请不要设置editConfigure, 或者在editConfigure内部直接调用next()方法
    if (store.getters.isLogin) { // 如果用户已登录
      next()
    } else {
      alert(`Oh, no! You don't have 'edit' permission! Please log in first!!!`)
    }
  },
  /**
   * 权限配置-添加代码块
   * 
   * @param {Function} next 继续下一步
   */
  addConfigure (next) { // 如果不想配置add权限, 请不要设置addConfigure, 或者在addConfigure内部直接调用next()方法
    if (store.getters.isLogin) {
      next()
    } else {
      alert(`Oh, no! You don't have 'add' permission! Please log in first!!!`)
    }
  },
  /**
   * 权限配置-删除代码块
   * 
   * @param {Function} next 继续下一步
   */
  removeConfigure (next) { // 如果不想配置remove权限, 请不要设置removeConfigure, 或者在removeConfigure内部直接调用next()方法
    if (store.getters.isLogin) {
      next()
    } else {
      alert(`Oh, no! You don't have 'remove' permission! Please log in first!!!`)
    }
  },
  /**
   * 权限配置-确认编辑的代码
   * 
   * @param {Function} next 继续下一步
   */
  submitConfigure (next) { // 如果不想配置submit权限, 请不要设置submitConfigure, 或者在submitConfigure内部直接调用next()方法
    if (store.getters.isLogin) {
      next()
    } else {
      alert(`Oh, no! You don't have 'submit' permission! Please log in first!!!`)
    }
  },
  /**
   * 配置删除代码块弹框内的文字描述
   * 
   * {Object} contentNames
   * {String} contentNames.cancel 取消按钮描述
   * {String} contentNames.confirm 确定按钮描述
   * {String} contentNames.explain 弹框内容描述
   */
  contentNames: {
    cancel: '取消',
    confirm: '确定',
    explain: '确定删除?',
  },
  /**
   * 配置添加代码块时可选择的语言
   * 
   * {Array} languages
   * 你可以通过 console.log(Prism.allLanguages) 打印出所有被支持的语言, 返回一个数组
   * 你可以通过 console.log(Prism.hasLanguage(<languageName>)) 打印出 <languageName> 语言是否被支持, 返回 true 或 false
   */
  languages: ['html', 'javascript', 'css', 'c++', 'ASP.NET (C#)'],
  /**
   * 配置主题
   * 
   * {String} theme
   * 可配置主题一共有8种: ['default', 'coy', 'dark', 'funky', 'okaidia', 'solarizedlight', 'tomorrow', 'twilight']
   */
  theme: 'default',
})

主题预览:

----------------------------------------- default: ↓↓↓↓↓↓↓↓↓↓

----------------------------------------- coy: ↓↓↓↓↓↓↓↓↓↓

----------------------------------------- dark: ↓↓↓↓↓↓↓↓↓↓

----------------------------------------- funky: ↓↓↓↓↓↓↓↓↓↓

----------------------------------------- okaidia: ↓↓↓↓↓↓↓↓↓↓

----------------------------------------- solarizedlight: ↓↓↓↓↓↓↓↓↓↓

----------------------------------------- tomorrow: ↓↓↓↓↓↓↓↓↓↓

----------------------------------------- twilight: ↓↓↓↓↓↓↓↓↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值