feat(template-explorer): add vapor option

This commit is contained in:
三咲智子 Kevin Deng 2024-06-20 19:11:01 +08:00
parent be6a2d1d35
commit aa5fe96d17
No known key found for this signature in database
2 changed files with 22 additions and 2 deletions

View File

@ -1,6 +1,10 @@
import type * as m from 'monaco-editor' import type * as m from 'monaco-editor'
import type { CompilerError } from '@vue/compiler-dom' import type { CompilerError } from '@vue/compiler-dom'
import { type CompilerOptions, compile } from '@vue/compiler-vapor' import { compile } from '@vue/compiler-dom'
import {
type CompilerOptions,
compile as vaporCompile,
} from '@vue/compiler-vapor'
// import { compile as ssrCompile } from '@vue/compiler-ssr' // import { compile as ssrCompile } from '@vue/compiler-ssr'
import { import {
@ -8,6 +12,7 @@ import {
defaultOptions, defaultOptions,
initOptions, initOptions,
ssrMode, ssrMode,
vaporMode,
} from './options' } from './options'
import { toRaw, watchEffect } from '@vue/runtime-dom' import { toRaw, watchEffect } from '@vue/runtime-dom'
import { SourceMapConsumer } from 'source-map-js' import { SourceMapConsumer } from 'source-map-js'
@ -75,7 +80,9 @@ window.init = () => {
console.clear() console.clear()
try { try {
const errors: CompilerError[] = [] const errors: CompilerError[] = []
const compileFn = /* ssrMode.value ? ssrCompile : */ compile const compileFn = /* ssrMode.value ? ssrCompile : */ (
vaporMode.value ? vaporCompile : compile
) as typeof vaporCompile
const start = performance.now() const start = performance.now()
const { code, ast, map } = compileFn(source, { const { code, ast, map } = compileFn(source, {
...compilerOptions, ...compilerOptions,

View File

@ -3,6 +3,7 @@ import type { CompilerOptions } from '@vue/compiler-vapor'
import { BindingTypes } from '@vue/compiler-core' import { BindingTypes } from '@vue/compiler-core'
export const ssrMode = ref(false) export const ssrMode = ref(false)
export const vaporMode = ref(true)
export const defaultOptions: CompilerOptions = { export const defaultOptions: CompilerOptions = {
mode: 'module', mode: 'module',
@ -222,6 +223,18 @@ const App = {
}), }),
h('label', { for: 'compat' }, 'v2 compat mode'), h('label', { for: 'compat' }, 'v2 compat mode'),
]), ]),
h('li', [
h('input', {
type: 'checkbox',
id: 'vapor',
checked: vaporMode.value,
onChange(e: Event) {
vaporMode.value = (e.target as HTMLInputElement).checked
},
}),
h('label', { for: 'vapor' }, 'vapor'),
]),
]), ]),
]), ]),
] ]