JSDoc

隨著ES2015的定稿萄金,模塊化已經(jīng)成為前端開發(fā)的規(guī)范被執(zhí)行预愤,清晰的模塊化使得開發(fā)者與開發(fā)者之間的依賴便的更小钾虐,當(dāng)項目還小時,可以通過查找一下模塊源文件中的聲明就能大致了解模塊的功用吏廉。然而泞遗,隨著項目的不斷增長以及各項目之間的整合,開發(fā)者對其他模塊的內(nèi)容知之甚少席覆,如果來源于不同項目史辙,只是項目間的依賴的話,那么源代碼有可能也無法在當(dāng)前開發(fā)環(huán)境下找到佩伤,此時聊倔,開發(fā)者都會想到有個API文檔那該多好啊。

所以生巡,前端代碼文檔化勢在必行耙蔑。

前端代碼主要以js為主,主流的文檔生成器便是JSDoc孤荣,最近項目是使用的ES2105編寫的甸陌,JSDoc3.4.0之后已經(jīng)提供了對ES2015的支持。

安裝JSDoc

npm i jsdoc -g

如何使用JSDoc

同其他語言一樣盐股,文檔生成工具的原理還是通過代碼注釋去解析并根據(jù)一定的tag來生成文檔钱豁。在JSDoc文檔中明確說明了,只有以/**為開始的注釋才會被JSDoc識別疯汁,其他的注釋格式都會被忽略牲尺。

額外,JSDoc 默認(rèn)還會將項目中的README.md文件一同生成到JSDoc最后生成的文檔文件中幌蚊,或通過命令--R/-readme 指定個別文件谤碳,將其添加至所生成的文檔文件中,但文件格式必須是Markdown溢豆,此時蜒简,項目中的README.md將被忽略。

JSDoc命令行參數(shù)

JSDoc命令行幾個常用參數(shù)有以下幾個:

  • -c, --configure 指定configuration file
  • -d, --destination 指定輸出路徑沫换,默認(rèn)./out
  • -e, --encoding 設(shè)定encoding臭蚁,默認(rèn)utf8
  • -p, --private 將private注釋輸出到文檔,默認(rèn)不輸出
  • -P, --package 指定package.json file
  • -r, --recurse 查詢子目錄
  • -t, --template 指定輸出文檔template
  • -u, --tutorials 指定教程路徑讯赏,默認(rèn)無

JSDoc配置文件

同許多js工具一樣垮兑,JSDoc也有配置文件,可以通過設(shè)定配置文件來定制JSDoc漱挎。如果沒有指定configuration file系枪,將會使用一下配置。

{
    "tags": {
        "allowUnknownTags": true, // 允許使用自定義tag
        "dictionaries": ["jsdoc","closure"] // 定義tag集
    },
    "source": {
        "includePattern": ".+\\.js(doc)?$", // 將以.js, .jsdoc結(jié)尾的文件作為源文件
        "excludePattern": "(^|\\/|\\\\)_" // 忽略以_開頭的文件夾及文件
    },
    "plugins": [],
    "templates": {
        "cleverLinks": false,
        "monospaceLinks": false
    }
}

以上這個是默認(rèn)配置磕谅,下面解釋幾個常用配置私爷。

  • source:顧名思義是用來指定源文件的雾棺,在其之下包含了4個屬性,其中兩個已經(jīng)在默認(rèn)配置中出現(xiàn)過了衬浑。
    |- include: [ array of paths to files to generate documentation for ], // 源文件路徑數(shù)組
    |- exclude: [ array of paths to exclude ], // 排除文件路徑數(shù)組
    |- includePattern: a regular expression, // 接受一個正則表達式捌浩,當(dāng)文件名匹配這個正則時,執(zhí)行JSDoc
    |- excludePattern: a regular expression, // 接受一個正則表達式工秩,當(dāng)文件名匹配這個正則時尸饺,JSDoc忽略該文件
    JSDoc以以下的順序執(zhí)行這些屬性:
    1. 根據(jù)include獲取目標(biāo)文件
    2. 根據(jù)includePattern篩選由第一步得到的目標(biāo)文件
    3. 根據(jù)excludePattern篩選由第二步得到的文件
    4. 最后根據(jù)exclude屬性,排除由第三步得到的文件結(jié)果集助币,排除之后的文件便是JSDoc需要執(zhí)行的源文件浪听。
  • tags: 用來指定tag庫,tags下面有2個屬性眉菱,分別是
    |- allowUnknownTags: 用來告訴JSDoc如何處理標(biāo)簽庫以外的tag迹栓,設(shè)為false時,JSDoc不會處理標(biāo)簽庫以外的tag俭缓,但會記錄一個警告克伊,默認(rèn)為true
    |- dictionaries: 數(shù)組格式,指定標(biāo)簽庫尔崔,標(biāo)簽庫越靠前答毫,優(yōu)先度越高
  • opts: 命定行參數(shù)可以在此屬性下配置褥民,列如:
  "opts": {
    "template": "templates/default",  // same as -t templates/default
    "encoding": "utf8",               // same as -e utf8
    "destination": "./out/",          // same as -d ./out/
    "recurse": true,                  // same as -r
    "tutorials": "path/to/tutorials", // same as -u path/to/tutorials
}
  • plugins: 配置額外的插件季春,如markdown插件,與此同時消返,JSDoc也可以編寫自定義插件做額外的處理载弄。
  • templates: 可以用來配置默認(rèn)template的格式,或另外指定自定義的template

Tags

上文說了那么多撵颊,主要說的都是JSDoc如何使用和配置宇攻,和平時的編碼過程中注釋怎么寫,要使用哪些標(biāo)簽并沒什么聯(lián)系倡勇,現(xiàn)在就來講講最重要的Tag逞刷。

JSDoc中將tag分為兩類,Block tagInline tag妻熊。

  • Block tag: 在JSDoc中是最高級別的注釋夸浅,通常用來提供代碼的詳細信息。它以@開頭扔役,除了位于注釋最后的Block tag帆喇,其他Block tag必須緊跟換行符
  • Inline tag: 通常是Block tag的文字內(nèi)容或描述,它用一對{}包裹亿胸。

Block tag也就是我們平時最常用的注釋標(biāo)簽坯钦,在此列舉一些常用的tag

Inline tag

  • {@link} 生成一個鏈接指向定義的namepath或者URL

Namepaths

namepath在JSDoc中起著至關(guān)重要的作用粘室,JSDoc namepath會提供一個唯一的標(biāo)識給任意一個變量,這使得你在使用inline tag時卜范,可以方便的找到任何一個變量衔统,從而提供一個指向該變量的鏈接。

MyConstructor                // 父元素
MyConstructor#instanceMember // 成員變量使用#
MyConstructor.staticMember   // 靜態(tài)變量使用.
MyConstructor~innerMember    // 內(nèi)部成員使用~
                             // module使用:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末海雪,一起剝皮案震驚了整個濱河市锦爵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奥裸,老刑警劉巖险掀,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異湾宙,居然都是意外死亡樟氢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門侠鳄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來埠啃,“玉大人,你說我怎么就攤上這事畦攘“悦茫” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵知押,是天一觀的道長叹螟。 經(jīng)常有香客問我鹃骂,道長,這世上最難降的妖魔是什么罢绽? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任畏线,我火速辦了婚禮,結(jié)果婚禮上良价,老公的妹妹穿的比我還像新娘寝殴。我一直安慰自己,他們只是感情好明垢,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布蚣常。 她就那樣靜靜地躺著,像睡著了一般痊银。 火紅的嫁衣襯著肌膚如雪抵蚊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天溯革,我揣著相機與錄音贞绳,去河邊找鬼。 笑死致稀,一個胖子當(dāng)著我的面吹牛冈闭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抖单,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼萎攒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了臭猜?” 一聲冷哼從身側(cè)響起躺酒,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤押蚤,失蹤者是張志新(化名)和其女友劉穎蔑歌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揽碘,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡次屠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了雳刺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劫灶。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掖桦,靈堂內(nèi)的尸體忽然破棺而出本昏,到底是詐尸還是另有隱情,我是刑警寧澤枪汪,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布涌穆,位于F島的核電站怔昨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宿稀。R本人自食惡果不足惜趁舀,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祝沸。 院中可真熱鬧矮烹,春花似錦、人聲如沸罩锐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涩惑。三九已至嘹吨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間境氢,已是汗流浹背蟀拷。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留萍聊,地道東北人问芬。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像寿桨,于是被迫代替她去往敵國和親此衅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理亭螟,服務(wù)發(fā)現(xiàn)挡鞍,斷路器,智...
    卡卡羅2017閱讀 134,668評論 18 139
  • 最近要為公司項目做javaScript API预烙,在網(wǎng)上找了幾個生成工具墨微,JSDoc和YUIDoc好像很不錯。我選用...
    ANoman_M閱讀 8,240評論 0 3
  • 前言 webpack2和vue2已經(jīng)不是新鮮東西了扁掸,滿大街的文章在講解webpack和vue翘县,但是很多內(nèi)容寫的不是...
    技術(shù)宅小青年閱讀 6,541評論 4 43
  • 簡單說,用JSDoc寫開發(fā)文檔就是寫注釋谴分,只是在書寫的時候要把它們按照規(guī)范工整的寫出來锈麸,這樣即可達到注釋的目的又能...
    錯碼匠閱讀 1,696評論 1 1
  • 在初秋 約起一場冬天的火鍋 等柜子里新添的那件黑色風(fēng)衣可以上身的時候 等初雪開始飄落的時候 等煙火滋味愈加溫暖的...
    AbitParanoia閱讀 128評論 0 1