讓文檔和Demo生成更加簡單和強大 - SmartDoc 0.1.1 說明

新特性

smartDoc 0.1.1版正式發佈,其中加入了更多方便生成文檔的功能,主要特性以下:html

* 加入@demo配置項,看能夠動態抓取html和js的內容做爲@example,同時支持擴展@demo讀取
* 支持jasmine測試js文件的單元代碼抓取爲@example
* 實現多個example顯示和tab切換
* 加入@show配置項來控制直接顯示example效果
* 主題改版
* 去除@attribute屬性設置,統一使用@property;git

 

docConfig新增配置:github

//demo掃描目錄
demoDir: "",

 //demo生成器地址
demoBuilder: './demoBuilder.js',

//demo代碼生成器地址
codeLoader: './jasmineLoader.js'

 

新版效果片斷如圖:promise

詳細說明

  example與code分離

    1. 之前的@example都須要寫在代碼註釋當中,很影響代碼的可讀性;新版中加入@demo配置,經過設置文件路徑,能夠自動讀取html或者js文件生成@example單元測試

原來的寫法: 如今的寫法:
/**
* ................
* @method getTargets3
* @example 
*       var bar;  ....
*/

 

/**
* ................
* @method getTargets3
* @demo inherit/getTargets3.js
*/

 

       inherit/getTargets3.js 會讀取定義在docConfig文件demoDir配置下的文件而後生成@example測試

      

      Jasmine的單元測試代碼的讀取重用

    支持jasmine測試js文件的單元代碼的讀取,減小而外開銷。不過同時須要注意的事情是儘可能編寫測試用例的時候,每一個單元儘可能獨立,不要使用全局變量;ui

    例如:
this

    

/**
     * Deferred對象
     * @class Deferred
     * @constructor
     * @demo st/deferred.js [resolve]
     */
    function Deferred() {

    }

 

   jasmine測試代碼deferred.js:spa

  

describe('Deferred', function() {
        it("resolve",function(testDone){
            var defer = st.Deferred();

            function test(){
                setTimeout(function(){
                    defer.resolve("test");
                })
                return defer.promise();

            }

            st.when(test()).done(function(result){
                expect(result).toBe('test');
                testDone();
            })
        })
..........

 

   st/deferred.js [resolve] 對應的就是代碼中的it("resolve",fn)的內容,文件地址後面的[...]表示jasmine的文件單元測試項,最終效果以下:3d


    
  

    

 支持@demo解析和讀取自定義

      jasmine的是經過內置的jasmineLoader去解析代碼的,同時能夠自定義代碼解析規則 - docConfig的demoBuilder和codeLoader

 

 支持頁面直接顯示@demo/example;同時也支持tab顯示多個;

  例子中配置了多個@demo,同時在@demo中文件路徑的配置加入了{...},表示tab的標題,,若是沒有設置則取文件名;@show表示直接在頁面上顯示結果

/**
     * ui測試類; 
     * @class UI
     * @constructor
     * @content {string} type 內容
     * @demo ui.html
     * @demo ui2.html {ui測試2}
     * @show true
     */        
    function UI(content){
        this.init(content);
    }

 

效果以下:

 

 

結尾

smartdoc還在持續建設中,你們使用中有什麼問題和建議,能夠直接使用 git的issue 反饋給我。

相關連接以下:

SmartDoc地址

doc示例地址

註釋編寫說明

相關文章
相關標籤/搜索