diff --git a/docs/de-de/ssr.md b/docs/de-de/ssr.md new file mode 100644 index 00000000..ab517935 --- /dev/null +++ b/docs/de-de/ssr.md @@ -0,0 +1,121 @@ +# Server client renderer + +See https://docsify.now.sh + +## Why SSR? +- Better SEO +- Feeling cool + +## Quick start + +Install `now` and `docsify-cli` in your project. + +```bash +npm i now -g +npm i docsify-cli -D +``` + +Edit `package.json`. If the documentation in `./docs` subdirectory. + +```json +{ + "name": "my-project", + "scripts": { + "start": "docsify start docs" + }, + "files": [ + "docs" + ], + "docsify": { + "config": { + "basePath": "/docs/", + "loadSidebar": true, + "loadNavbar": true, + "coverpage": true, + "name": "docsify" + } + } +} +``` + +!> The `basePath` just like webpack `publicPath`. You should config it if your docs is in the subdirectory. + +We can preview in the local to see if it works. + +```bash +npm start + +# open http://localhost:4000 +``` + +Publish it! + +```bash +now -p +``` + +Now, You have a support for SSR the docs site. + +## Custom template + +You can provide a templte for entire page's HTML. such as + +```html + + + + + docsify + + + + + + + + + + + + + +``` + +The template should contain these comments for rendered app content. + - `` + - `` + +## Configuration + +You can configure it in a special config file, or `package.json`. + +```js +module.exports = { + tempate: './ssr.html', + config: { + // docsify config + } +} +``` + +## Deploy for your VPS + +You can run `docsify start` directly on your Node server, or write your own server app with `docsify-server-renderer`. + +```js +var Renderer = require('docsify-server-renderer') +var readFileSync = require('fs').readFileSync + +// init +var renderer = new Renderer({ + template: readFileSync('./docs/index.template.html', 'utf-8')., + config: { + name: 'docsify', + repo: 'qingwei-li/docsify' + } +}) + +renderer.renderToString(url) + .then(html => {}) + .catch(err => {}) +``` diff --git a/docs/index.html b/docs/index.html index 703bfb8a..2113a1f1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -36,6 +36,8 @@ maxLevel: 4, subMaxLevel: 2, name: 'docsify', + // basePath: '/docs/', + routerMode: 'history', search: { noData: { '/de-de/': 'Keine Ergebnisse!', @@ -59,8 +61,8 @@ ] } - - + + diff --git a/docs/ssr.html b/docs/ssr.html index 1b24b897..fec85288 100644 --- a/docs/ssr.html +++ b/docs/ssr.html @@ -7,7 +7,7 @@ - + @@ -22,8 +22,8 @@ - - - - + + + + diff --git a/docs/ssr.md b/docs/ssr.md index 39ce9042..ab517935 100644 --- a/docs/ssr.md +++ b/docs/ssr.md @@ -1,3 +1,121 @@ # Server client renderer See https://docsify.now.sh + +## Why SSR? +- Better SEO +- Feeling cool + +## Quick start + +Install `now` and `docsify-cli` in your project. + +```bash +npm i now -g +npm i docsify-cli -D +``` + +Edit `package.json`. If the documentation in `./docs` subdirectory. + +```json +{ + "name": "my-project", + "scripts": { + "start": "docsify start docs" + }, + "files": [ + "docs" + ], + "docsify": { + "config": { + "basePath": "/docs/", + "loadSidebar": true, + "loadNavbar": true, + "coverpage": true, + "name": "docsify" + } + } +} +``` + +!> The `basePath` just like webpack `publicPath`. You should config it if your docs is in the subdirectory. + +We can preview in the local to see if it works. + +```bash +npm start + +# open http://localhost:4000 +``` + +Publish it! + +```bash +now -p +``` + +Now, You have a support for SSR the docs site. + +## Custom template + +You can provide a templte for entire page's HTML. such as + +```html + + + + + docsify + + + + + + + + + + + + + +``` + +The template should contain these comments for rendered app content. + - `` + - `` + +## Configuration + +You can configure it in a special config file, or `package.json`. + +```js +module.exports = { + tempate: './ssr.html', + config: { + // docsify config + } +} +``` + +## Deploy for your VPS + +You can run `docsify start` directly on your Node server, or write your own server app with `docsify-server-renderer`. + +```js +var Renderer = require('docsify-server-renderer') +var readFileSync = require('fs').readFileSync + +// init +var renderer = new Renderer({ + template: readFileSync('./docs/index.template.html', 'utf-8')., + config: { + name: 'docsify', + repo: 'qingwei-li/docsify' + } +}) + +renderer.renderToString(url) + .then(html => {}) + .catch(err => {}) +``` diff --git a/docs/zh-cn/ssr.md b/docs/zh-cn/ssr.md new file mode 100644 index 00000000..ab517935 --- /dev/null +++ b/docs/zh-cn/ssr.md @@ -0,0 +1,121 @@ +# Server client renderer + +See https://docsify.now.sh + +## Why SSR? +- Better SEO +- Feeling cool + +## Quick start + +Install `now` and `docsify-cli` in your project. + +```bash +npm i now -g +npm i docsify-cli -D +``` + +Edit `package.json`. If the documentation in `./docs` subdirectory. + +```json +{ + "name": "my-project", + "scripts": { + "start": "docsify start docs" + }, + "files": [ + "docs" + ], + "docsify": { + "config": { + "basePath": "/docs/", + "loadSidebar": true, + "loadNavbar": true, + "coverpage": true, + "name": "docsify" + } + } +} +``` + +!> The `basePath` just like webpack `publicPath`. You should config it if your docs is in the subdirectory. + +We can preview in the local to see if it works. + +```bash +npm start + +# open http://localhost:4000 +``` + +Publish it! + +```bash +now -p +``` + +Now, You have a support for SSR the docs site. + +## Custom template + +You can provide a templte for entire page's HTML. such as + +```html + + + + + docsify + + + + + + + + + + + + + +``` + +The template should contain these comments for rendered app content. + - `` + - `` + +## Configuration + +You can configure it in a special config file, or `package.json`. + +```js +module.exports = { + tempate: './ssr.html', + config: { + // docsify config + } +} +``` + +## Deploy for your VPS + +You can run `docsify start` directly on your Node server, or write your own server app with `docsify-server-renderer`. + +```js +var Renderer = require('docsify-server-renderer') +var readFileSync = require('fs').readFileSync + +// init +var renderer = new Renderer({ + template: readFileSync('./docs/index.template.html', 'utf-8')., + config: { + name: 'docsify', + repo: 'qingwei-li/docsify' + } +}) + +renderer.renderToString(url) + .then(html => {}) + .catch(err => {}) +``` diff --git a/packages/docsify-server-renderer/README.md b/packages/docsify-server-renderer/README.md index e620f141..8b02dd24 100644 --- a/packages/docsify-server-renderer/README.md +++ b/packages/docsify-server-renderer/README.md @@ -21,7 +21,7 @@ var renderer = new Renderer({ } }) -renderer.renderToString({ url }) +renderer.renderToString(url) .then(html => {}) .catch(err => {}) ``` diff --git a/packages/docsify-server-renderer/index.js b/packages/docsify-server-renderer/index.js index 0b667b6f..d790a0f8 100644 --- a/packages/docsify-server-renderer/index.js +++ b/packages/docsify-server-renderer/index.js @@ -64,13 +64,13 @@ export default class Renderer { if (loadSidebar) { const name = loadSidebar === true ? '_sidebar.md' : loadSidebar - const sidebarFile = this._getPath(resolve(url, `../${name}`)) + const sidebarFile = this._getPath(resolve(url, `./${name}`)) this._renderHtml('sidebar', await this._render(sidebarFile, 'sidebar')) } if (loadNavbar) { const name = loadNavbar === true ? '_navbar.md' : loadNavbar - const navbarFile = this._getPath(resolve(url, `../${name}`)) + const navbarFile = this._getPath(resolve(url, `./${name}`)) this._renderHtml('navbar', await this._render(navbarFile, 'navbar')) } @@ -131,7 +131,7 @@ export default class Renderer { const fileName = basename(filePath) - await this._loadFile(cwd(filePath, '../..', fileName)) + return await this._loadFile(cwd(filePath, '../..', fileName)) } } } diff --git a/src/core/router/history/html5.js b/src/core/router/history/html5.js index fc917035..89cc7000 100644 --- a/src/core/router/history/html5.js +++ b/src/core/router/history/html5.js @@ -51,11 +51,11 @@ export class HTML5History extends History { path = path.slice(0, queryIndex) } - const base = getPath(location.origin, this.getBasePath()) + const base = getPath(location.origin) const baseIndex = path.indexOf(base) if (baseIndex > -1) { - path = path.slice(baseIndex + base.length - 1) + path = path.slice(baseIndex + base.length) } return {