You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在petite-vue中配置全局模板分隔符,支持v-scope场景生效?

Petite-vue自定义模板分隔符实现方案

Petite-vue默认没有暴露delimiters配置项,插值分隔符的匹配逻辑硬编码在模板解析模块中,可通过以下两种方式实现全局自定义分隔符,同时兼容v-scope场景:

方案1:修改源码重新打包(稳定性最高)

  • 拉取petite-vue官方源码,找到src/parse.ts文件
  • 替换文件中默认的插值正则/{{([\s\S]+?)}}/g为自定义分隔符对应的正则,例如要改为${}格式,正则修改为/\$\{([\s\S]+?)\}/g(特殊符号需加转义符)
  • 重新打包生成新的petite-vue产物,所有场景包括v-scope内的插值都会自动使用新的分隔符

方案2:运行时动态Patch(无需修改源码、无需重新打包)

在初始化petite-vue前插入以下代码,直接修改解析逻辑实现全局配置:

// NPM引入方式
import * as PetiteVue from 'petite-vue'

// CDN引入方式可直接替换为 window.PetiteVue
const originalParse = PetiteVue.parse
PetiteVue.parse = (template) => {
  // 自定义分隔符配置,可根据需求修改
  const [start, end] = ['${', '}']
  // 自动转义正则特殊字符
  const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
  const customDelimiterRE = new RegExp(`${escapeRegExp(start)}([\\s\\S]+?)${escapeRegExp(end)}`, 'g')
  
  // 替换模板中所有自定义分隔符为默认{{}}格式,复用原有解析逻辑
  template = template.replace(customDelimiterRE, (_, exp) => `{{${exp.trim()}}}`)
  // 兼容v-scope属性中的自定义分隔符
  template = template.replace(new RegExp(`v-scope="${escapeRegExp(start)}([^${escapeRegExp(end.slice(-1))}]+)${escapeRegExp(end)}"`,'g'), (_, exp) => `v-scope="{{${exp.trim()}}}"`)

  return originalParse(template)
}

// 正常初始化应用
PetiteVue.createApp().mount()

配置说明

  • 只需修改[start, end]数组的值即可自定义任意分隔符,无需手动处理正则转义逻辑
  • 若需要同时保留默认{{}}分隔符,删除正则替换相关逻辑即可同时兼容两种分隔符格式

内容的提问来源于stack exchange,提问作者Dawid M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:36:03