Top Related Projects
The HTML Presentation Framework
A simple, in-browser, markdown-driven slideshow tool.
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
reveal.js on steroids! Get beautiful reveal.js presentations from any Markdown file
PDF exporter for HTML presentations
The entrance repository of Markdown presentation ecosystem
Quick Overview
Nodeppt is a powerful and modern web presentation tool that allows users to create interactive slideshows using Markdown, HTML, CSS, and JavaScript. It offers a command-line interface for creating, managing, and presenting slides, as well as a web-based editor for real-time editing and previewing.
Pros
- Supports Markdown, HTML, CSS, and JavaScript for flexible slide creation
- Offers a wide range of built-in themes and animations
- Includes features like speaker notes, presenter mode, and remote control
- Provides a web-based editor for easy collaboration and real-time previewing
Cons
- Learning curve for users unfamiliar with Markdown or web technologies
- Limited documentation and examples compared to more established presentation tools
- May require additional setup for advanced features or custom themes
- Dependency on Node.js environment for installation and usage
Code Examples
- Creating a basic slide:
# Title Slide
## Subtitle
---
# Content Slide
- Bullet point 1
- Bullet point 2
- Bullet point 3
- Adding speaker notes:
# Slide with Speaker Notes
Content visible to the audience
Note:
These are speaker notes that only the presenter can see
- Embedding HTML and CSS:
# Slide with Custom Styling
<div class="custom-box">
<h2>Custom Content</h2>
<p>This is a custom styled element</p>
</div>
<style>
.custom-box {
background-color: #f0f0f0;
padding: 20px;
border-radius: 10px;
}
</style>
Getting Started
-
Install nodeppt globally:
npm install -g nodeppt
-
Create a new presentation:
nodeppt create my-presentation
-
Edit the
my-presentation.md
file with your slides content. -
Start the presentation:
nodeppt serve my-presentation.md
-
Open your browser and navigate to
http://localhost:8080
to view and present your slides.
Competitor Comparisons
The HTML Presentation Framework
Pros of reveal.js
- More mature and widely adopted project with a larger community
- Extensive plugin ecosystem for added functionality
- Better documentation and examples available
Cons of reveal.js
- Steeper learning curve for beginners
- Requires more setup and configuration for advanced features
Code Comparison
reveal.js:
<div class="reveal">
<div class="slides">
<section>Slide 1</section>
<section>Slide 2</section>
</div>
</div>
nodeppt:
# Slide 1
---
# Slide 2
Key Differences
- reveal.js uses HTML structure for slides, while nodeppt uses Markdown
- nodeppt offers a simpler syntax for creating basic presentations
- reveal.js provides more flexibility for complex layouts and animations
Use Cases
- Choose reveal.js for feature-rich, highly customizable presentations
- Opt for nodeppt when quick, simple slide creation is the priority
Community and Support
- reveal.js has a larger user base and more frequent updates
- nodeppt caters more to Chinese-speaking users, with bilingual documentation
Performance
- Both tools are lightweight and perform well in modern browsers
- reveal.js may have a slight edge in handling complex animations and transitions
Integration
- reveal.js integrates easily with various web technologies
- nodeppt focuses on Node.js integration and command-line usage
A simple, in-browser, markdown-driven slideshow tool.
Pros of remark
- More active development and larger community support
- Highly customizable with a plugin system
- Better documentation and examples
Cons of remark
- Steeper learning curve for beginners
- Requires more setup and configuration
Code comparison
remark:
var slideshow = remark.create({
source: "# Slide 1\n---\n# Slide 2"
});
nodeppt:
nodeppt create myslides.md
nodeppt start
Summary
remark is a more flexible and powerful tool for creating presentations using Markdown, offering extensive customization options and a robust plugin ecosystem. It's well-suited for developers who want fine-grained control over their presentations.
nodeppt, on the other hand, provides a simpler, more straightforward approach to creating presentations. It's easier to get started with and offers a good balance of features for users who want a quick solution without extensive configuration.
Both tools have their strengths, and the choice between them depends on the user's specific needs, technical expertise, and desired level of customization.
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
Pros of impress.js
- More flexible and customizable for creating non-linear, zooming presentations
- Wider community support and longer development history
- Better suited for creating visually stunning, interactive presentations
Cons of impress.js
- Steeper learning curve, especially for users without HTML/CSS/JS experience
- Requires more manual work to create presentations compared to nodeppt
- Less optimized for quickly creating simple, linear presentations
Code Comparison
impress.js:
<div id="impress">
<div class="step" data-x="0" data-y="0">Slide 1</div>
<div class="step" data-x="1000" data-y="500">Slide 2</div>
</div>
<script src="impress.js"></script>
<script>impress().init();</script>
nodeppt:
title: My Presentation
speaker: John Doe
# Slide 1
Content for slide 1
# Slide 2
Content for slide 2
Key Differences
- impress.js uses HTML structure with data attributes for positioning, while nodeppt uses Markdown syntax
- impress.js requires manual JavaScript initialization, whereas nodeppt handles this automatically
- nodeppt provides a simpler, more opinionated approach to creating presentations, while impress.js offers more flexibility and control over layout and transitions
reveal.js on steroids! Get beautiful reveal.js presentations from any Markdown file
Pros of reveal-md
- Simpler setup and usage, requiring fewer dependencies
- Better documentation and examples for quick start
- More active development and community support
Cons of reveal-md
- Less customization options for slide layouts and themes
- Limited support for complex animations and transitions
- Fewer built-in features for code highlighting and live demos
Code Comparison
reveal-md:
---
title: My Presentation
theme: solarized
---
# Slide 1
- Point 1
- Point 2
---
# Slide 2
nodeppt:
title: My Presentation
speaker: John Doe
url: https://github.com/ksky521/nodeppt
transition: slide3
files: /js/demo.js,/css/demo.css
[slide]
# Slide 1
- Point 1
- Point 2
[slide]
# Slide 2
Summary
reveal-md is simpler to use and has better documentation, making it ideal for quick presentations. nodeppt offers more customization options and built-in features, but has a steeper learning curve. Both tools allow creating presentations using Markdown, but nodeppt provides more advanced configuration options in the front matter. Choose reveal-md for simplicity and ease of use, or nodeppt for more complex presentations with advanced features.
PDF exporter for HTML presentations
Pros of Decktape
- Supports a wide range of HTML presentation frameworks (e.g., reveal.js, impress.js, Shower)
- Generates high-quality PDF exports with accurate rendering
- Offers a command-line interface for easy integration into build processes
Cons of Decktape
- Requires Node.js and additional dependencies to be installed
- Limited to exporting existing presentations, doesn't provide tools for creating them
- May require more setup and configuration compared to Nodeppt
Code Comparison
Decktape (CLI usage):
decktape reveal https://example.com/presentation.html output.pdf
Nodeppt (Creating a new presentation):
nodeppt create myslides.md
nodeppt serve myslides.md
Key Differences
- Nodeppt is primarily focused on creating and presenting Markdown-based slides, while Decktape specializes in exporting existing HTML presentations to PDF.
- Nodeppt offers a more integrated solution for both creation and presentation, whereas Decktape is specifically designed for high-quality PDF exports.
- Decktape supports a broader range of presentation frameworks, making it more versatile for exporting various types of presentations.
Use Cases
- Choose Nodeppt for quickly creating and presenting Markdown-based slides with a built-in server and live reload features.
- Opt for Decktape when you need to generate high-quality PDF exports from existing HTML presentations, especially if you're working with multiple presentation frameworks.
The entrance repository of Markdown presentation ecosystem
Pros of Marp
- Cross-platform support with web, CLI, and desktop applications
- Extensive theming capabilities and customization options
- Active development and community support
Cons of Marp
- Steeper learning curve for users new to Markdown
- Limited real-time collaboration features
- Fewer built-in slide transitions and animations
Code Comparison
Marp:
---
marp: true
theme: default
---
# Slide 1
Content for slide 1
---
# Slide 2
Content for slide 2
Nodeppt:
title: Presentation Title
speaker: Speaker Name
url: https://github.com/ksky521/nodeppt
[slide]
# Slide 1
Content for slide 1
[slide]
# Slide 2
Content for slide 2
Key Differences
- Syntax: Marp uses standard Markdown with YAML frontmatter, while Nodeppt uses custom slide separators and metadata
- Ecosystem: Marp offers a wider range of tools and integrations
- Focus: Nodeppt emphasizes simplicity and ease of use, while Marp prioritizes flexibility and customization
Use Cases
- Marp: Ideal for developers and technical presenters who prefer working in Markdown and need advanced customization options
- Nodeppt: Well-suited for users who want a straightforward, web-based presentation tool with minimal setup
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
nodeppt 2.0
ç´¯æ»ç´¯æ´»å¹²ä¸è¿å PPT çï¼
> æ¥çææï¼https://nodeppt.js.org
nodeppt 2.0 åºäºwebslidesãwebpackãmarkdown-itãposthtml éæï¼æ°ææ
Install
npm install -g nodeppt
TODO
- bug fix
- å¢å å¤é¡µç¼è¾å ¬å ±èµæºï¼è¯´äººè¯å°±æ¯ splitChunks
Usage
ç®åäºï¼å°±ä¸ä¸ªå½ä»¤ï¼
- newï¼ä½¿ç¨çº¿ä¸æ¨¡æ¿å建ä¸ä¸ªæ°ç md æ件
- serveï¼å¯å¨ä¸ä¸ª md æ件ç webpack dev server
- buildï¼ç¼è¯äº§åºä¸ä¸ª md æ件
# create a new slide with an official template
$ nodeppt new slide.md
# create a new slide straight from a github template
$ nodeppt new slide.md -t username/repo
# start local sever show slide
$ nodeppt serve slide.md
# to build a slide
$ nodeppt build slide.md
帮å©
# help
nodeppt -h
# è·å帮å©
nodeppt serve -h
æ¼è®²è 模å¼
nodeppt ææ¼è®²è
模å¼ï¼å¨é¡µé¢ url åé¢å¢å ?mode=speaker
æ¢å¯ä»¥æå¼æ¼è®²è
模å¼ï¼åå±åæ¥
Keyboard Shortcuts
- Page: â/â/â/â Space Home End
- Fullscreen: F
- Overview: -/+
- Speaker Note: N
- Grid Background: Enter
å ¬å ±èµæºï¼public æ件夹
å¦æ项ç®æ件夹ä¸ï¼åå¨public
æ件夹ï¼å¯ä»¥ç´æ¥éè¿ url 访é®ï¼åèwebpack dev server
ç contentBase
é项ã
å¨build
çæ¶åï¼public æ件夹ä¸çæ件ä¼å®å
¨ copy å°dist
æ件夹ä¸
ç¼å
æä½³ä½éªæ¯ chrome æµè§å¨ï¼æ¬æ¥å°±æ¯ç»åæ¼ç¤ºç¨çï¼æ以就å«èèé Chrome æµè§å¨å ¼å®¹é®é¢äºï¼
è¿é说ä¸æä¹ç¼åã
åºæ¬è¯æ³
æ´ä¸ª markdown æ件å为两é¨åï¼ç¬¬ä¸é¨åæ¯åå¨æåé¢ç**é
ç½®**ï¼ç¶åæ¯ä½¿ç¨<slide>
éå¼çæ¯é¡µå¹»ç¯çå
容ã
é ç½®
nodeppt çé ç½®æ¯ç´æ¥åå¨ md æ件顶é¨çï¼éç¨ yaml è¯æ³ï¼ä¾å¦ä¸é¢é ç½®ï¼
title: nodeppt markdown æ¼ç¤º
speaker: ä¸æ°´æ¸
url: https://github.com/ksky521/nodeppt
js:
- https://www.echartsjs.com/asset/theme/shine.js
prismTheme: solarizedlight
plugins:
- echarts
- mermaid
- katex
- title: æ¼è®²ä¸»é¢
- speakerï¼æ¼è®²è
- urlï¼å°å
- jsï¼js æ件æ°ç»ï¼æ¾å° body ä¹å
- cssï¼css æ件æ°ç»ï¼æ¾å°å¤´é¨
- prismThemeï¼prism é
è²ï¼åå¼èå´
['dark', 'coy', 'funky', 'okaidia', 'tomorrow', 'solarizedlight', 'twilight']
- pluginsï¼ç®åæ¯æ echartsï¼mermaidå katex ä¸ä¸ªæ件
æ件
ç®å nodeppt æ¯æ å¾è¡¨ echartsï¼æµç¨å¾ mermaidï¼æ°å¦ç¬¦å· KaTeX ä¸ä¸ªæ件ã
echarts
echarts 主é¢é
è²å¯ä»¥ç´æ¥å¨yaml
é
ç½®ç js ä¸å¼å
¥ãecharts éç¨fence
è¯æ³ï¼å¦ä¸ï¼
{
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: 'line'
}]
}
详è§site/echarts.md
mermaid
mermaid 主é¢é
è²å¯ä»¥ç´æ¥å¨yaml
é
ç½®ç js ä¸å¼å
¥ãmermaid éç¨fence
è¯æ³ï¼å¦ä¸ï¼
sequenceDiagram
Alice ->> Bob: Hello Bob, how are you?
Bob-->>John: How about you John?
Bob--x Alice: I am good thanks!
Bob-x John: I am good thanks!
Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row.
Bob-->Alice: Checking with John...
Alice->John: Yes... John, how are you?
详è§site/mermaid.md
ketex
åèï¼markdown-it-katexè¯æ³
<slide>
è¯æ³
nodeppt ä¼æ ¹æ®<slide>
对æ´ä¸ª markdown æ件è¿è¡æåï¼ææå页çå¹»ç¯çå
容ã<slide>
æ ç¾æ¯æä¸é¢æ ç¾ï¼
- class/style çï¼æ£å¸¸ç class ç±»ï¼å¯ä»¥éè¿è¿ä¸ªæ§å¶å± ä¸ï¼aligncenterï¼ï¼å 容ä½ç½®ï¼èæ¯è²ç
- imageï¼èæ¯å¾çï¼åºæ¬è¯æ³
image="img_url"
- videoï¼èæ¯è§é¢ï¼åºæ¬è¯æ³
video="video_src1,video_src2"
- :classï¼wrap ç classï¼ä¸é¢è¯¦è§£
æ¯ä¸ª slide ä¼è§£ææä¸é¢ç html ç»æï¼
<section class="slide" attrs...><div class="wrap" wrap="true">// å
·ä½ markdown 渲æçå
容</div></section>
å
¶ä¸<slide>
çclass
çä¼è¢«è§£æå° <section>
æ ç¾ä¸é¢ï¼è:class
å被解æå°div.wrap
ä¸é¢ï¼ä¾å¦ï¼
<slide :class="size-50" class="bg-primary"></slide>
output 为ï¼
<section class="slide bg-primary"><div class="wrap size-50" wrap="true">// å
·ä½ markdown 渲æçå
容</div></section>
èæ¯ï¼å¾ç
<slide>
çimage
ä¼è¢«è§£ææèæ¯å¤§å¾ï¼å¸¸è§çæ¯ææ¹å¼æï¼
<slide image="https://source.unsplash.com/UJbHNoVPZW0/">
# è¿æ¯ä¸ä¸ªæ®éçèæ¯å¾
<slide image="https://source.unsplash.com/UJbHNoVPZW0/ .dark">
# è¿å¼ èæ¯å¾ä¼å¨å¾çä¸é¢èä¸å±åé»è²çéæå±
<slide image="https://source.unsplash.com/UJbHNoVPZW0/ .light">
# è¿å¼ èæ¯å¾ä¼å¨å¾çä¸é¢èä¸å±åç½è²çéæå±
<slide class="bg-black aligncenter" image="https://source.unsplash.com/n9WPPWiPPJw/ .anim">
# è¿å¼ èæ¯å¾ä¼ç¼æ
¢å¨
详è§site/background.mdåå¨çº¿æ¼ç¤º
æ ·å¼
æ ·å¼å¤ªå¤ï¼å ·ä½è¯¦è§site/classes.mdåå¨çº¿æ¼ç¤º
å¸å±
nodeppt è¿æ¬¡ä½¿ç¨webslides
çå¸å±ï¼æ¯æ丰å¯çå¸å±ï¼å®å¨å¤ªå¤äºï¼ç´æ¥çææ¡£site/layout.mdåå¨çº¿æ¼ç¤º
attribute
åèmarkdown-it-attrsï¼æ¯æäºattribute
ï¼ä¿®æ¹å¢å å¤ class æ¯æçåè½ã
å
¶ä¸ï¼..class
ä¼å¾ä¸ä¸çº§èç¹æ·»å classï¼æ¯æ{.class1.class2}
è¿ç§å¤ class çè¯æ³ãç¨æ³ä¸¾ä¾ï¼
# header {.style-me.class2}
paragraph {data-toggle=modal}
Output:
<h1 class="style-me class2">header</h1>
<p data-toggle="modal">paragraph</p>
Use the css-module green on this paragraph. {.text-intro}
Output:
<p class="text-intro">Use the css-module green on this paragraph.</p>
- list item **bold** {.red}
Output:
<ul>
<li class="red">list item <strong>bold</strong></li>
</ul>
- list item **bold**
{.red}
Output:
<ul class="red">
<li>list item <strong>bold</strong></li>
</ul>
image å¢å¼º
å¯¹äº image ï¼æ¯æå¤é¢å
裹ä¸å±çåæ³ï¼å
·ä½è¯æ³ !![](å¾çå°å å±æ§)
ï¼ä¾å¦ï¼
!![](https://webslides.tv/static/images/iphone.png .size-50.alignleft)
Outputï¼
<img src="https://webslides.tv/static/images/iphone.png" class="size-50 alignleft" />
!![figure](https://webslides.tv/static/images/setup.png .aligncenter)
Output:
<figure><img src="https://webslides.tv/static/images/setup.png" class="aligncenter" /></figure>
button
nodeppt ç button æ¯ç±»ä¼¼link
è¯æ³çï¼æ¯æèè²ãåè§ã空å¿å icon çæ¬ç buttonï¼
[æ®éæé®](){.button} [åè§æ®éæé®](){.button.radius}
[空å¿](){.button.ghost} [:fa-github: åé¢å¸¦ icon](){.button}
Iconï¼FontAwesome
nodeppt ç icon æ¯æ FontAwesome è¯æ³ï¼
:fa-xxx:
â<i class="fa fa-xxx"></i>
:~fa-xxx:~
â<span><i class="fa fa-xxx"></i></span>
::fa-xxx::
â å级<i class="fa fa-xxx"></i>
ï¼å³ä¸ä¼è¢«p
å 裹
span
代ç ä¿®æ¹èªmarkdown-it-spanï¼æ¯æ attr
è¯æ³ï¼åºæ¬ç¨æ³ï¼
:span:
:span: {.text-span}
å¨æ
nodeppt ä¸å¦æ¢å¾çæ¯æå¨æï¼2.0 çæ¬æ¯æå¨æ主è¦æ¯é¡µé¢å çå¨æã
æ¯æå¨æå æ¬ï¼
- fadeIn
- zoomIn
- rollIn
- moveIn
- fadeInUp
- slow
å¨éè¦æ¯æçå¨æç¶èç¹æ·»å .build
æè
å¨å
·ä½çæ个å
ç´ ä¸æ·»å .tobuild+å¨æ class
å³å¯ã
æç
§æ¯ä¾ï¼nodeppt è¿æ¯æanimate.css
çå¨æå¦~
详ç»æ¥çæ件ï¼site/animation.mdåå¨çº¿æ¼ç¤º
使ç¨å¼ºå¤§ç:::
å®æå¤æå¸å±
:::
è¯æ³æ¯æ©å±äº markdown-it-container è¯æ³ï¼é»è®¤æ¯ä»»æ tagï¼ä¾å¦
:::div {.content-left}
## title
:::
Outputï¼
<div class="content-left"><h2>title</h2></div>
è¿æ¯æï¼tag
åµå¥ï¼é¤æ¤ä¹å¤ï¼æ¯æçç»ä»¶å
æ¬ï¼
- cardï¼å¡çï¼ä¸è¾¹æ¯å¾çï¼ä¸è¾¹æ¯å 容
- columnï¼column å¤æ å¸å±
- shadowboxï¼å¸¦é´å½±ççå
- stepsï¼æ¥éª¤ç»ä»¶
- ctaï¼
- galleryï¼å¾ç
- flexblockï¼flex block å¸å±ï¼æ¯æå¤ä¸ªåç±»å
- note: æ¼è®²æ³¨é
åºæ¬è¯æ³æ¯ï¼
:::TYPE {.attrs}
## 第ä¸é¨å
ä½¿ç¨ hr æ ç¾éå¼
---
## 第äºé¨å
è¿éçå
容ä¹æ¯å¦
:::
详ç»å¯ä»¥ç component é¨åç markdown æ件åå¨çº¿æ¼ç¤º
æå°ï¼å¯¼åº pdfï¼
chrome æµè§å¨ï¼ç´æ¥å¨ç¬¬ä¸é¡µ command+P/ctrl+P
å³å¯
é«çº§ç©æ³
å¦æä¸é¢
nodeppt.config.js
å¨ nodeppt æ§è¡è·¯å¾ä¸å建nodeppt.config.js
æ件ï¼å¯ä»¥é
ç½®è·webpack
ç¸å
³çé项ï¼å¦å¤å¯ä»¥æ¯æèªç nodeppt æ件ã
é»è®¤å
ç½®çconfig.js
å
容å¦ä¸ï¼
/**
* @file é»è®¤é
ç½®
*/
module.exports = () => ({
// project deployment base
baseUrl: '/',
// where to output built files
outputDir: 'dist',
// where to put static assets (js/css/img/font/...)
assetsDir: '',
// filename for index.html (relative to outputDir)
indexPath: 'index.html',
// æ件ï¼å
æ¬ markdown å posthtml
plugins: [],
// chainWebpack: [],
// whether filename will contain hash part
filenameHashing: true,
// boolean, use full build?
runtimeCompiler: false,
// deps to transpile
transpileDependencies: [
/* string or regex */
],
// sourceMap for production build?
productionSourceMap: true,
// use thread-loader for babel & TS in production build
// enabled by default if the machine has more than 1 cores
parallel: () => {
try {
return require('os').cpus().length > 1;
} catch (e) {
return false;
}
},
// multi-page config
pages: undefined,
// <script type="module" crossorigin="use-credentials">
// #1656, #1867, #2025
crossorigin: undefined,
// subresource integrity
integrity: false,
css: {
extract: true
// modules: false,
// localIdentName: '[name]_[local]_[hash:base64:5]',
// sourceMap: false,
// loaderOptions: {}
},
devServer: {
/*
host: '0.0.0.0',
port: 8080,
https: false,
proxy: null, // string | Object
before: app => {}
*/
}
});
parser plugin
解ææ件åä¸¤ç±»ï¼ markdown-it
å posthtml
ï¼
- markdown-itï¼æ¯è§£æ markdown æ件çï¼å¦ææ¯å¢å¼º markdown è¯æ³ï¼å¯ä»¥ç¨è¿ç±»æ件
- posthtmlï¼æ¯å¤ç html æ ç¾çï¼å¦ææ¯ä¿®æ¹è¾åºç html å 容ï¼å¯ä»¥ç¨è¿ç±»æ件
å®ä¹ä¸ä¸ª plugin ï¼
module.exports = {
// è¿éç id å¿
须以 markdown/posthtmlå¼å¤´
// åå«å¯¹åº markdown-itå posthtml æ件è¯æ³
id: 'markdown-xxx',
// è¿éç apply æ¯æ件å®é
çå
容ï¼è¯¦ç»æ¥ç markdown-itå posthtml æ件å¼å
apply: () => {}
};
webslides plugin
WebSlides æ件éè¦åå°ä¸ä¸ª js æ件ä¸ï¼ç¶åä½ä¸ºæ°ç»æ¾å°window.WSPlugins_
ä¸ï¼ç¶åéè¿å¨ md 页é¢çé
ç½®ï¼yamlï¼æ·»å js çæ¹æ³å¼å
¥ã
js: - webslide_plugins.js
// webslide_plugins.jså
容
window.WSPlugins_ = [
{
id: 'webslide_plugin_name',
// ä¸é¢æ¯å¯¹åºçæ件类
apply: class Plugin {}
}
];
åèWebSlides ææ¡£
Templateï¼èªå¶æ¨¡æ¿
åènodeppt-template-defaultã
ç¶å使ç¨nodeppt new username/repo xxx.md
使ç¨
Thanks
Top Related Projects
The HTML Presentation Framework
A simple, in-browser, markdown-driven slideshow tool.
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
reveal.js on steroids! Get beautiful reveal.js presentations from any Markdown file
PDF exporter for HTML presentations
The entrance repository of Markdown presentation ecosystem
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot