学习Java的神器已上线,面向广大Java爱好者!

之前写的一篇:打造一款 刷Java 知识的小程序(一)

一、第二版做了什么?

  • 第一版小程序只具有初级展示功能,知识点都是hardcode在代码里面的。
  • 这一次进行了大升级,知识点从后端(小程序云开发)获取
  • 知识点都是用Markdown语言写的,支持将Markdown内容无缝转换成小程序页面。

二、C端与后端的交互逻辑

mark

2.1、功能跳转

  • 首页点击Java基础图标进入到Java基础知识列表页面
  • 列表页点击“查看”按钮进入详情页面

2.2、准备工作

1.云开发存储上传一个markdown文件

2.云开发数据库插入两条记录

2.2、代码实现

  1. 调用 自己编写的云函数 getJavaQuestionList 获取列表;
  2. 调用 自己编写的云函数 getJavaQuestionDetail 获取详情的 Markdown文件路径;
  3. 调用 系统自带的云函数 downloadFile 下载 Markdown文件保存为临时文件;
  4. 调用 小程序自带的 saveFileSync 将临时文件保存到本地;
  5. 调用 小程序自带的 readFileSync 将本地文件读入缓存(注意:开发者工具上不需要保存到本地也可以正常读取);
  6. 使用 towxml 开源组件将缓存中markdown内容转成小程序可以识别的元素
  7. 给 图片元素添加预览事件

三、我与Markdown大战一天一晚

痛点:Markdown转小程序页面很难受,小程序页面并不能识别Markdown标记。

方案一、用Typora工具将 Markdown文件复制为html内容直接粘贴到表字段里面

mark

遇到的问题,发现复制的HTML代码都不包含样式,而用小程序富文本组件后,在WXSS文件定义样式对富文本里面的标签元素是不生效的。于是只能自己加样式,那就用正则匹配标签来加style吧。写着写着发现好多style要加。比如h1,h2,image。最坑的是Markdown转为html是code标签,小程序不识别code标签,所以将code标签转为div标签,然后还得处理换行,而且针对代码需要有不同的高亮显示,这太麻烦了。但基本上已经不影响阅读了。

mark

方案二、将Markdown文件复制为markdown格式内容直接粘贴到表字段里面

找到一个开源组件可以将markdown 标记转为小程序元素,叫做wemark。

于是就把markdown 内容复制到数据库中,但发现存到数据库的是没有换行的,所以读取之后需要做换行处理,这里就又用到正则表达式了。处理完了也能正常显示了,但图片不能放大看,这个就比较难受了。

方案三、将Markdown文件存到某个地方,比如COS,阿里云,七牛云,自己搭建的服务器

这里是将文件上传到小程序云开发的存储里面,而且小程序提供了对应的下载云存储文件的SDK,非常方便。

然后使用towxml开源组件将markdown转为小程序元素,和wemark相比优势如下:

1.支持自定义towxml组件哪些功能开放,比如转换markdown的图表、数学公式等

2.支持自定义towxml 支持哪些code格式高亮

3.支持绑定小程序元素事件(这个功能太棒了)

大战一天一晚完美解决Markdown转小程序的问题

4. 后续计划

貌似直接用小程序云开发就够用了,但云开发的访问次数,存储空间有限制。另外直接操作云开发控制台不方便,做个后台操作起来更方便、更安全。之前搭建的一个服务器因到期被回收了,又得重新搭一套了。另外会先在本地把后端服务和Portal先跑起来。

扫描二维码关注

领取架构师资料

更多内容

打造一款 刷Java 知识的小程序(二)的更多相关文章

  1. 打造一款 刷Java 知识的小程序(一)

    一.为什么要打造 Java要学的东西太多了,所以准备把这些知识汇总到一起,而小程序是一个比较好的入口,借助微信客户端,打开方便. 二.打造成什么样 首页展示:包含了Java各大知识点模块 知识点展示: ...

  2. Java 获取微信小程序二维码(可以指定小程序页面 与 动态参数)

    一.准备工作 微信公众平台接口调试工具 小程序的唯一标识(appid) 小程序的密钥(secret) 二.获取access_token 打开微信公众平台接口调试工具,在参数列表中输入小程序的appid ...

  3. Java获取微信小程序二维码

    tip:通过该接口,仅能生成已发布的小程序的二维码. tip:可以在开发者工具预览时生成开发版的带参二维码. tip:接口A加上接口C,总共生成的码数量限制为100,000,请谨慎调用. tip: P ...

  4. Java 后端微信小程序支付demo (网上说的坑里面基本上都有)

    Java 后端微信小程序支付 一.遇到的问题 1. 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试 2.签名错误 3.已经调起微信统一下单接口,可以拿到预支付ID,但是前端支付的时候 ...

  5. 微信小程序二维码推广统计

    微信小程序可以通过生成带参数的二维码,那么这个参数是可以通过APP的页面进行监控的 这样就可以统计每个二维码的推广效果. 今天由好推二维码推出的小程序统计工具HotApp小程序统计也推出了带参数二维码 ...

  6. node 无脑生成小程序二维码图

    RT 新建createwxaqrcode.js: const request = require('request') const fs = require('fs') // eg:生成购物车列表圆形 ...

  7. 微信小程序-二维码汇总

    小程序二维码在生活中的应用场景很多,比如营销类一物一码,扫码开门,扫码付款等...小程序二维码分两种? 1.普通链接二维码 即跟普通的网站链接生成的二维码是一个意思,这种二维码的局限性如下: 对于普通 ...

  8. 小程序二维码生成接口API

    获取小程序码 我们推荐生成并使用小程序码,它具有更好的辨识度.目前有两个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口. 接口A: 适用于需要的码数量较少的业务场景 接口地址: http ...

  9. 图片的URL上传至阿里云OSS操作(微信小程序二维码返回的二进制上传到OSS)

    当我们从网络中获取一个URL的图片我们要存储到本地或者是私有的云时,我们可以这样操作  把url中的图片文件下载到本地(或者上传到私有云中)  public String uploadUrlToOss ...

随机推荐

  1. 华为面试题(JAVA版)

    [编程题] 扑克牌大小时间限制:10秒空间限制:131072K扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张.牌面从小到大用如下字符和字符串表示(其中,小写 ...

  2. Vue 学习记录(一)

    Vue 研究了一段时间,要学的东西挺多的. 一.基本指令 1.v-text:2.v-html:3.v-pre;4.v-cloak:5.v-once:6.v-if:7.v-else:8.v-else-i ...

  3. 创建和存储 cookie

    在这个例子中我们要创建一个存储访问者名字的 cookie.当访问者首次访问网站时,他们会被要求填写姓名.名字会存储于 cookie 中.当访问者再次访问网站时,他们就会收到欢迎词. 首先,我们会创建一 ...

  4. 同网页的WebRTC实现与源码分析

    基本按照Real time communication with WebRTC搭建(下面简称该网站为官方tutorial) 本文重视WebRTC的基于同页面通信的代码实现,主要讲述顺序是WebRTC的 ...

  5. 工作了这么长时间,是不是非用macbook pro不可呢?

    连续奋战了二十多天,肉眼可见自己的状态一天不如一天.总觉得自己是不是该放下一切好好休息两天,但是理智又告诉我不能停.不能停. 既然不能停,那就把之前攒下的文章写一写吧. 什么是macbook pro ...

  6. Effective python(五):内置模块

    1,考虑使用contextlib和with语句改写可复用的try/finally代码 with lock:print('lock is held')相当于try:print('lock is held ...

  7. [状态压缩,折半搜索] 2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem

    链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  8. Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端

    Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端 本文同步更新地址: https://dotnet9.com/11520.html https:// ...

  9. Java GC(垃圾回收)机制知识总结

    目录 Java GC系列 Java关键术语 Java HotSpot 虚拟机 JVM体系结构 Java堆内存 启动Java垃圾回收 Java垃圾回收过程 垃圾回收中实例的终结 对象什么时候符合垃圾回收 ...

  10. TCP、UDP服务器模型 在网络程序里面,通常都是一

    TCP.UDP服务器模型 在网络程序里面,通常都是一个服务器处理多个客户机,为了出个多个客户机的请求,服务器端的程序有不同的处理方式. 目前最常用的服务器模型: 循环服务器:循环服务器在同一时刻只能响 ...