l***@21cn.com
l***@21cn.com
  • 发布:2023-12-25 10:16
  • 更新:2023-12-25 17:49
  • 阅读:77

在vue.config.js中使用preTransformNode获取不到文本怎么回事?

分类:uni-app
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,获取不到,是使用的姿势不对吗?

2023-12-25 10:16 负责人:无 分享
已邀请:
DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

我想尝试复现你的问题,里面有一些 class i18n 等逻辑,能提供一个 template 方便测试吗。

l***@21cn.com

l***@21cn.com (作者)

<template>  
  <view class="container">  
    <view class="abc i18n">Hello</view>  
    <view class="abc i18n">Hello %s, [name]</view>  
    <view class="i18n">{{name}}</view>  
  </view>  
</template>

@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

要回复问题请先登录注册