IFreeOvO / i18n-cli

支持将vue、react项目里的中文替换成 i18n 国际化标记,并支持自动翻译的命令行工具
MIT License
131 stars 38 forks source link

fix: parse vue template as xml #108

Closed KennanChan closed 1 year ago

KennanChan commented 1 year ago

修改说明:在使用htmlparser2来解析template时,开启xmlMode,以实现更好的兼容性。

问题原因:下面这段template在原有情况下就会出问题

<Title title="我是标题">
    <template v-slot:right>
        <icon title="关闭" />
   </template>
</Title>

Title对应是一个Vue组件,htmlparser2默认采用html标准来解析,会导致Title组件被解析为html的title元素,而根据标准,title元素的内容只能是字符串,因此会导致Title组件内的任何其他内容,都被htmlparser2当做字符串来处理。

Vue的template实际上非常灵活,相比于当做html,它更符合xml标准,建议开启htmlparser2的xmlMode以确保更好的兼容性。

IFreeOvO commented 1 year ago

不能这样改。

  1. xml比html更严格(要求标签必须正确嵌套和关闭,不允许出现未定义的标签)
  2. 开发时需要避免组件用跟html标签一样的名字,这是开发vue时基本规范,按理说vue开发工具也会打印警告