場(chǎng)景:平時(shí)我們使用的需求/產(chǎn)品文檔,研發(fā)文檔等等各種文檔,如何使用的?qq或者郵箱,或者其他方式互相發(fā)送,然后還必須在本機(jī)安裝office才能打開(kāi)
問(wèn)題:
1.我想在手機(jī)上看怎們辦?而且我手機(jī)還沒(méi)裝office,我手機(jī)內(nèi)存還很?。ǜF。。。)
2.今天開(kāi)會(huì),我沒(méi)帶電腦到會(huì)議室,只能用同事電腦,文檔在我電腦上
3.文檔的版本怎么控制?經(jīng)常手一懶沒(méi)更新到服務(wù)器上,或者我更新到服務(wù)器上,使用的人手懶了下,沒(méi)更新,相互之間文檔就不同步了。。。
。。。。。
實(shí)質(zhì):文檔,尤其是對(duì)于查看者來(lái)說(shuō),本來(lái)就不需要占用,文檔只需要存在在一個(gè)地方,需要的時(shí)候隨時(shí)看就ok,與地點(diǎn)無(wú)關(guān),與設(shè)備無(wú)關(guān)。。。
想法:基于上邊的問(wèn)題,在github上查了下,阮一峰大神果然已經(jīng)造過(guò)輪子,直接拿來(lái)用
git地址:https://github.com/ruanyf/loppo
阮大神的這個(gè)組件已經(jīng)將近500星。
使用方法:
首先全局安裝loppo組件: npm install loppo -g
新建一個(gè)文件夾test1,然后在該文件夾下執(zhí)行命令:loppo?

注意,test1目錄下要先防止docs文件夾,否則執(zhí)行l(wèi)oppo命令會(huì)報(bào)錯(cuò)。
可以看到,生成了 dist文件夾,以及chapters.yml和loppo.yml文件,可以在docs下放置你的*.md文件,可以按照不同的文件夾來(lái)放置。每次放置后都需要執(zhí)行以下命令:
1.loppo chapter --force? 更新目錄文件
2.loppo? ?重新編譯
3.loppo server? ?重新啟動(dòng)服務(wù)器
啟動(dòng)服務(wù)器后就可以訪問(wèn)了,訪問(wèn)的效果如下:

另外,需要考慮更新的問(wèn)題,如何更新?
因?yàn)榇蠹沂呛献鞯哪J剑l(shuí)都可以提交文檔,更新文檔服務(wù)器,所以,更新步驟應(yīng)該是這樣的:
1.將自己更新的文檔簽入公司內(nèi)部git服務(wù)器
2.執(zhí)行服務(wù)器上的批處理命令,執(zhí)行相關(guān)更新步驟(遠(yuǎn)程執(zhí)行批處理文件有很多方式,可以自己選擇一種方便+安全的)
3.重啟服務(wù)器
這樣,團(tuán)隊(duì)內(nèi)部的需求/研發(fā)/測(cè)試等同學(xué)都可以隨時(shí)更新文件服務(wù)器,也可以隨時(shí)隨地的查看文件服務(wù)器的文件。
批處理文件內(nèi)容如下:
rem -------------從git服務(wù)器拉取最新的文檔----------------------
rem @echo off
rem @echo '從遠(yuǎn)端git服務(wù)器獲取最新代碼和文檔中.....'
rem git pull
rem -------------殺掉占用8080端口的進(jìn)程-------------------------
@echo off
setlocal enabledelayedexpansion
for /f "eol=* tokens=*" %%i in ('netstat -an -o ^| findstr "8080"') do (
set a=%%i
set a=!a:~69,10!
taskkill /pid !a! /F
)
rem ----------------更新文檔目錄----------------------
@echo off
@echo '開(kāi)始更新文檔目錄......'
cmd /c loppo chapter --force
rem ----------------重新編譯----------------------
echo '重新編譯.....'
cmd /c loppo
rem ----------------重啟文件服務(wù)器----------------------
echo '重啟文件服務(wù)器......'
cmd /c loppo server
備注:
1.更新文檔只需要運(yùn)行l(wèi)oppo chapter --force ,然后運(yùn)行l(wèi)oppo,不需要重啟服務(wù)器,所以也就不需要?dú)⒌?080端口的占用進(jìn)程,另外,盡量不要使用這種常用端口來(lái)監(jiān)聽(tīng),會(huì)和其他東西沖突
2.ruanyf大神的loppo作品有bug,已經(jīng)給大神提issue了,我的解決辦法是修改lib/utils.js:
if (level < current_level) {
? ? ? ? ? ? for (let i = 0; isFirstLevelDir ? i <= (current_level - level) : i < (current_level - level); i += 1)?
level > current_level ||
? ? ? ? ? ? (level === current_level && chapterPathOrigin.split('/')[level] === '') ||
? ? ? ? ? ? isFirstLevelDir
修改這兩處的代碼,就可以直接運(yùn)行了,另外,也可以直接使用我 修改后的組件superloppo,
嚴(yán)重聲明,版權(quán)歸ruanyf大神所有,我只是拿來(lái)學(xué)習(xí)和修改。