module.exports = {
chainWebpack: config => {
config.module.rule('vue').use('vue-loader').loader('vue-loader').tap(options => {
options.compilerOptions.modules.push({
preTransformNode: (el, options) => {
const hasI18nClass = el.attrsList && el.attrsList.some(attr => attr.name === 'class' && attr.value.includes('i18n'));
const textNode = el.children && el.children.find(child => child.type === 3);
// 获取不到文本信息
return el;
}
});
return options
})
}
}
要获取<view>text</view>中的text,获取不到,是使用的姿势不对吗?
2 个回复
DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信
我想尝试复现你的问题,里面有一些 class i18n 等逻辑,能提供一个 template 方便测试吗。
l***@21cn.com (作者)
@DCloud_UNI_OttoJi
需要获取标签里的文本,比如Hello等,但preTransformNode: (el, options)中的el并没有包含文本数据,很奇怪,应该如何弄?
DCloud_UNI_OttoJi
不是很熟悉 preTransformNode 的用法,试了下,默认情况下的确看不到 text 信息,这个是什么 api,有文档么。
2023-12-26 10:28
DCloud_UNI_OttoJi
我不熟悉这个 api,从 loader 方案上看,也可以考虑,在 loader 中对 source 使用 Cheerio 包装。
2023-12-26 10:34
l***@21cn.com (作者)
回复 DCloud_UNI_OttoJi: 改成options.compiler.compile来实现了,只是感觉不太好。
2023-12-26 17:24