小程序展示富文本

2019-08-06 15:30:08

直接用rich-text就可以,然后稍作css修饰

一开始,看文档以为所有的原生html都要转换成nodes的数组,然后循环展示。我还特地研究了怎么从服务器进行转成nodes这样的结构,所以就用到了Html2Wxml2J,研究了好大半天呢,整体不错,效果也很理想,配合小程序前端模板,能在他生成的标签或者class上面修改样式,来符合手机端的实用。

既然rich-text能直接渲染原生html,我看应该是其内部进行了nodes处理,既然能支持原生,我觉得没有必要用html2wxml2j,除非有特别的需求,我们再可以定制。

然而rich-text有个问题,它不能够给内联img设置宽度100%,这样图片就容易溢出屏幕。我们只能在后台返回富文本的时候对图片的img标签进行格式化。或者前端进行格式化也行,我赞成使用后端,因为很多种情况我们不一定都能想得到。


代码参考如下,但也要根据具体情况进行分析。

    前端代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
<rich-text nodes="{{detail_tb}}">
</rich-text>
这个是wxml里<rich-text>富文本
 
 
 
这个写在js里:
var _that =this;
 
_that.setData({
detail_tb: res.data.replace(/\<img/gi, '<img style="max-width:100%;height:auto" '),
})
重点是横线的部分res.data是我从后台获取放在rich-text里的数据


后端正则如下


Java正则表达式 (<img.*?)style=\".*?\"  替换成 $1

其中.*表示0个或0以上多个任意字符

.*?表示0个或0以上多个任意字符的非贪婪匹配,就是假如一个句子中有多个style,它匹配距离最近的那个style,同理后面的.*?匹配距离最近的双引号

$1表示反向引用,它代表的是正则表达式中的第一个小括号所括起来的分组的内容,如果有两个小括号括起来的内容,则分别用$1,$2表示它们(在替换后的字符串中)

完整的Java程序如下

1
2
3
4
5
6
public class CC {
 public static void main(String[] args) {
  String s="<img src=\"file/img/2016/12-28/1234-25521482893088459.jpg\"  title=\"1234.jpg\" alt=\"\" width=\"396\" height=\"271\" style=\"width: 396px; height: 271px;\"/>";
  System.out.println(s.replaceAll("(<img.*?)style=\".*?\"""$1"));
 }
}


1
2
3
4
5
6
public class CC {
 public static void main(String[] args) {
  String s="<img src=\"file/img/2016/12-28/1234-25521482893088459.jpg\"  title=\"1234.jpg\" alt=\"\" width=\"396\" height=\"271\" style=\"width: 396px; height: 271px;\"/>";
  System.out.println(s.replaceAll("(<img.*?)style=\".*?\"""$1"));
 }
}

运行结果

<img src="file/img/2016/12-28/1234-25521482893088459.jpg"  title="1234.jpg" alt="" width="396" height="271" />


  • 2020-11-17 10:13:16

    Vue.observable()进行状态管理

    随着组件的细化,就会遇到多组件状态共享的情况, Vuex当然可以解决这类问题,不过就像 Vuex官方文档所说的,如果应用不够大,为避免代码繁琐冗余,最好不要使用它,今天我们介绍的是 vue.js 2.6 新增加的 Observable API ,通过使用这个 api 我们可以应对一些简单的跨组件数据状态共享的情况。

  • 2020-11-17 10:17:18

    MongoDB日志文件查看

    默认情况下,MongoDB在此路径/var/log/mongodb/mongodb.log创建日志文件,如果找不到该日志文件,请检查MongoDB配置文件。

  • 2020-11-17 11:57:16

    app抓包无数据

    我们经常在wifi设置中 设置代理到我们的pc http代理软件上,多数情况下,此时我们开启的app流量都可以在代理软件上看到,比如charles , fiddler等等。 但是细心的人会发现 某些大厂的app 某些请求 在这些 http代理软件上就是抓不到, 给人的感觉就是 流量没从代理软件走一样。

  • 2020-11-17 11:57:55

    app抓不到包,解决很简单

    1.手机安装virtualXpost 并激活xpost 框架,如有问题自行百度。 2.安装justTrustMe,然后再virtualXpost中添加此模块 3.安装手机抓包神器packet capture 4.在virtualXpost中运行app,并打开packet capture抓包就行

  • 2020-11-17 16:50:16

    JS常见加密混淆方式

    目录 前端js常见混淆加密保护方式 eval方法等字符串参数 emscripten WebAssembly js混淆实现 JSFuck AAEncode JJEncode 代码压缩 变量名混淆 字符串混淆 自我保护,比如卡死浏览器 控制流平坦化 僵尸代码注入 对象键名替换 禁用控制台输出 调试保护,比如无限Debug,定时Debug 域名锁定

  • 2020-11-17 17:08:28

    用js编写WebAssembly ,WebAssembly 现状与实战

    自从 JavaScript 诞生起到现在已经变成最流行的编程语言,这背后正是 Web 的发展所推动的。Web 应用变得更多更复杂,但这也渐渐暴露出了 JavaScript 的问题:

  • 2020-11-17 17:28:06

    AssemblyScript 开发WebAssembly 教程

    WebAssembly 以及通过 AssemblyScript 的扩展,不会使每个网站都神奇地变得更快,但是这并不重要。 WebAssembly 之所以令人兴奋,是因为它可以使更多的应用在 Web 变得中可行。