前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 GraphQL 与 Serverless 开发一个 md2html 服务

使用 GraphQL 与 Serverless 开发一个 md2html 服务

作者头像
山月
发布2020-07-09 14:58:12
7660
发布2020-07-09 14:58:12
举报

❝本文收录于 GitHub 山月行博客: shfshanyue/blog,内含我在实际工作中碰到的问题、关于业务的思考及在全栈方向上的学习

  • 前端工程化系列
  • Node进阶系列

借助于优秀的开源工具 mdnice,根据 mardown 生成美化 html 的 GraphQL API 服务。

快来试一试效果~

API

mardown to html

❝快来在 GraphQL Playground 中试一试效果 ❞

代码语言:javascript
复制
query HTML (
  $markdown: String!
  $endpoint: String
  $theme: String
  $formatType: FormatType
) {
  html (
    markdown: $markdown,
    browserWSEndpoint: $endpoint,
    theme: $theme
    formatType: $formatType
  )
}

其中:

  1. markdown: 必填,你需要转换的 markdown 内容
  2. endpoint: 选填,browserless 中的服务接口,也可自建服务,默认值为 wss://chrome.browserless.io/
  3. theme: 选填,mdnice 中的主题名称,默认为 蔷薇紫
  4. formatType: 选填,可选 [JUEJIN | WECHAT | ZHIHU ],转换后 html 适应各平台的格式,默认为 JUEJIN

示例如下:

代码语言:javascript
复制
{
  "markdown": "## Hello, shanyue",
  "endpoint": "wss://chrome.shanyue.tech",
  "theme": "全栈蓝",
  "formatType": "WECHAT"
}

根据 markdown 生成 html

Develop

可以通过以下方式快速基于此项目开发,并欢迎提交 PR 及 Fork

代码语言:javascript
复制
# 本地启动,快速调试项目
$ npm run dev

# 调试 pptr
$ DEBUG=* npm run dev

# 在本地浏览器调试 pptr (在本地调试时如果不是 MAC,需要手动指定 chrome 位置)
$ DEBUG=1 npm run dev

Deploy

本项目部署在腾讯云 serverless 中,在部署前可以指定以下环境变量,如未指定,则默认环境变量取以下的值

代码语言:javascript
复制
# browserless 的服务入口地址,可使用自己的付费地址或自建
DEFAULT_ENDPOINT="wss://chrome.browserless.io/"

# mdnice 官网地址
MD_NICE="https://mdnice.com"

其中:

  • DEFAULT_ENDPOINT: browserless 中的服务接口,也可自建服务,默认值为 wss://chrome.browserless.io/
  • MD_NICE: mdnice 地址,可自建服务

快速部署:

代码语言:javascript
复制
$ npm i -g serverless
$ sls --debug

部署资源配置文件 serverless.yml 由于是高延迟服务,记得把函数超时及网关超时设置到 200s,如下所示:

代码语言:javascript
复制
component: express # (required) name of the component. In that case, it's express.
name: markdown-to-html-api
org: shanyue

inputs:
  src: ./ # (optional) path to the source folder. default is a hello world app.
  functionName: mardown-api
  region: ap-shanghai
  runtime: Nodejs12.16
  exclude:
    - .env
  functionConf:
    timeout: 200
    memorySize: 128
  apigatewayConf:
    protocols:
      - http
      - https
    environment: release
    enableCORS: true #  允许跨域
    serviceTimeout: 200

关于我

❝本文收录于 GitHub 山月行博客: shfshanyue/blog,内含我在实际工作中碰到的问题、关于业务的思考及在全栈方向上的学习

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • API
    • mardown to html
    • Develop
    • Deploy
    • 关于我
    相关产品与服务
    API 网关
    腾讯云 API 网关(API Gateway)是腾讯云推出的一种 API 托管服务,能提供 API 的完整生命周期管理,包括创建、维护、发布、运行、下线等。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档