【轉】Jsduck:前端文檔生成利器Jsduck介紹及安裝使用

来源:http://www.cnblogs.com/BruceWan/archive/2016/10/14/5959797.html
-Advertisement-
Play Games

讓前端程式更具可維護性,是一個老生常談的問題,大多數時候我們都關註於應用層面的代碼可維護性,如:OO、模塊化、MVC,編碼規範、可擴展和復用性,但這都是屬於設計層面需要考慮的事情,可維護性還應包含另一個方面,也是很多coder容易忽略的地方,就是將自己寫的程式以文檔的形式沉澱起來,對自己工作有一個結 ...


讓前端程式更具可維護性,是一個老生常談的問題,大多數時候我們都關註於應用層面的代碼可維護性,如:OO、模塊化、MVC,編碼規範、可擴展和復用性,但這都是屬於設計層面需要考慮的事情,可維護性還應包含另一個方面,也是很多coder容易忽略的地方,就是將自己寫的程式以文檔的形式沉澱起來,對自己工作有一個結構化的組織,也可以幫助到他人。

試想一下如下情況:
1、團隊中加入了新的同學,這時他可能需要快速的將目前項目中現有程式有一個系統的瞭解,如:某個公共工具模塊的用途,某個通用組件的介面,程式之間的依賴性,這時他只有去看源碼和註釋了。
2、團隊中有同學離開,但他寫的程式在此之前已經深入到項目的各個層面,最瞭解和能快速修改維護這些程式的人可能只有他,之後在迭代時遇上其環節,其他接手的同學只能望眼欲穿了。
3、自己寫了一個不錯的可復用組件,打算推廣到團隊中,這時他人需要使用自己的組件時不得不去看源碼和註釋了。

這時候如果每個人都對自己程式有一個文檔化的闡釋,便可對上述問題做出很大的緩解,通常程式的文檔化需求只存在於大型項目或是擁有成熟體系的框架之中,對於前端們來講其實大多數時候都想用文檔來展示和沉澱自己的知識成果的,可一直缺乏一套行之有效快速一致性的解決方案,導致在大家談到程式文檔化的時候都因為時間關係,繁瑣程度就望而卻步了。

長期以來前端開發們都缺乏一個像樣的文檔化工具,雖然在這之前出現過 YUI DOCJSDoc ,但這些工具始終難於將開發者從複雜的配置中解脫出來,從而使開發者很快便將它們遺忘。

如果有對sencha的 ExtJs 和 Sencha Touch 開發框架有過瞭解的同學想必都對為其定製的API文檔印象深刻,富應用形態的展現方式和樹節點的命名空間管理,  避免了 YUI DOC 和 jQeury API 那樣沉長頁面帶來的繁瑣,而文檔中附加的學習的範例也能幫助初學者儘快上手,生成這樣強大的 API 文檔使用的是jsduck,它不僅在使用和配置上非常簡單,文檔的 UI 和交互方式也是目前對於開發者來說是最友好的。

1. Jsduck 簡介

jsduck 是 senchalabs 眾多開源項目中的一個,它是使用 ruby  編寫的 javascript API 文檔生成器。

Jsduck強力功能點如下:

  • 樹形類命名空間組織
  • 類子父關係的層次體系展示
  • 成員與事件和配置項快速索引
  • 可穿插著色代碼範例演示和編輯範例代碼
  • 類成員源碼實現部分快速導航

2. 安裝jsduck

首先在github 上下載最新版的二進位版本,下載之後只有一個exe文件,此文件中已捆綁好了ruby解釋器,不需要另外獨立安裝,將下載後的文件更名為jsduck.exe,在windows的環境變數的PATH變數中添加上此文件的路徑,這樣在命令行下輸入jsduck便可可以直接調用到jsduck.exe。

註釋規範需以“/**” 開頭和“*/”結束,在 eclipse 或者 Aptana 這類支持 javaDoc 或 jsDoc 的 IDE 中鍵入 “/**” 按下回車鍵即可生成一個符合文檔生標準的註釋塊,如果使用 SpketIDE,註釋塊生成的時候還能幫助開發者自動完成函數參數的命名。

以下是一些常用標簽的註解:

  • @author:作者
  • @class:類
  • @deprecated:標記此方法屬性或者類不贊成使用,在升級過渡的時候需相容之前的API時特別有用。
  • @example:給類或者方法添加一個代碼範例,jsduck不僅會給代碼著色,還能給代碼生成一個代碼編輯器,編輯代碼後可實時預覽,使用@example需要四個空格的縮進。
  • @extends:標記一個類繼承自另一個類,生成後會有一個類型繼承體系陳列在文檔視圖的右側。
  • @cfg:構造器的配置項,併在其後跟隨“{className}”,再跟隨參數名。
  • 範例:@cfg {String} fieldName配置項的描述。
  • @return:與@cfg類似,標記一個函數成員調用過後的返回類型。
  • 範例:@return {Number} 文字描述
  • @param:與@cfg類似,給一個函數成員標記其所需的參數類型和描述,如果參數類型為多種可以用“/”分割,如需要給參數進行更詳細描述還能使用“[param.member]”描述符。
  • 範例:@param {Number/String} fieldName
  • 範例:@param {String[]} fieldName
  • 範例: /**
    * @cfg {Object} opt
    * @cfg {Number} [opt.age]
    * @cfg {Number} [opt.name=0]
    */
  • @event:標記一個事件,隨後通常會跟隨@param標簽給事件回調函數聲明參數的說明。
  • @inheritdoc:在其後跟隨Class#member,常用在子類覆蓋父類成員後,子類註釋塊還需繼續使用父類註釋的情況下使用。
  • @private:將成員標記成私有,雖然也有@public但如果不特殊標明即為公有。
  • @protected:將成員標記成受保護的。
  • @static:將成員標記成靜態的,靜態成員也會在文檔中進行分類展示。
  • @img:在文檔註釋中鏈接一張圖片,讓文檔變得更具可讀性。
  • @link:在文檔註釋中標記某個類或類成員的錨點。

文檔化你的項目不僅可以讓催悲的前端們將自己寫的註釋變更具有價值,也可以為項目後期維護帶來巨大便捷,在協同作戰環境下起著至關重要的作用。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 老話長談,css的不固定適應佈局 不管是面試還是在平時的工作中,這樣的佈局形式一直都在用著,很常見,所以今天我就拿出來在嘮叨一下, 既是給自己一個備忘存儲,也是一個學習鞏固的參考,知道大家都會,還是要記憶一下,不為其他,就為打好基礎。 話說太多, 直接上代碼,一看就能明白。 也許你會不屑一顧的說簡單 ...
  • 學習內容來自:《JavaScript高級程式設計(第三版)》 正文:我們知道,在js中,函數實際上是一個對象,每個函數都是Function類型的實例,並且都與其他引用類型一樣具有屬性和方法。因此,函數名實際上是指向函數對象的指針,不與某個函數綁定。在常見的兩種定義方式(見下文)之外,還有一種定義的方 ...
  • 有關localStorage和sessionStorage的特性。 localStorage本身帶有方法有 添加鍵值對:localStorage.setItem(key,value),如果key存在時,更新value。 獲取鍵值:localStorage.getItem(key),如果key不存在返 ...
  • 在做移動端web app的時候,眾所周知,移動設備解析度五花八門,雖然我們可以通過CSS3的media query來實現適配,例如下麵這樣: 但是這種做法並不能適配所有設備,於是就有了實現全適配的JS解決方案,例如下麵這樣: 另外附上淘寶移動端適配解決方案flexible.js源碼: 1 ;(fun ...
  • 今天做form表單提交遇到了兩個問題: 1.提交後不能跳轉到指定頁面 jsp代碼 js提交事件處理: 這種寫法在頁面點擊保存後在當前頁面跳轉, 而不執行post請求function(data){}中的方法:window.history.back()返回到上一級歷史頁面,分析原因是button的typ ...
  • 最近在使用jquery.form.js提交包含文件的表單時,碰到了一個問題:當碰上網速較慢時,而我們又設置了timeout時,例如: 我們的頁面會死在這裡,貼上F12開發者工具返回的結果: 此時,我們並沒有處理錯誤的回調函數,而百度出來的例子中也只有這兩個回調函數: beforeSubmit: sh ...
  • react實例之todo, 做一個實時響應的列表操作 在所有的mvc框架中,最常見的例子不是hello world,而是todo,由於reactjs的簡單性,在不引用flux和redux的情況下,我們也一樣可以做出很好的效果來。 本文的例子在react中國首頁中可以看到,它的源代碼請點擊這裡http ...
  • 對於一個從後臺轉到前端的web開發者來說,最大的麻煩就是寫CSS,瞭解CSS的人都知道,它可以開髮網頁樣式,但是沒法用它編程,感覺耦合性相當的高,如果想要方便以後維護,只能逐句修改甚至重寫相當一部分的CSS。隨著後臺人員大量的涌入前端這個行業,CSS又煥發了新的春天,人們開始為CSS加入編程元素,也 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...