如何在微信公众号优雅的展示代码

简介:

我在2017-04-25日开通了微信公众号,尝试着去分享一些技术文章,不可避免的文章里面有很多的代码,尝试了很多的方法,现在算是找到了一个还不错的解决方案,因此想把这个过程记录下来。

刚开始前自然是在网上找了一番有什么好的工具可以支持,看了很多解决方案大概分为下面几种:

  • 手动复制粘贴进去调一调格式
  • 代码制作成图片
  • 购买专业版工具导出为微信公众号格式
  • 很多在线的编辑软件
  • markdown here
  • 其它

为什么会这样呢,最根本的原因就是微信的公众号不支持markdown的格式,好吧知乎也是,反正不管怎么的大家都还的继续用不是,就出来了很多的解决方案。而且微信的编辑器对代码这块支持也不够,幸好支持网页直接复制大家就都利用这个机制去做工具。


排除的方案

先说说手动复制粘贴吧,本来的代码是这个格式的:

@SpringBootApplication
@EnableDiscoveryClient
public class ProducerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}

在微信中就会变成下面这样,需要手动去敲回车,代码量大了苦不堪言。

@SpringBootApplication@EnableDiscoveryClientpublic class ProducerApplication {
public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}

或者是代码没有挤在一起,但是因为代码比较宽,只显示了半截,半截还在屏幕外面呢。

代码转化成图片,最原始的就是用截屏工具一段一段的去截屏,想想就痛苦,业内也有人写了工具来支持,具体可以参考这篇文章:html2canvas 将代码转为图片,但是图片多了很多会影响页面的打开速度,而且编辑的时候需要一段一段的上传图片也很复杂。

购买专业版工具导出为微信公众号格式这个方式我不喜欢,第一要花钱,第二每次需要在这个软件中去处理,再导出也挺麻烦的;很多在线的编辑软件,也是一样进去都是花花碌碌的页面,广告贼多,有些还必须先注册,体验很差。

所以以上的几种方式在一开始的时候就被我放弃了。


选择方案

刚开始的时候就看到了markdown here这个款工具,感觉算是体验也不错,也用了有一阵子了。我使用的是chrome浏览器,其它浏览器也有对应的插件,使用步骤如下:

  • 在Google Chrome中安装Markdown-here插件
  • 在sublime中用Markdwon格式书写
  • 拷贝粘贴到微信公共帐号的编辑器中
  • 点击浏览器上的插件按钮,使用Markdown-here渲染
  • 插入图片,修订

也可以自定义CSS,自定义代码高亮的格式等等,但是它也有两个致命的缺点:

  • 以markdown格式粘贴进去之后,使用快捷键“CTRL+Ctrl+Alt+M”生成html后代码格式也没有问题,但是点击保存之后很多代码就会黏在一起,什么原因呢?Markdown 解释器在转换代码片段时,没有在换行的时候添加 
    标签,而是直接输出一个换行符 \n,微信编辑页在保存或者预览时,将部分换行符给过滤了。
  • 就算代码格式正常,使用苹果微信查看代码的时候会被自动折行,效果很差。

第一个问题也有解决方案,网上有开源精神的朋友写了插件来支持,具体可以参考这篇文章:微信公众号代码区域换行问题(解决),但是第二个问题还是不能解决,然后我只能每次贴心的给推送的文章下面加这么一句话:

苹果手机代码会折行,建议苹果用户点击阅读原文查看,效果会更好一些。

每次在公众号下面去粘贴这一句,感觉也挺傻X的。

我在网上查找解决方案的时候,偶然看到小胡子哥作者写了一个开源软件:online-markdown,界面如下;

使用方式很简单,将写好的markdown格式的代码直接复制粘贴到这个页面里面,点击预览就可以看到渲染后的效果了,根据自己的需要也可以在上面选择不同的样式和代码高亮的格式,选完之后点击复制,直接粘贴到微信公号的编辑器中既可,我试着用了一下效果不错。

大家可以使用这个地址来测试http://md.ityouknow.com/

但是还是有一些小瑕疵,作者也会去完善,感兴趣的可以去github上面star一下。小瑕疵有两个:

  • 1、可以选择的样式不是很多,只有三种,但如果你感兴趣的话可以自己去加
  • 2、“- ”的格式转换不是很好,会换行。我看有人已经提出来了,作者应该也会很快修复这个问题。

目前这个就是我选择使用的方案了,也希望这个工具可以帮助到大家。

如果你有更好的解决方案,也请一定告诉我。



我的公众号是:纯洁的微笑(KeepPureSmile),欢迎大家关注一起交流。


作者:纯洁的微笑 
出处:www.ityouknow.com 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

本文如对您有帮助,还请多帮 【推荐】 下此文。 
如果喜欢我的文章,请关注我的公众号

分类:  其它

本文转自纯洁的微笑博客博客园博客,原文链接:http://www.cnblogs.com/ityouknow/p/6851564.html,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
Deep Search 如何理解业务仓库代码?
本文系统地介绍了 Deep Search 和 Deep Research 的概念、与传统 RAG 的区别、当前主流的商业产品与开源方案、在代码领域的应用(如 Deep Search for 仓库问答)以及未来的发展规划。
375 21
Deep Search 如何理解业务仓库代码?
|
7月前
|
缓存 前端开发 JavaScript
React 视频弹幕组件 Video Danmaku
视频弹幕(Danmaku)是在线视频平台中实时显示用户评论的方式,增强互动体验。本文介绍如何在React中实现视频弹幕组件,涵盖基本结构、常见问题及解决方案,如避免弹幕重叠、优化性能、确保同步等,并通过代码示例详细解释。帮助开发者解决样式不一致、输入验证不足和加载延迟等问题,提供实用参考。
244 20
|
7月前
|
人工智能 开发者
媲美OpenAI事实性基准,这个中文评测集让o1-preview刚刚及格
为评估大型语言模型(LLM)在中文语境下的事实性能力,研究团队推出“Chinese SimpleQA”评测集。该评测集具备中文、多样性、高质量、静态和易于评估的特点,涵盖六个主要主题和99个子主题。评估结果显示,尽管部分模型在特定领域表现出色,但整体事实性能力仍有待提升。Chinese SimpleQA为LLM开发者提供了宝贵工具,推动中文LLM的改进与发展。论文链接:https://arxiv.org/abs/2411.07140
168 14
|
11月前
|
存储 传感器 监控
物联网:物联网卡为什么没有语音功能
物联网卡(IoT SIM卡)主要是为物联网设备设计的,这些设备包括但不限于智能城市传感器、可穿戴设备、工业监控设备、车联网设备等。与普通的消费者SIM卡相比,物联网卡在功能和设计上存在一些显著的区别,其中不包括语音功能是其重要特点之一。以下是物联网卡没有语音功能的几个主要原因:
|
JavaScript
cnpm 的安装与使用
本文介绍了npm和cnpm的概念、安装nodejs的步骤,以及cnpm的安装和使用方法,提供了通过配置npm使用中国镜像源来加速包下载的替代方案,并说明了如何恢复npm默认仓库地址。
cnpm 的安装与使用
|
12月前
|
存储 安全 Java
javax.security.auth.login.LoginException: Checksum failed
`亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。` `项目背景`:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。 `举例说明`:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。
174 8
|
缓存 JavaScript 网络安全
基于Hexo的主题Fluid搭建Github博客
基于Hexo的主题Fluid搭建Github博客
285 1
Typora 主题,设置代码块Mac风格三个小圆点
Typora 编辑器让人们能更简单地用**Markdown语言**书写文字,解决了使用传统的Markdown编辑器写文的痛点,并且界面简洁优美,实现了实时预览等功能。
883 1
|
JavaScript 前端开发
动态背景,视觉盛宴:JavaScript动画让网页活起来!
动态背景,视觉盛宴:JavaScript动画让网页活起来!
|
Java 应用服务中间件 测试技术
SpringBoot - @SpringBootTest加速单元测试的小窍门
SpringBoot - @SpringBootTest加速单元测试的小窍门
694 0