uni-app文章详情-富文本展示 优雅展示代码块

在uni-app开发中,开发一个资讯详情页面,详情里包含图片和代码块。这时候用简单的rich-text控件已经不够用了。用官方demo里的html-parser.js也无法很好的展示代码区域。这个时候就要使用官方提供的插件来解决。

首先:下载插件:https://ext.dcloud.net.cn/plugin?id=183

第二步:写代码 demo示例

注意:官方提供的示例代码有点小问题,请用我下面的代码。

<template>
  <div>
    <u-parse :content="article" @preview="preview" @navigate="navigate" />
  </div>
</template>
 
<script>
import uParse from ‘../../components/u-parse/u-parse.vue‘;  //注意:官方提供的示例代码有问题
 
export default {
  components: {
    uParse
  },
  data () {
    return {
      article: ‘<div>我是HTML代码</div>‘
    }
  },
  methods: {
    preview(src, e) {
      // do something
    },
    navigate(href, e) {
      // do something
    }
  }
}
</script>
 
<style>
@import url("../../components/u-parse/u-parse.css");  //注意:官方提供的示例代码有问题
</style>

我这边具体的业务代码如下:(可以忽略)

<template>
    <view>
        <view class="banner">
            {{banner.title}}
        </view>

        <view class="article-meta">
            <text class="article-meta-text article-author">{{banner.source}}</text>
            <text class="article-meta-text article-text">发表于</text>
            <text class="article-meta-text article-time">{{banner.datetime}}</text>
        </view>
        <view class="article-content">
            <div>
                <u-parse :content="article" @preview="preview" @navigate="navigate" />
            </div>
        </view>
        <view class="comment-wrap"></view>
    </view>
</template>

<script>
    import uParse from ‘../../components/u-parse/u-parse.vue‘;

    const FAIL_CONTENT = ‘<p>获取信息失败1</p>‘;
    export default {
        components: {
            uParse
        },
        data() {
            return {

                banner: {},
                article: ‘‘
            }
        },
        onShareAppMessage() {
            return {
                title: this.banner.title,
                path: ‘/pages/detail/detail?query=‘ + JSON.stringify(this.banner)
            }
        },
        onLoad(event) {
            // 目前在某些平台参数会被主动 decode,暂时这样处理。
            try {

                this.banner = JSON.parse(decodeURIComponent(event.query));
                console.log("详情页面");

            } catch (error) {
                    console.log("异常来!");
                this.banner = JSON.parse(event.query);

            }

            uni.setNavigationBarTitle({
                title: ‘找一找教程网zyiz.net‘
            });

            this.getDetail();
        },
        methods: {
            getDetail() {

                var zyizurl = getApp().globalData.zyiz_domain + ‘/api/article/article.ashx?actName=detail&id=‘;

                uni.request({
                    url: zyizurl + this.banner.newsid,
                    success: (result) => {
                        console.log("详情结果:");
                        console.log(result);
                        let content = FAIL_CONTENT
                        if (result.statusCode == 200) {
                            content = result.data.data.content
                        }
                        this.article = content;

                    }
                });
            },
            preview(src, e) {
                // do something
            },
            navigate(href, e) {
                // do something
            }
        }
    }
</script>

<style>
    @import url("../../components/u-parse/u-parse.css");

    /* #ifndef APP-PLUS */
    page {
        min-height: 100%;
    }

    /* #endif */

    .banner {
        margin: 10upx;
        text-align: center;

    }

    .article-content image {
        width: 96%;

    }

    .banner-img {
        flex: 1;
    }

    .title-area {
        position: absolute;
        left: 30upx;
        right: 30upx;
        bottom: 30upx;
        z-index: 11;
    }

    .title-text {
        font-size: 32upx;
        font-weight: 400;
        line-height: 42upx;
        lines: 2;
        color: #ffffff;
        overflow: hidden;
    }

    .article-meta {
        padding: 20upx 30upx;
        flex-direction: row;
        align-items: center;
        justify-content: flex-start;
    }

    .article-meta-text {
        color: gray;
    }

    .article-text {
        font-size: 26upx;
        line-height: 50upx;
        margin: 0 20upx;
    }

    .article-author {
        font-size: 30upx;
    }

    .article-time {
        font-size: 30upx;
    }

    .article-content {
        font-size: 30upx;
        padding: 0 30upx;
        margin-bottom: 30upx;
        overflow: hidden;
    }
</style>

第三步:查看效果:

1、微信小程序的效

2、百度小程序的效果:

非常完美的解决了问题。

文章根据:http://www.zyiz.net/tech/detail-104163.html 改编。

原文地址:https://www.cnblogs.com/puzi0315/p/12271673.html

时间: 2024-10-01 11:04:21

uni-app文章详情-富文本展示 优雅展示代码块的相关文章

BBS第四天之文章详情,点赞点踩,根子评论,后台展示,文章添加(富文本编辑器)

一.文章详情 路由url.py: url(r'^(?P<username>\w+)/article/(?P<pk>\d+)$', views.article_detail), 点击个人站点文章title即可关联到文章详情路由找到其视图函数 views.py: def article_detail(request,username,pk): user = models.UserInfo.objects.filter(username=username).first() if not

富文本编辑器 - wangEditor 插入代码

效果: 项目结构: 注意事项: highlightJS 代码高亮插件,wangEditor 本身就是集成的highlightJS代码高亮插件. 在wangEditor-1.3.12.js里找到var hashljs = flase,把它改成var hashljs = true,然后引入JS和css. 调整代码的字体和大小: 代码: 原始连接: http://www.sojson.com/blog/36 http://www.kancloud.cn/wangfupeng/wangeditor/65

Django 中文乱码问题&amp;富文本显示

1.起源:从后台管理添加中文对象,正常,但是再次点击编辑的时候,抛出异常,显示编码问题. 解决:在项目的manage.py 的文件头部添加  import sys  reload(sys)  sys.setdefaultencoding('utf8') 确认有效. 2.正常富文本连着标签内容一起显示出来,需要将富文本放入如下代码中,就可以显示富文本效果了: {% autoescape off %} {{post.content}} {% endautoescape %}

用weexplus从0到1写一个app(2)-页面跳转和文章列表及文章详情的编写

说明 结束连续几天的加班,最近的项目终于告一段落,今天抽点时间开始继续写我这篇拖了很久的<用weexplus从0到1写一个app>系列文章.写这篇文章的时候,weexplus的作者已经把weexplus重构了一下,可以同时打包出web端和native端,我这边的ui界面和项目结构也跟着做了一点变化.这里有weexplus官方放出的一个电影APP的demo,有需要的可以去下载看看,然后顺便给weexplus一个star吧! 文章可能会很长,在此分几篇文章来写,先占个坑: 用weexplus从0到

BBS(仿博客园系统)项目05(后台管理功能实现:文章添加、富文本编辑器使用、xss攻击、BeautifulSoup4模块、富文本编辑器上传图片、修改头像)

摘要 布局框架搭建 随笔添加 后台管理富文本编辑器KindEditor xss攻击 文章简介的截取,BeautifulSoup4模块 富文本编辑器上传图片 头像修改 一.后台管理框架布局搭建 后台管理布局框架分析:导航条.左侧功能区.右侧主要功能显示和实现区 实现: 导航条:使用bootstrap模板:JavaScript>>导航条 左侧:使用bootstrap模板:组件>>列表组 右侧:使用bootstrap模板:JavaScript>>标签页 新建后台管理路由(注意

对于带富文本的博客/随笔/文章的处理

这是在工作中遇到的问题,首先介绍一下我使用的场景: 数据表: sys_article -- 存放文章标题.作者等等基础信息 sys_article_detail -- 存放较为复杂的富文本内容信息(用 content 字段存储),用 article_id 外键与文章关联,一对一 sys_annex -- 存放公共的附件信息,包括附件基本信息,以及远程服务器地址,用 obj 和 obj_id 图片与文章的关联,分为两种: 一是文章封面,obj为article,obj_id为文章id,type为co

android 基于Fresco的富文本展示

由于应用中的数据大量采用富文本排版 所以需要客户端解析格式去显示 虽然WebView 可以做到 可是其中的图片下载并没有没有通过我们自己的缓存机制 在git上找到了一个基于picasso的RichText 替换成我们所使用的Fresco 运行起来 没有问题 比起WebView也要流畅很多 所以分享一下实现的代码 有问题 互相帮助改进 现存问题:不支持gif格式 talk is cheap show me the code /** * Created by sunche on 15/11/10.

Django 配置App特定类的富文本编辑器

版本:Django:1.6  Python:2.7 下载TinyMCE.http://www.tinymce.com/download/download.php 解压.将其中的tinymce文件夹放在Django的静态文件目录/static/下. 在tinymce文件夹中已经有tinymce.min.js这个JS文件:我们需要做的是在当前目录下(与tinymce.min.js同级)另外新建一个tinymce_config.min.js: 填充内容如下: tinymce.init({ select

微信小程序富文本编译wxParse

资料相关: https://github.com/icindy/wxParse 场景:微信小程序文章详情想要展示一些带有html标签的文章,但是不支持,直接展示一堆html标签,用wxParse可以解析出html标签展示为真正的文本格式. 按照git文档的步骤即可: 1.拷贝文件wxParse:- wxParse/ -wxParse.js(必须存在) -html2json.js(必须存在) -htmlparser.js(必须存在) -showdown.js(必须存在) -wxDiscode.js