前言

最近热衷于Docker,由于这段时间使用Docker来折腾自己的服务器,越来越感觉这是一种极其被应该推广的技术,因此想在公司内部也做一次技术分享。当然,如果只是做的PPT,我就不写这文章了。既然把Docker说这么好,那就想办法用Docker来搭建一个在线的PPT展示网站吧。

寻找合适的工具

在网上搜了一下,发现reveal.js这个工具的展示效果非常好,它基于HTML即可完成在线PPT的制作,而且在移动设备上也有非常好的兼容性,同时也支持直接用markdown语法来写,毫无疑问,这个就是我要找的工具,在Docker hub上搜索了一下,果然已经有现成的镜像,对比了一下,最后决定选用nbrown/revealjs。当然如果你完全不懂HTML,官方也提供了一个在线版的可视化编辑器:https://slides.com/

开始搭建

还记得之前写的这篇:Centos7.4下用Docker-Compose部署WordPress(续)-服务器端用Nginx作为反向代理并添加SSL证书(阿里云免费DV证书) 的文章吗?

基于之前的环境,我们已经有了:

  • 安装好的docker和docker compose环境
  • Docker network nginx-proxy
  • ssl证书存放的目录:wp_certs
  • 从阿里云申请免费DV的方法

假设上面这些都已经完成,搭建一个基于HTTPS的在线PPT演示网站就是分分钟的事?确实,我们仅需要再写一个docker-compose.yml配置文件即可:

version: '3'

services:
revealjs:
#image: nbrown/revealjs:latest
image: nbrown/revealjs:3.5.0-onbuild
container_name: myppt
restart: always
expose:
- 8000 # 这个是镜像默认的端口
volumes:
- $PWD/content/index.html:/reveal.js/index.html # 首页
- $PWD/content/tutorial/docker/index.html:/reveal.js/tutorial/docker/index.html # Docker教程作为一个独立的页面
environment:
VIRTUAL_HOST: ppt.fujiabin.com # 选用这个域名,需要在域名解析中绑定一下A记录 networks:
default:
external:
name: nginx-proxy # 这个很眼熟,就是以前nginx反向代理的那个docker网络

执行:

docker-compose up -d

网站就建设完成了。

开始编写PPT

revealjs的github源码上下载源码,在demo.html中,包含了所有的使用方法,我根据自己的使用过程简单整理下它的基本功能。

键盘事件

  • esc: 可以切换到PPT页面的预览模式
  • b: 黑屏模式,可以在需要暂停演示但又不想听众被PPT内容吸引的时候进入这个模式
  • s: Speader View模式,可以在扩展屏幕上展示提示内容、当前时间、已经展示的时间、下一屏内容等信息
  • 方向键: 上下左右切换PPT(对,你没看错,revealjs也可以写上下切换的PPT)

样式及动画效果

revealjs支持好多种PPT的过场动画效果、主题样式,也支持自定义PPT背景(支持图片、视频和gif)。

你可以在demo.html中找到所有你喜欢的这些内容并应用在自己的PPT中。

语法简介

所有的PPT页,需要包含到<div class="slides"></div>这个标签中,每一页是一个<section></section>语块。

markdown语法解析内容

语块上加上标签data-markdown即可:<section data-markdown></section>

当前页上可上下切换的内容

在第一级<section></section>中嵌套加入<section></section>,每个语块即为当前页面可上下切换的内容块。

当前页分段显示

<section id="fragments"></section>标签内部,每个class="fragment"的元素都将作为分段内容来进行展示。

高亮代码块

<pre><code class="hljs" data-trim contenteditable>
xxxx
</code></pre>

漂亮的表格

<table>
<thead>
<tr>
<th>Item</th>
<th>Value</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apples</td>
<td>$1</td>
<td>7</td>
</tr>
<tr>
<td>Lemonade</td>
<td>$2</td>
<td>18</td>
</tr>
<tr>
<td>Bread</td>
<td>$3</td>
<td>2</td>
</tr>
</tbody>
</table>

内容引用

<blockquote cite="xxxxx">
</blockquote>

非常实用的Speaker View功能

<aside class="notes">标签中的内容,页面上不可见,但在Speaker View模式下写一些演讲提示内容:

<aside class="notes">
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).
</aside>

其他特性

  • 局部内容放大
  • 内部页面跳转
  • 导出为PDF
  • 可扩展javascript api
  • 自动播放
  • 自定义键盘事件
  • ...等

最终,在本地完成了HTML文件后,将文件上传或拷贝到服务器上指定的位置,我的成品如下:Docker入门,虽然也没用到所有特性,但是常用的那些基本都有涉及。


本文在博客园和我的个人博客www.fujiabin.com上同步发布。转载请注明来源。


参考文档

基于docker+reveal.js搭建一个属于自己的在线ppt网站的更多相关文章

  1. 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课

    序:这段时间忙于奔波,好久没有更新了,今天更新一下,继续上节课的完善讲解,算是对前段时间的一个总结吧.披星戴月的时光也算有点应用效果了. 对于webgl(three.js)性能这一块我在上节课< ...

  2. 如何用webgl(three.js)搭建一个3D库房,3D密集架,3D档案室(升级版)

    很长一段时间没有写3D库房,3D密集架相关的效果文章了,刚好最近有相关项目落地,索性总结一下 与之前我写的3D库房密集架文章<如何用webgl(three.js)搭建一个3D库房,3D密集架,3 ...

  3. 如何用webgl(three.js)搭建一个3D库房,3D仓库,3D码头,3D集装箱可视化孪生系统——第十五课

    序 又是快两个月没写随笔了,长时间不总结项目,不锻炼文笔,一开篇,多少都会有些生疏,不知道如何开篇,如何写下去.有点江郎才尽,黔驴技穷的感觉. 写随笔,通常三步走,第一步,搭建框架,先把你要写的内容框 ...

  4. 如何用webgl(three.js)搭建一个3D库房,3D仓库3D码头,3D集装箱,车辆定位,叉车定位可视化孪生系统——第十五课

    序 又是快两个月没写随笔了,长时间不总结项目,不锻炼文笔,一开篇,多少都会有些生疏,不知道如何开篇,如何写下去.有点江郎才尽,黔驴技穷的感觉. 写随笔,通常三步走,第一步,搭建框架,先把你要写的内容框 ...

  5. 手把手搭建一个属于自己的在线 IDE

    背景 这几个月在公司内做一个跨前端项目之间共享组件/区块的工程,主要思路就是在 Bit 的基础上进行开发.Bit 主要目的是实现不同项目 共享 与 同步 组件/区块,大致思路如下: 在 A 项目中通过 ...

  6. 如何使用 VuePress 搭建一个 element-ui 风格的文档网站

    如何使用 VuePress 搭建一个 element-ui 风格的文档网站 { "devDependencies": { "vuepress": "1 ...

  7. 基于Idea从零搭建一个最简单的vue项目

    一.需要了解的基本知识 node.js Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.N ...

  8. 如何用webgl(three.js)搭建一个3D库房-第一课

    今天我们来讨论一下如何使用当前流行的WebGL技术搭建一个库房并且实现实时有效交互 第一步.搭建一个3D库房首先你得知道库房长啥样,我们先来瞅瞅库房长啥样(这是我在网上找的一个库房图片,百度了“库房” ...

  9. 基于Docker的服务器搭建

    -----------基于Docker的多种服务器搭建----------- 开发环境 本机上的虚拟机 Centos7.4 Docker1.13.1 Openssl1.1.1 1 Nginx 1.1 ...

随机推荐

  1. UWP xaml 圆形头像

    圆形头像 去掉黑边 拖动打开图形 圆形头像 现在很多软件都喜欢使用圆形头像 win10 uwp使用圆形头像很简单 <Ellipse Width="200" Height=&q ...

  2. Lustre文件系统测试——obdfilter-survey测试

    Lustre文件系统测试--obdfilter-survey测试 介绍 该测试主要是在lustre文件系统工作环境下进行,将直接在ost上生成工作负载模拟并行文件访问,可准确检测盘阵在lustre文件 ...

  3. jzoj 5230 队伍统计(状压DP)

    Description 现在有n个人要排成一列,编号为1->n .但由于一些不明原因的关系,人与人之间可能存在一些矛盾关系,具体有m条矛盾关系(u,v),表示编号为u的人想要排在编号为v的人前面 ...

  4. LINUX 笔记-grep命令

    grep [-acinv] [--color=auto] '查找字符串' filename 它的常用参数如下: -a :将binary文件以text文件的方式查找数据 -c :计算找到'查找字符串'的 ...

  5. LeetCode 228. Summary Ranges (总结区间)

    Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...

  6. .11-Vue源码之patch(1)

    最近太鸡儿忙了!鸽了一个多月,本来这个都快完了,拖到现在,结果我都不知道怎么写了. 接着上节的话,目前是这么个过程: 函数大概是这里: // line-3846 Vue.prototype._rend ...

  7. rsync 服务部署详解

    第1章 rsync 软件介绍 1.1 什么是rsync rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. http://www.samba.org/ft ...

  8. 关于easyui的datagrid属性出现乱码问题

    今天遇到这个问题也是纠结了好久,经过在网上各种查询总结,得出以下经验: 1:网页字符集设置为UTF-8: <meta content="charset=UTF-8 " /&g ...

  9. Tomcat请求头过大

    今天开发反应Tomcat的请求头过大 <Connector port="8280" protocol="HTTP/1.1" connectionTimeo ...

  10. seajs源码

    /*** Sea.js 3.0.0 | seajs.org/LICENSE.md 中文注释由 李祥威 添加,为个人对细节的理解,官方解释很详细的地方就不说了 难免有错漏,联系我: chuangweil ...