当前位置: 首页 > news >正文

做网站需要投标吗semen

做网站需要投标吗,semen,网上公司注册,网站上滚动图片如何做Monaco-editor,一个vs code 编辑器,需要将其集成到项目。不说闲话了,直接上代码。 npm地址:https://www.npmjs.com/package/monaco-editor 中文文档:https://aydk.site/editor/ 安装: pnpm add monaco…

Monaco-editor,一个vs code 编辑器,需要将其集成到项目。不说闲话了,直接上代码。 

npm地址:https://www.npmjs.com/package/monaco-editor

中文文档:https://aydk.site/editor/

安装:

pnpm add monaco-editor -S
pnpm add vite-plugin-monaco-editor -D

配置: 

vite.config.ts

import { defineConfig} from 'vite'// vs code 编辑器配置
import monacoEditorPlugin from 'vite-plugin-monaco-editor'// https://vitejs.dev/config/
export default ({ mode }) => {return defineConfig({plugins: [monacoEditorPlugin({languageWorkers: ['editorWorkerService', 'typescript', 'json', 'html']})]})
}

封装: 

 首先先封装个hook如下:

@/hooks/useMonacoEditor.hook.ts 

import * as monaco from 'monaco-editor'
import useCommonStore from '@/store/common'
import { ref, nextTick, onBeforeUnmount } from 'vue'export function useMonacoEditor(language: string = 'javascript') {// 编辑器示例let monacoEditor: monaco.editor.IStandaloneCodeEditor | null = null// 目标元素const monacoEditorRef = ref<HTMLElement | null>(null)// 创建实例function createEditor(editorOption: monaco.editor.IStandaloneEditorConstructionOptions = {}) {if(!monacoEditorRef.value) returnmonacoEditor = monaco.editor.create(monacoEditorRef.value, {// 初始模型model: monaco.editor.createModel('', language),// 是否启用预览图minimap: { enabled: true },// 圆角roundedSelection: true,// 主题theme: useCommonStore().mode == 'dark' ? 'vs-dark' : 'vs',// 主键multiCursorModifier: 'ctrlCmd',// 滚动条scrollbar: {verticalScrollbarSize: 8,horizontalScrollbarSize: 8},// 行号lineNumbers: 'on',// tab大小tabSize: 2,//字体大小fontSize: 16,// 控制编辑器在用户键入、粘贴、移动或缩进行时是否应自动调整缩进autoIndent: 'advanced',// 自动布局automaticLayout: true,...editorOption})return monacoEditor}// 格式化async function formatDoc() {await monacoEditor?.getAction('editor.action.formatDocument')?.run()}// 数据更新function updateVal(val: string) {nextTick(() => {if(getOption(monaco.editor.EditorOption.readOnly)) {updateOptions({ readOnly: false })}monacoEditor?.setValue(val)setTimeout(async () => {await formatDoc()}, 10)})}// 配置更新function updateOptions(opt: monaco.editor.IStandaloneEditorConstructionOptions) {monacoEditor?.updateOptions(opt)}// 获取配置function getOption(name: monaco.editor.EditorOption) {return monacoEditor?.getOption(name)}// 获取实例function getEditor() {return monacoEditor}// 页面离开 销毁onBeforeUnmount(() => {if(monacoEditor) {monacoEditor.dispose()}})return {monacoEditorRef,createEditor,getEditor,updateVal,updateOptions,getOption,formatDoc}
}

然后调用上面 useMonacoEditor 封装editor编辑器组件

@/components/MonacoEditor/index.vue 

<template><div ref="monacoEditorRef" :style="monacoEditorStyle"></div>
</template>
<script setup lang="ts">
import { useMonacoEditor } from '@/hooks'
import { onMounted, computed, watch } from 'vue'const props = withDefaults(defineProps<{width?: string | number,height?: string | number,language?: string,editorOption?: Object,modelValue: string
}>(), {width: '100%',height: '100%',language: 'javascript',editorOption: () => ({}),modelValue: ''
})const emits = defineEmits<{(e: 'blue'): void,(e: 'update:modelValue', val: string): void
}>()const monacoEditorStyle = computed(() => {return { width: typeof props.width === 'string' ? props.width : props.width + 'px', height: typeof props.height === 'string' ? props.height : props.height + 'px'}
})const { monacoEditorRef, createEditor, updateVal, updateOptions, getEditor } = useMonacoEditor(props.language)onMounted(() => {const monacoEditor = createEditor(props.editorOption)updateMonacoVal(props.modelValue)monacoEditor?.onDidChangeModelContent(() => {emits('update:modelValue', monacoEditor!.getValue())})monacoEditor?.onDidBlurEditorText(() => {emits('blue')})
})watch(() => props.modelValue, () => {updateMonacoVal(props.modelValue)
})function updateMonacoVal(val: string) {if(val !== getEditor()?.getValue()) {updateVal(val)}
}defineExpose({ updateOptions })
</script>

组件使用: 

<div class="edit-container"><MonacoEditor ref="MonacoEditRef" v-model="editJson" language="json" />
</div>
<script setup lang="ts">
import MonacoEditor from '@/components/MonacoEditor/index.vue'
import { ref } from 'vue'let editJson = ref('')const MonacoEditRef = ref<InstanceType<typeof MonacoEditor>>()//MonacoEditRef.value!.updateOptions({ theme: 'vs' }) 调用子组件方法修改配置
</script>
http://www.zhongyajixie.com/news/13233.html

相关文章:

  • 如何做向日葵官方网站seo引擎优化是什
  • 做游戏下载网站赚钱全媒体运营师报名费多少钱
  • 字幕如何做模板下载网站百度百家号
  • 东莞市网站建设哪家好揭阳seo推广公司
  • 梅山建设局网站网站建设的意义和目的
  • 廊坊做网站优化推广优化网站排名教程
  • 淄赌博做网站中国人民银行网站
  • 广东手机网站制作电话营销型网站seo
  • drupal7建站教程2022年最新新闻播报稿件
  • 广州做网站网络公司微信小程序免费制作平台
  • 展示型网站重点爱站网关键字挖掘
  • qq外国注册网站推广代理公司
  • 网站源码和模板徐州seo建站
  • 连云港做网站制作国际最新新闻热点事件
  • 哈尔滨网站制作招聘沧州网站优化
  • 做网站首页置顶多少钱网络营销策划书1500字
  • php网站开发 多少钱网站seo内容优化
  • 做网站是域名怎么申请百度招聘平台
  • 连州住房建设局网站网站推广服务商
  • 企业网站托管趋势网络营销推广工具有哪些?
  • 做的网站怎样百度能搜到网站的宣传推广方式
  • 青海做网站公司福建企业seo推广
  • 河北爱站网络科技有限公司今天《新闻联播》回放
  • 上海企业扶持政策seo关键词怎么选择
  • 建设隔热网站流量精灵
  • 百度站长工具对seo的帮助8个公开大数据网站
  • 深圳西乡固戍招聘信息前端seo怎么优化
  • 大学网站建设排名上海百度推广排名
  • 佛山网站建设品牌seo网络推广公司排名
  • 做网站可以卖钱吗seo指的是搜索引擎营销