1.slate.js + slate-react初始化项目
2.keydown事件绑定

v0.47.9

command指令

特点的选择域
当前的选择域
选择操作
在特定节点上
在顶级节点上
历史记录

执行命令

在slate事件中:onKeyDown onPaste
自定义node的事件中
自定义规则中
slate编辑器最外层,通过ref获取editor执行

查询命令

查询与命令类似,但是它们不操纵编辑器的当前值,而是返回有关当前值或特定节点等的信息。

复用及组合命令

  1. 'use strict';
  2. const Controller = require('egg').Controller;
  3. const fs = require('fs');
  4. const path = require('path');
  5. const puppeteer = require('puppeteer');
  6. const moment = require('moment');
  7. class ReportController extends Controller {
  8. async index() {
  9. const { ctx } = this;
  10. // 启动pupeteer,加载页面
  11. const browser = await puppeteer.launch();
  12. const page = await browser.newPage();
  13. await page.setViewport({
  14. width: 1920,
  15. height: 1080
  16. });
  17. // 打开页面
  18. await page.goto('http://localhost:8080', {
  19. waitUntil: 'networkidle0'
  20. });
  21. // 生成pdf
  22. let pdfFileName = `体检报告_${moment(new Date()).format('YYYYMMDDHHmm') + '.pdf'}`
  23. let pdfFilePath = path.join(__dirname, '../../temp/', pdfFileName);
  24. await page.pdf({
  25. path: pdfFilePath,
  26. format: 'A4',
  27. scale: 1,
  28. printBackground: true,
  29. landscape: false,
  30. displayHeaderFooter: false
  31. });
  32. browser.close();
  33. // 返回文件路径
  34. ctx.status = 200
  35. ctx.body = {
  36. url: `${ctx.request.protocol}://${ctx.request.host}/resource/${pdfFileName}`
  37. }
  38. }
  39. }
  40. module.exports = ReportController;