代码雨代码源复制_小程序基于Parser添加长按复制、代码高亮等功能
程序员技术之旅网站/小程序/公众号进入小程序
功能展示
引入Parser
微信小程序中引入Parser
可直接在GitHub项目主页(https://github.com/jin-yufeng/Parser)查阅。
代码高亮
高亮插件
Prism官网下载prism.js
和prism.css
,默认只有css代码有渲染样式,注意选择需要渲染的语言。
小程序所用样式下载路径
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+bash+c+csharp+cpp+dart+erlang+git+go+graphql+http+hpkp+hsts+ini+java+javadoc+javadoclike+javastacktrace+json+kotlin+lua+makefile+markup-templating+nginx+objectivec+php+phpdoc+php-extras+properties+python+rust+sql+swift+yaml
添加代码
Parser
-libs
-MpHtmlParser.js
的parse
函数中if (config.highlight)
判断分支下,修改正则匹配。
因为本人的后端程序处理代码块在
code here
中,所以正则匹配并提取文章中的代码。
$1
是$2
是代码整体内容config.highlight
是真正的高亮函数
this.data = this.data.replace(/
([\s\S]*?)/g
, function($, $1, $2) {
return "
+ $1 + '>' + config.highlight($2, "
+ $1 + '>') + "
";})
Parser
-libs
-config.js
中添加highlight
高亮函数,并且把函数导出。
Parser
默认使用js语法来高亮代码,这里稍作修改,对传入的提取出对应语言。
备注:因为后端对提交的文章内容进行了防注入,转换了
<>&等符号,所以在高亮时转换回正常符号。
const Prism = require('../../utils/prism.js');var highlight = function (content, attrs) { content = content.replace(/>/g, '); content = content.replace(/, '>'); content = content.replace(/&/g, '&');//提取出对应语言var m = attrs.match(/"languages?-(.*)"/i);var lang = m ? m[1] : 'js'return Prism.highlight(content, Prism.languages[lang], lang)}module.exports = {// 高亮处理函数 highlight: highlight ...}
长按复制
代码高亮功能已经是
Parser提供的功能了,只是在此基础上修改了符合自己需求的代码。
长按复制功能是考虑到代码段较多,代码展示的区域又是可以滑动的,
Parser提供的selectable
选项需要手动拖动选择,出于此考虑做了一个增进。
1.
MpHtmlParser
构造函数:自定义一个数组接收代码内容。
//MpHtmlParser构造函数constructor(data, options = {}, cb) {
...
this._parserCodeContent = [];
}
2.
MpHtmlParser
的parse
函数:代码高亮匹配
处保存代码至自定义数组中。
// 代码高亮匹配if (config.highlight) {var that = this //注意用that接收this.data = this.data.replace(/
([\s\S]*?)/g
, function($, $1, $2) {
that._parserCodeContent.push($2)return "
+ $1 + '>' + config.highlight($2, "
+ $1 + '>') + "
"; })}
3.
MpHtmlParser
的popNode
函数:添加是否是pre
标签,如果是则在node
上添加一个content
属性。
// 节点出栈处理
popNode(node) {
...//处理代码长按if (node.name == 'pre') {
node.content = this._parserCodeContent.shift();
}
...
}
4.
trees.wxml
中添加pre
标签,并且增加data-content
等于从上一步node
上添加的content
属性,和bindlongpress="longPressEvent"
长按事件绑定。
<rich-text wx:if="{{item.name=='pre'}}" data-content="{{item.content}}" id="{{item.attrs.id}}" class="__{{item.name}}" style="{{Handler.getStyle(item.attrs.style,'block')}}" nodes="{{Handler.setStyle(item)}}" bindlongpress="longPressEvent" />
5.
tree.js
的methods
函数中添加:长按复制具体实现。
longPressEvent: function (e) {var content = e.currentTarget.dataset.content;
wx.showActionSheet({itemList: ['复制代码'],
success(res) {var tabIndex = res.tapIndex;if (tabIndex == 0) {
wx.setClipboardData({data: content,
success(res) {
wx.showToast({title: '代码已复制'
})
}
})
}
}
})
}
大功告成。
—— 感谢阅读 ——
..................
程序员技术之旅
..................
搬砖达人
网站/小程序/公众号
CV工程师
技术分享/记录奇葩问题
伪全栈
Java/Android/Python
........................................................................
您在看吗?
代码雨代码源复制_小程序基于Parser添加长按复制、代码高亮等功能相关推荐
- 微信小程序怎么长按复制_微信小程序基于Parser添加长按复制、代码高亮等功能...
功能展示 引入Parser 微信小程序中引入Parser可直接在项目主页查阅. 代码高亮 高亮插件 Prism官网下载prism.js和prism.css,默认只有css代码有渲染样式,注意选择需要渲 ...
- 大商创小程序源码_小程序直播系统有哪些基本功能
小程序直播系统源码能够构建出高品质的直播平台,现如今较为流行的"直播间+电商.""直播间+教育"等新型的"直播间+"等多元化的直播间方向都不 ...
- 飞鱼知识变现小程序2.5.3源码_小程序功能模块
简介: 微信小程序 飞鱼知识变现小程序2.5.3 前端+后端 模块/小程序更新动态: 问答模块:付费咨询功能.旁听分成功能.会员功能.三级分销 课程模块: 音频课程.视频课程.支持付费.支持免费.三级 ...
- 拼团小程序源码_小程序拼团+团购+分销模式,玩转小程序用户裂变
我们应该都点过朋友扔过来的拼团.砍价链接,拼团.砍价的模式能达到迅速裂变的效果.现在很多大大小小的商家都已经注册了微信小程序,玩起了社交裂变,提高品牌的曝光度,也为门店销量带来了明显的效果.微信小程序 ...
- 微信小程序基于swiper组件的tab切换
代码地址如下: http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.c ...
- 微信小程序基于scroll-view实现锚点定位
代码地址如下: http://www.demodashi.com/demo/14009.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.c ...
- 后退一步 小程序_微信小程序返回上一级页面的实现代码
微信小程序返回上一级页面 wx.navigateBack({ delta: 1 //返回上一级页面}) html: 保存 js: //提交 submit(){ let data = this.data ...
- php 小程序 运动步数_微信小程序获取微信运动步数的实例代码
现在运动计步很火,无论是蚂蚁森林,还是微信上都很火爆,本文介绍了微信小程序微信运动步数的实例代码,分享给大家 微信小程序API-微信运动 https://mp.weixin.qq.com/debug/ ...
- 计算机课程设计之图书借阅小程序-图书馆借阅管理小程序代码-校园图书馆借书还书小程序
计算机课程设计之图书借阅小程序-图书馆借阅管理小程序代码-校园图书馆借书还书小程序 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 框架:SSM(Spring ...
最新文章
- iptables基础——链与表
- 成本管理4个过程及相关重点
- 图像凸性检测函数convexityDefects在Python2.7下使用opencv3.0的问题
- matlab显示像素分布,MATLAb-----7--------如何动态显示鼠标的坐标值和图像像素值
- 为什么进mysql需要用户和密码了_centos5安装 mysql 提示需要用户及密码进入?
- x10i升级android4.0,智再升级 Xperia X10i升Android 2.3
- 多个线程作用于同一个runnable对象
- android computescroll_Android问题:自定义ViewGroup,重载computeScroll()方法有什么用?...
- 怎样推断两个日期在一周内
- 使Java具有响应性的框架和工具包:RxJava,Spring Reactor,Akka和Vert.x概述
- 权限列表(包字典)递归成树状结构
- Java基础--反射
- Bootstrap 带下拉的导航
- 利用SpringAOP 实现 日志输出
- 我的家庭私有云计划-6
- 云服务器上部署pytorch,flask部署pytorch-服务端
- Linux 创建静态库(.a)和动态库(.so)
- IDEA中配置Junit4
- java箱子容积_Java开发笔记(一百三十八)JavaFX的箱子
- keep practicing for fast tying