Eagerly waiting for this function, maybe it can be added to docsify-cli.
EDIT by maintainers:
Sorry I don't have time to do now π£, if you are interested, you can contribute.
For comparison, maybe this is a start?
so why not use gitbook π
I found madoko:
You can:
@jrappen that looks cool, but seems it does the same things that gitbook can do
@QingWei-Li I'm new to docsify, would love to see this feature. I'm interested in contributing, can you point me in the right direction?
@dietergoetelen Seems the SSR API can achieve this https://docsify.js.org/#/ssr?id=deploy-for-your-vps
Hi @dietergoetelen,
Now part of the compiler can run in Node, you can refer to docsify-server-renderer. We can read the files and then compile them like docsify-server-renderer do the same. Would you like to try it?
@QingWeil-Li Was this close because it's now possible? Wonβt fix?
@maoueh
GitBook is recommended if you need to build static files.
But GitBook is a paid product, It's only free for "non private" projects. Can we at least leave the PR Welcome?
@QingWei-Li
A really simple solution would be to just add a print-css and reference the browser print function with a simple button (printing to PDF can then be chosen by the user). What do you think?
+1 on the feature request.
@jrappen I stumbled upon Madoko a while back. The main issue with it is that it is written in Koka, which no one knows apart from its author Daan Leijen, who is also the author of that package. For a while it was hosted on CodePlex, and it was really difficult to find the sources, let alone understand them, or contribute. I suppose this is now on GitHub because MS acquired the company... The reference manual looks absolutely amazing, and it's difficult to think that only one person is behind this; but IMO that summarises the project well. It looks awesome, but it's a black-box, written in sanskrit, with a single contributor.
@egoist Have a look at the reference manual; it serves a different purpose than GitBook. Madoko was designed to write scientific publication-like content; it supports LaTeX maths, internal references, citations, and footnotes out of the box. GitBook is meant to be an advanced documentation-writing tool, oriented towards web-publishing. Let us not compare pears and apples.
@QingWei-Li can it output pdf? need!
+1 on the feature request.
+1 on the feature request.
https://github.com/egoist/presite might be useful here
Anyone that wants this feature, why do you want it? Has the live client-side markdown rendering been too slow for you? Is it hindering your user experience?
I am just curious, because performance updates for the sake of performance updates may not be as productive use of time compared to other features that are being planned. Please let us know if you encountered any performance problems that make a difference to the user experience (so far I haven't seen one that is significant, but it could be possible if you have giant markdown pages then that's an issue, for example).
@anikethsaha Since you listed this in v5, I'll re-open and add it to the 5.0 project so we can track it.
Mostly because static files are easy to deploy across a cdn Service like
Netlify
On Sun, May 10, 2020, 15:50 Joe Pea notifications@github.com wrote:
Just curious, anyone that wants this feature, why do you want it? Has the
live client-side markdown rendering been too slow for you? Is it hindering
your user experience?@anikethsaha https://github.com/anikethsaha Since you listed this in
v5, I'll re-open and add it to the 5.0 project so we can track it.β
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/docsifyjs/docsify/issues/136#issuecomment-626401785,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGTNWYJT5DYMQ5ELKDQPTLRQ4VSPANCNFSM4DEBBIDA
.
@bountyx Markdown files are also static files.
Ah! SEO!
That's a good reason to serve HTML, to make things more indexable by search engines.
@trusktr there is an issue with plugins. most of the things in docsify is a plugin. we cant make them work if we don't have the DOM. So either we need to do it with jsdom while but this won't give 100% accurate results.
This will be a blocking issue for v5.
Maybe also doesn't have to be for 5.0, it can be for "when it's ready". :) It's a bit complex.
Maybe we can build it on NW.js instead of JSDom.
@trusktr yeah, we can remove this from the roadmap, this will be blocking issue
π
+1 on the feature request.
I using docsify for a online converter:
opml outline file to md;md file using docsify;md file to html file;WeasyPrint (python package) convert html to PDF.now i am blocked in the step 3.
because docsify server renderer have some probreams:
need 2 function:
We have a blocking issue as plugins won't work if there is no DOM.
Many plugins are using browser's features like local storage.
So i am not sure how long it will take or even it will be done or not
Do plugins work with Docsify's SSR?
yea but after the mounting of the DOM. plugins are intended to run after mounting when the core has access to DOM object ( location, window)
SSR generates HTML, so we're pretty close to accomplishing the first version of this already.
We can just have it output HTML to the file system instead of to the client. We can use a simple crawler that crawls every link and for every link it can output each page to the filesystem using the Renderer from docsify-server-renderer.
Even without plugins, this can give us exactly the same result as we see at https://docsify.now.sh (but static instead of SSR).
With jsdom in place the DOM (although it is faked) will exist in order for plugins to use it. Plugins should work fine unless they do something extravagant like use WebGL or some brand new DOM APIs that aren't implemented yet.
We can write in the documentation how to test plugins for all three environments; SSR, Static, and real browser.
Another idea: once we have the filesystem output, the same crawler can also index everything for the search results, and save it as static JSON that the client can fetch.
I don't think plugins works in SSR.
Not sure though, I need to give it a test.
Happy to accept POC for this.
I had the idea of rendering the main in jsdom and output the rendering in an HTML file.
I had the idea of rendering the main in jsdom and output the rendering in an HTML file.
Yeah! I think we can get the vast majority of plugins working with JSDom in the mix. We run the renderer for each page, call the same plugin hooks, then take a snapshot. If a plugin needed to add a DOM event handler it won't matter for example. Some plugins might like to programmatically modify the DOM, which should be fine if it is done synchronously.
There might be plugins that work asynchronously though. We need to add a feature so that plugins can notify us when they are finished. Maybe we just allow all plugins to use async functions, and await for them to complete?
@anikethsaha @jhildenbiddle I think we can achieve static site generation as a non-breaking change using the current docsify-server-renderer package. We just need to add some code to automatically run each page through the renderToString method. It can be a semver-minor update.
Then for a breaking change, once we re-vamp plugins to make them more robust and to allow them to work on both sides or similar, we can make the breaking changes.
Can we move to 4.x?
Note that if it is in the 4.x project board, it doesn't mean that we will strictly release it under v4, but that technically it _can_ be released under v4 if we don't release a major version first. But if we, for example, prioritize to release some breaking changes in v5, then we can always move incomplete issues from 4.x to 5.x as changes that will be non-breaking in v5, while the new 6.x board will track new breaking changes. So we can keep issues rolling from board to board if they aren't completed yet.
I'm guessing you probably already know what I'm going to say... :wink:
My vote would be to move to v5 for the following reasons:
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
I'm looking forward to it. π
Most helpful comment
+1 on the feature request.