持续升级《在线写python》小程序的功能,文章页增加一键复制功能,并自动去掉html标签

增加复制按钮后的界面是这样的

在这里插入图片描述

在这里插入图片描述

代码如下:

<template><view><x-header></x-header><view class="" v-if="article_info"><view class="kuai bgf"><view class="ac fs26"><img src="@/static/logo.png" class="w60 h60 br60 mr10" alt="" /><view class="ac "><view class="mr10">陈老师</view><view class=""><up-tag size="mini" text="管理员" type="success"></up-tag></view></view></view><view class="mt10"><span class="fs24" style="color:#8f8fa6 ;">发布时间 {{article_info.create_time }} 阅读量 {{article_info.read }} 评论数 0</span></view></view><view class="p20" @click="copyText(article_info.content)"><up-button type="success" text="复制内容"></up-button></view><view class="kuai bgf ac wrap"><up-parse :content="article_info.content"></up-parse><!-- <rich-text :nodes="article_info.content"></rich-text> --></view></view></view>
</template><script>import {getArticle} from '@/config/api.js'export default {data() {return {article_info: null}},async onLoad(e) {this.$showLoading()const res = await getArticle({id: e.id})if (res.code == 200) {uni.setNavigationBarTitle({title: res.data.title // 设置页面的标题});this.article_info = res.data} else {uni.navigateBack()}},methods: {removeHtmlTags(html) {return html.replace(/<[^>]*>/g, ''); // 使用正则去掉所有HTML标签},copyText(richText) {const textToCopy = this.removeHtmlTags(richText); // 去掉HTML标签uni.setClipboardData({data: textToCopy, // 设置剪贴板内容为纯文本success: function() {uni.showToast({title: '复制成功',icon: 'success'});}});}},}
</script><style></style>

代码解释

由chatGPT代劳

这段代码是一个 UniApp 页面,展示了一篇文章的详细内容,包括标题、发布信息、内容、复制内容等功能。下面是对每个部分的详细解释:

1. 模板部分 (<template>)

<template><view><x-header></x-header> <!-- 自定义组件,通常是页面头部 --><!-- 文章信息展示部分 --><view v-if="article_info"><!-- 文章头部信息区域 --><view class="kuai bgf"><view class="ac fs26"><img src="@/static/logo.png" class="w60 h60 br60 mr10" alt="" /><view class="ac"><view class="mr10">陈老师</view><view><up-tag size="mini" text="管理员" type="success"></up-tag></view></view></view><view class="mt10"><span class="fs24" style="color:#8f8fa6;">发布时间 {{ article_info.create_time }} 阅读量 {{ article_info.read }} 评论数 0</span></view></view><!-- 复制文章内容按钮 --><view class="p20" @click="copyText(article_info.content)"><up-button type="success" text="复制内容"></up-button></view><!-- 文章内容展示区域 --><view class="kuai bgf ac wrap"><up-parse :content="article_info.content"></up-parse><!-- 使用 up-parse 组件解析并显示文章内容 --></view></view></view>
</template>
详细解释:
  • <x-header></x-header>: 这是一个自定义组件,用来显示页面的标题栏或头部信息。

  • <view v-if="article_info">: 这个 view 容器只有在 article_info 不为空时才会显示,这样可以避免页面渲染空白内容。

  • 文章头部信息

    • 包括一个头像(<img src="@/static/logo.png">)、作者名字(陈老师)和角色标签(管理员,通过 up-tag 组件实现)。
    • 显示文章的创建时间(article_info.create_time)、阅读量(article_info.read)和评论数(固定为 0,但是实际上你可能会从服务器获取评论数)。
  • 复制文章内容按钮

    • 使用 up-button 组件,并在点击时调用 copyText 方法,将文章的内容复制到剪贴板。
  • 文章内容显示

    • 使用 up-parse 组件来解析 article_info.content 中的 HTML 内容并展示出来。up-parse 是 UniApp 中一个常用的组件,通常用于解析和渲染富文本内容。

2. 脚本部分 (<script>)

<script>import { getArticle } from '@/config/api.js'; // 引入获取文章的 APIexport default {data() {return {article_info: null  // 初始化 article_info 为 null};},async onLoad(e) {this.$showLoading();  // 显示加载中效果// 通过 API 获取文章数据const res = await getArticle({id: e.id  // 获取传递的文章 ID 参数});if (res.code == 200) {// 如果请求成功,设置页面标题并将返回的数据赋值给 article_infouni.setNavigationBarTitle({title: res.data.title // 设置页面的标题});this.article_info = res.data; // 保存文章数据} else {// 如果请求失败,返回上一页uni.navigateBack();}},methods: {// 去掉 HTML 标签,返回纯文本removeHtmlTags(html) {return html.replace(/<[^>]*>/g, ''); // 使用正则去掉所有 HTML 标签},// 复制文章内容到剪贴板copyText(richText) {const textToCopy = this.removeHtmlTags(richText); // 去掉 HTML 标签,保留纯文本uni.setClipboardData({data: textToCopy,  // 将纯文本内容设置到剪贴板success: function() {// 显示复制成功的提示uni.showToast({title: '复制成功',icon: 'success'});}});}}};
</script>
详细解释:
  • data():

    • article_info: 这是用于存储文章数据的变量,初始值为 null,文章数据会在后续的 API 请求中获取并赋值。
  • onLoad(e):

    • onLoad 是页面生命周期函数之一,页面加载时会调用此方法。
    • this.$showLoading() 显示一个加载提示。
    • getArticle 是从 @/config/api.js 文件中引入的 API 请求函数,调用该函数获取文章数据,并传递文章的 id
    • 请求成功后,通过 uni.setNavigationBarTitle() 设置页面标题为文章的标题。
    • 将获取的文章数据 res.data 保存到 article_info 中。
    • 如果请求失败,则使用 uni.navigateBack() 返回上一页。
  • removeHtmlTags(html):

    • 这是一个用于去掉 HTML 标签的函数,使用正则表达式 /<[^>]*>/g 来匹配并去除文本中的所有 HTML 标签,只保留纯文本内容。
  • copyText(richText):

    • 这个方法用于将文章内容复制到剪贴板。
    • removeHtmlTags 方法用来去除文章中的 HTML 标签,只留下纯文本内容。
    • 使用 uni.setClipboardData() 将纯文本内容设置到剪贴板中。
    • uni.showToast() 显示一个成功的提示,表示内容已成功复制。

3. 样式部分 (<style>)

<style>
</style>
  • 这里目前没有定义样式,如果需要自定义页面的样式,可以在这里添加对应的 CSS。

总结:

  • 页面通过 getArticle API 获取文章数据并展示在页面上,包括文章标题、发布时间、阅读量等信息。
  • 页面提供了一个按钮,点击后可以将文章内容复制到剪贴板,并显示成功提示。
  • 文章内容中的 HTML 标签会被去除,只保留纯文本内容供复制使用。
  • 页面通过 onLoad 生命周期函数获取传递的参数并加载文章数据。

整体来说,这段代码的主要功能是展示文章详情,并允许用户复制文章内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA与ASIC:深度解析与职业选择

IC&#xff08;集成电路&#xff09;行业涵盖广泛&#xff0c;涉及数字、模拟等不同研究方向&#xff0c;以及设计、制造、封测等不同产业环节。其中&#xff0c;FPGA&#xff08;现场可编程门阵列&#xff09;和ASIC&#xff08;专用集成电路&#xff09;是两种重要的芯片类型…

【Linux】Linux入门(三)权限

目录 前提权限概念whoami指令 Linux权限管理文件访问者的分类&#xff08;人&#xff09;file指令权限信息权限的表示方法 chmod指令 更改权限chown指令 修改文件&#xff0c;文件夹所属用户和用户组 权限掩码umask&#xff08;权限掩码&#xff09; 粘滞位 前提 请先看下面这…

蓝桥与力扣刷题(73 矩阵置零)

题目&#xff1a;给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&…

Node.js接收文件分片数据并进行合并处理

前言&#xff1a;上一篇文章讲了如何进行文件的分片&#xff1a;Vue3使用多线程处理文件分片任务&#xff0c;那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录&#xff1a; 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. pat…

大数据,Hadoop,HDFS的简单介绍

大数据 海量数据&#xff0c;具有高增长率、数据类型多样化、一定时间内无法使用常规软件工具进行捕捉、管理和处理的数据集 合 大数据的特征: 4V Volume : 巨大的数据量 Variety : 数据类型多样化 结构化的数据 : 即具有固定格式和有限长度的数据 半结构化的数据 : 是…

深度强化学习:PPO

深度强化学习算法&#xff1a;PPO 1. Importance Sampling 先说一下什么是采样&#xff1a;对于一个随机变量&#xff0c;我们通常用概率密度函数来描述该变量的概率分布特性。具体来说&#xff0c;给定随机变量的一个取值&#xff0c;可以根据概率密度函数来计算该值对应的概…

Flink底层架构与运行流程

这张图展示了Flink程序的架构和运行流程。 主要组件及功能&#xff1a; Flink Program&#xff08;Flink程序&#xff09;&#xff1a; 包含Program code&#xff08;程序代码&#xff09;&#xff0c;这是用户编写的业务逻辑代码。经过Optimizer / Graph Builder&#xff08…

嵌入式知识点总结 C/C++ 专题提升(一)-关键字

针对于嵌入式软件杂乱的知识点总结起来&#xff0c;提供给读者学习复习对下述内容的强化。 目录 1.C语言宏中"#“和"##"的用法 1.1.(#)字符串化操作符 1.2.(##)符号连接操作符 2.关键字volatile有什么含意?并举出三个不同的例子? 2.1.并行设备的硬件寄存…

mysql精简单机版,免登录,可复制,不启动服务与本机mysql无冲突

突然有了个需要在本地使用的mysql需求&#xff0c;要求不用安装,随拷随用,不影响其他mysql服务,占用空间小.基于这种需求做了个精简版的mysql 首先下载mysql的zip安装包 > windows 64位 > https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.36-winx64…

俄语画外音的特点

随着全球媒体消费的增加&#xff0c;语音服务呈指数级增长。作为视听翻译和本地化的一个关键方面&#xff0c;画外音在确保来自不同语言和文化背景的观众能够以一种真实和可访问的方式参与内容方面发挥着重要作用。说到俄语&#xff0c;画外音有其独特的特点、挑战和复杂性&…

【vitePress】基于github快速添加评论功能(giscus)

一.添加评论插件 使用giscus来做vitepress 的评论模块&#xff0c;使用也非常的简单&#xff0c;具体可以参考&#xff1a;giscus 文档&#xff0c;首先安装giscus npm i giscus/vue 二.giscus操作 打开giscus 文档&#xff0c;如下图所示&#xff0c;填入你的 github 用户…

python麻辣香锅菜品推荐

1.推荐算法概述 推荐算法出现得很早,最早的推荐系统是卡耐基梅隆大学推出的Web Watcher浏览器导航系统&#xff0c;可以根据当的搜索目标和用户信息,突出显示对用户有用的超链接。斯坦福大学则推出了个性化推荐系统LIRA.AT&T实验室于1997年提出基于协作过滤的个性化推荐系统…

Android系统开发(六):从Linux到Android:模块化开发,GKI内核的硬核科普

引言&#xff1a; 今天我们聊聊Android生态中最“硬核”的话题&#xff1a;通用内核镜像&#xff08;GKI&#xff09;与内核模块接口&#xff08;KMI&#xff09;。这是内核碎片化终结者的秘密武器&#xff0c;解决了内核和供应商模块之间无尽的兼容性问题。为什么重要&#x…

UE 像素流Pixel Streaming笔记

参考 UE 像素流Pixel Streaming基本介绍和使用方法 UE4-PixelStreaming&#xff08;虚幻引擎4-像素流&#xff09;笔记 UE 像素流常用回调 UE 像素流通信 这链接能学到不少像素流的东西 使用 1.像素流连接成功&#xff08;On New Connection&#xff09; 必须使用GetPixe…

Java 资源管理教程:掌握 close 方法、Cleaner 类与 Runtime.addShutdownHook

在 Java 编程中&#xff0c;高效地管理资源是至关重要的&#xff0c;特别是当你处理文件、数据库连接、网络连接等有限资源时。为了确保这些资源得到正确释放&#xff0c;Java 提供了多种机制。本教程将深入探讨 close 方法、Cleaner类以及 Runtime.addShutdownHook 方法&#…

ASP.NET Blazor部署方式有哪些?

今天我们来说说Blazor的三种部署方式&#xff0c;如果大家还不了解Blazor&#xff0c;那么我先简单介绍下Blazor Blazor 是一种 .NET 前端 Web 框架&#xff0c;在单个编程模型中同时支持服务器端呈现和客户端交互性&#xff1a; ● 使用 C# 创建丰富的交互式 UI。 ● 共享使用…

微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。

1&#xff0c;可能是原因是你使用了scroll-view的标签&#xff0c;用onReachBottom触发加载事件。这两个是有冲突的。没办法一起使用。如果页面的样式是滚动的是无法去触发页面的onReachBottom的函数的。因此&#xff0c;你使用overflow:auto.来使用页面的某些元素滚动&#xf…

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证9)

测试数据库中只有之前记录温湿度及烟雾值的表中数据较多&#xff0c;在该数据库中增加AppUser表&#xff0c;用于登录用户身份查询&#xff0c;数据库表如下所示&#xff1a;   项目中安装SqlSugarCore包&#xff0c;然后修改控制器类的登录函数及分页查询数据函数&#xff…

【人工智能】:搭建本地AI服务——Ollama、LobeChat和Go语言的全方位实践指南

前言 随着自然语言处理&#xff08;NLP&#xff09;技术的快速发展&#xff0c;越来越多的企业和个人开发者寻求在本地环境中运行大型语言模型&#xff08;LLM&#xff09;&#xff0c;以确保数据隐私和提高响应速度。Ollama 作为一个强大的本地运行框架&#xff0c;支持多种先…

Flutter:carousel_slider 横向轮播图、垂直轮播公告栏实现

安装依赖 carousel_slider: ^5.0.01、垂直滚动公告栏 import package:carousel_slider/carousel_options.dart;// 垂直滚动公告栏Widget _buildNotice() {return <Widget>[<Widget>[TDImage(assetUrl: "assets/img/home11.png",width: 60.w,height: 60.w…