feat(src): add alias feature

This commit is contained in:
qingwei.li 2017-02-11 10:17:05 +08:00
commit 24412cdaf0
5 changed files with 34 additions and 7 deletions

View file

@ -15,6 +15,7 @@
<script src="//unpkg.com/docsify" data-ga="UA-XXXXX-Y"></script> <script src="//unpkg.com/docsify" data-ga="UA-XXXXX-Y"></script>
<script src="//unpkg.com/docsify/lib/plugins/ga.js"></script> <script src="//unpkg.com/docsify/lib/plugins/ga.js"></script>
``` ```
## 2.1.0 ## 2.1.0
### Features ### Features
- Add search plugin - Add search plugin

View file

@ -7,13 +7,17 @@
</head> </head>
<body> <body>
<nav> <nav>
<a href="#/">En</a> <a href="#/">en</a>
<a href="#/zh-cn">中文</a> <a href="#/zh-cn">中文</a>
<a href="#/changelog">Changlog</a>
</nav> </nav>
<div id="app"></div> <div id="app"></div>
</body> </body>
<script> <script>
window.$docsify = { window.$docsify = {
alias: {
'/changelog': 'https://raw.githubusercontent.com/QingWei-Li/docsify/master/CHANGELOG'
},
search: { search: {
maxAge: 0 maxAge: 0
} }

View file

@ -12,9 +12,17 @@
<nav> <nav>
<a href="#/">En</a> <a href="#/">En</a>
<a href="#/zh-cn">中文</a> <a href="#/zh-cn">中文</a>
<a href="#/changelog">Changlog</a>
</nav> </nav>
<div id="app"></div> <div id="app"></div>
</body> </body>
<script>
window.$docsify = {
alias: {
'/changelog': 'https://raw.githubusercontent.com/QingWei-Li/docsify/master/CHANGELOG'
}
}
</script>
<script <script
src="//unpkg.com/docsify/lib/docsify.min.js" src="//unpkg.com/docsify/lib/docsify.min.js"
data-max-level="4" data-max-level="4"

View file

@ -47,10 +47,11 @@ let cacheRoute = null
let cacheXhr = null let cacheXhr = null
const mainRender = function (cb) { const mainRender = function (cb) {
const route = OPTIONS.basePath + utils.getRoute() let page
let route = utils.getRoute()
if (cacheRoute === route) return cb() if (cacheRoute === route) return cb()
let basePath = cacheRoute = route let basePath = cacheRoute = OPTIONS.basePath + route
if (!/\//.test(basePath)) { if (!/\//.test(basePath)) {
basePath = '' basePath = ''
@ -58,7 +59,12 @@ const mainRender = function (cb) {
basePath = basePath.match(/(\S*\/)[^\/]+$/)[1] basePath = basePath.match(/(\S*\/)[^\/]+$/)[1]
} }
let page // replace route
if (OPTIONS.alias && OPTIONS.alias['/' + route]) {
route = OPTIONS.alias['/' + route]
} else {
route = OPTIONS.basePath + route
}
if (!route) { if (!route) {
page = OPTIONS.homepage || 'README.md' page = OPTIONS.homepage || 'README.md'

View file

@ -44,8 +44,7 @@ const getAllPaths = function () {
/** /**
* return file path * return file path
*/ */
const genFilePath = function (path) { const genFilePath = function (path, basePath = window.$docsify.basePath) {
const basePath = window.$docsify.basePath
let filePath = /\/$/.test(path) ? `${path}README.md` : `${path}.md` let filePath = /\/$/.test(path) ? `${path}README.md` : `${path}.md`
filePath = basePath + filePath filePath = basePath + filePath
@ -294,6 +293,7 @@ const searchPlugin = function () {
const paths = isAuto ? getAllPaths() : CONFIG.paths const paths = isAuto ? getAllPaths() : CONFIG.paths
const len = paths.length const len = paths.length
const { load, marked, slugify } = window.Docsify.utils const { load, marked, slugify } = window.Docsify.utils
const alias = window.$docsify.alias
const done = () => { const done = () => {
localStorage.setItem('docsify.search.expires', Date.now() + CONFIG.maxAge) localStorage.setItem('docsify.search.expires', Date.now() + CONFIG.maxAge)
localStorage.setItem('docsify.search.index', JSON.stringify(INDEXS)) localStorage.setItem('docsify.search.index', JSON.stringify(INDEXS))
@ -301,8 +301,16 @@ const searchPlugin = function () {
paths.forEach(path => { paths.forEach(path => {
if (INDEXS[path]) return count++ if (INDEXS[path]) return count++
let route
load(genFilePath(path)).then(content => { // replace route
if (alias && alias[path]) {
route = genFilePath(alias[path] || path, '')
} else {
route = genFilePath(path)
}
load(route).then(content => {
genIndex(path, marked(content)) genIndex(path, marked(content))
slugify.clear() slugify.clear()
count++ count++