SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
JsDoc的使用

         @yyfrankyy

Yet Another JavaScript Programmer
             f2e.us


       July 8, 2011




                      .     .       .   .   .   .
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....




Agenda



      1 docco


      2 JsDoc-Toolkit
             Introduction
             Annotations
             Tips




                                      .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                        docco                                JsDoc-Toolkit
                                                                     ...
                                                                     .............
                                                                     .....




docco



             http://jashkenas.github.com/docco/
             小巧(100来行代码)
             快速
             易用(双斜杆注释+markdown语法)
             各种语言都有自己的 docco




                                           .      .      .      .     .      .

@yyfrankyy                               Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                                 JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....




docco



         Docco is a quick-and-dirty, hundred-line-long,
      literate-programming-style documentation generator.
          It produces HTML that displays your comments
       alongside your code. Comments are passed through
         Markdown, and code is passed through Pygments
        syntax highlighting. This page is the result of
           running Docco against its own source file.



                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....




install & usage




      install
      $ sudo npm install docco -g
      $ docco sea.js




                                      .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview     docco                               JsDoc-Toolkit
                                                 ...
                                                 .............
                                                 .....




docco




                       .      .      .      .     .      .

@yyfrankyy           Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                     docco                                JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Introduction


jsdoc-toolkit



           JsDoc Toolkit is an application, written in
            JavaScript, for automatically generating
       template-formatted, multi-page HTML (or XML, JSON,
           or any other text-based) documentation from
                commented JavaScript source code.




                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                          docco                                JsDoc-Toolkit
                                                                       ...
                                                                       .............
                                                                       .....
Introduction


简介


               http://code.google.com/p/jsdoc-toolkit/
               基于 @annotation 的API文档工具。
               v2 不再继续开发新功能,v3 正在调研。




                                             .      .      .      .     .      .

@yyfrankyy                                 Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                          docco                                JsDoc-Toolkit
                                                                       ...
                                                                       .............
                                                                       .....
Introduction


简介


               http://code.google.com/p/jsdoc-toolkit/
               基于 @annotation 的API文档工具。
               v2 不再继续开发新功能,v3 正在调研。

      基本用法
      java -jar jsrun.jar app/run.js -r=4 tc/
      -t=templates/jsdoc



                                             .      .      .      .     .      .

@yyfrankyy                                 Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                   docco                               JsDoc-Toolkit
                                                               ...
                                                               .............
                                                               .....
Introduction


基本特性




               用js实现,运行在rhino上面。
               支持模板。
               文件内按注释块顺序解析。




                                     .      .      .      .     .      .

@yyfrankyy                         Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                         docco                                JsDoc-Toolkit
                                                                      ...
                                                                      .............
                                                                      .....
Annotations


Annotations


              @fileoverview/@author/@license
              @param
              @name
              @description/@example
              @augments/@borrows/@lends
              @namespace/@class/@constructor
              @function/@field
              the others..

                                            .      .      .      .     .      .

@yyfrankyy                                Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                     docco                                JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Annotations


@fileoverview/@author/@license


      文件模板
      /**
       * @fileoverview 模块简介.
       * @author 文河<wenhe@taobao.com>
       *
       * @license
       * Copyright (c) 2010 Taobao Inc.
       */


                                          .    .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                docco                               JsDoc-Toolkit
                                                            ...
                                                            .............
                                                            .....
Annotations


@param
      基本用法
      @param {类型} 变量名 描述.
      @param {类型[]} 变量名 描述.




                                  .      .      .      .     .      .

@yyfrankyy                      Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                 docco                               JsDoc-Toolkit
                                                             ...
                                                             .............
                                                             .....
Annotations


@param
      基本用法
      @param {类型} 变量名 描述.
      @param {类型[]} 变量名 描述.

      可选参数和默认值
      @param {类型} [变量名] 描述.
      @param {类型} [变量名="default"] 描述.




                                   .      .      .      .     .      .

@yyfrankyy                       Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                   docco                               JsDoc-Toolkit
                                                               ...
                                                               .............
                                                               .....
Annotations


@param
      基本用法
      @param {类型} 变量名 描述.
      @param {类型[]} 变量名 描述.

      可选参数和默认值
      @param {类型} [变量名] 描述.
      @param {类型} [变量名="default"] 描述.

      配置参数,可选配置,默认值
      @param {类型} config.params 描述.
      @param {类型} [config.params] 描述.
      @param {类型} [config.params="default"] 描述.
                                     .      .      .      .     .      .

@yyfrankyy                         Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....
Annotations


@name

              全文索引,默认为注释快后第一个token名。
              全文共享,暴露局部变量可能引发局部变量的声明冲突。
              设置@name,可改变当前变量的全文索引。

      Example
      /**
       * name of this account.
       *
       */
      var name = "frank";
                                      .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....
Annotations


@name

              全文索引,默认为注释快后第一个token名。
              全文共享,暴露局部变量可能引发局部变量的声明冲突。
              设置@name,可改变当前变量的全文索引。

      Example
      /**
       * name of this account.
       * @name wenhe
       */
      var name = "frank";
                                      .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                  docco                               JsDoc-Toolkit
                                                              ...
                                                              .............
                                                              .....
Annotations


@description/@example
              无tag的信息并入@description。
              可通过@link/@see进行相互链接。
              @example输出<pre/>标签。
              顺序解析,直接转为html(无换行),有markdown插件。




                                    .      .      .      .     .      .

@yyfrankyy                        Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....
Annotations


@description/@example
              无tag的信息并入@description。
              可通过@link/@see进行相互链接。
              @example输出<pre/>标签。
              顺序解析,直接转为html(无换行),有markdown插件。

 Example
 /**
  * name of this account.
  * @description
  * other desc.
  * @example
  * Form.add("hello");
  */                                  .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....
Annotations


@description/@example
              无tag的信息并入@description。
              可通过@link/@see进行相互链接。
              @example输出<pre/>标签。
              顺序解析,直接转为html(无换行),有markdown插件。

 Example
 /**
  * name of this account.
  * @description
  * other desc.
  * @example
  * Form.add("hello");
  */                                  .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                                    JsDoc-Toolkit
                                                                     ...
                                                                     .............
                                                                     .....
Annotations


@description/@example
              无tag的信息并入@description。
              可通过@link/@see进行相互链接。
              @example输出<pre/>标签。
              顺序解析,直接转为html(无换行),有markdown插件。

 Example                            Example
 /**
  * name of this account.           name of this account.
  * @description                    other desc.
  * other desc.
  * @example                            Form.add("hello");
  * Form.add("hello");
  */                                       .      .      .      .     .      .

@yyfrankyy                               Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                  docco                               JsDoc-Toolkit
                                                              ...
                                                              .............
                                                              .....
Annotations


@augments/@lends/@borrows




      @augments 将目标对象的prototype并入当前的prototype。
           @borrows 从目标对象借入单个方法/属性。
              @lends 把整个对象借给其他对象。




                                    .      .      .      .     .      .

@yyfrankyy                        Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                     docco                                JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Annotations


prototype/this



              JSDoc里描述prototype或者this,可用#代替

      Example
      mobile.prototype === mobile#
      mobile.prototype.func === mobile#func
      this.func = #func




                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                                 JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Annotations


@augments


      描述基本的原型继承。
      @augments
      /** @constructor */ function moduleBase() { };




                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                                 JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Annotations


@augments


      描述基本的原型继承。
      @augments
      /** @constructor */ function moduleBase() { };
      /** @augments moduleBase */ function mobile() { };




                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                                 JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Annotations


@augments


      描述基本的原型继承。
      @augments
      /** @constructor */ function moduleBase() { };
      /** @augments moduleBase */ function mobile() { };




                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                     docco                                JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Annotations


@borrows/@lends

      @borrows 配合 @lends,描述Mixin机制。
      @borrow
      /** @borrows EventTarget.fire as #fire */
      var moduleBase = function() { };




                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                     docco                                JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Annotations


@borrows/@lends

      @borrows 配合 @lends,描述Mixin机制。
      @borrow
      /** @borrows EventTarget.fire as #fire */
      var moduleBase = function() { };

      @lends
      /** @constructor */ function mobile() { };
      S.mix(mobile, /** @lends mobile */ {
          change: ; test: ; getMobile: ; ..
      };
                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                     docco                                JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Annotations


@borrows/@lends

      @borrows 配合 @lends,描述Mixin机制。
      @borrow
      /** @borrows EventTarget.fire as #fire */
      var moduleBase = function() { };

      @lends
      /** @constructor */ function mobile() { };
      S.mix(mobile, /** @lends mobile */ {
          change: ; test: ; getMobile: ; ..
      };
                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview          docco                               JsDoc-Toolkit
                                                      ...
                                                      .............
                                                      .....
Annotations


@borrows/@lends




                            .      .      .      .     .      .

@yyfrankyy                Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....
Annotations


@namespace/@class/@constructor




      @namespace 命名空间,输出一个没有参数,没有类型的节点。
      @constructor 描述为一个构造器。
              @class 描述为一个类。比constructor多了个多行描述。




                                      .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                  docco                               JsDoc-Toolkit
                                                              ...
                                                              .............
                                                              .....
Annotations


@class/@constructor
      任何在构造器上声明的参数均为初始化函数,new的时候传入。
      @constructor
      /**
       * @name Mobile
       * @class 手机充值
       *
       * @param {Object} config 初始配置.
       * @param {Object} [config.saveExtra] 额外保存信息.
       * ...
       *
       * @augments ModuleBase
       */
                                    .      .      .      .     .      .

@yyfrankyy                        Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview              docco                               JsDoc-Toolkit
                                                          ...
                                                          .............
                                                          .....
Annotations


@class/@constructor




                                .      .      .      .     .      .

@yyfrankyy                    Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                  docco                               JsDoc-Toolkit
                                                              ...
                                                              .............
                                                              .....
Annotations


the others..



              @type 声明某个属性的类型,注意没有中括号。
           @exports 用于模块重命名。会修改外部对某个变量的引用。
      @memberof 自定义变量归属,自定义@name的时候使用。
           @private 把一个公开方法标识为私有。
             @public 把一个私有方法暴露出去。
             @static 把一个方法标识为静态方法。



                                    .      .      .      .     .      .

@yyfrankyy                        Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                  docco                               JsDoc-Toolkit
                                                              ...
                                                              .............
                                                              .....
Annotations


the others..


           @returns 返回值,可以指定类型。有没有s都可以。
             @ignore 忽略某些索引,对加了-p参数的时候有用。
      @deprecated 标识这个方法不推荐继续使用。
      @constant 标识为常量。
              @event 事件,描述具有很多复杂事件的模块有用。
      @field/@function
                两者同一类型,指定某个变量为属性还是方法。


                                    .      .      .      .     .      .

@yyfrankyy                        Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview             docco                               JsDoc-Toolkit
                                                         ...
                                                         .............
                                                         .....
Tips


last but not least


       某种程度上,我们可以只写一些空的注释,
       来完善整个JsDoc输出的索引列表。




                               .      .      .      .     .      .

@yyfrankyy                   Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                      docco                               JsDoc-Toolkit
                                                                  ...
                                                                  .............
                                                                  .....
Tips


       Example
       /**
        * @class 事件对象.
        * @name EventTarget
        */

       /**
        * 监听事件
        * @name on
        * @function
        * @memberof EventTarget
        * @param {String} event 事件名称.
        * @param {EventCallback} function 监听方法.
        */
                                        .      .      .      .     .      .

@yyfrankyy                            Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....
Tips


描述回调函数的参数和返回值
       空注释块,还能用来描述回调方法的类型,返回值等。
       Example




       /**
        * @param {ajaxCallback} callback 回调方法.
        * @returns {Boolean} 回调处理是否成功.
        */
       function(callback) { callback(data); }
                                      .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                    docco                               JsDoc-Toolkit
                                                                ...
                                                                .............
                                                                .....
Tips


描述回调函数的参数和返回值
       空注释块,还能用来描述回调方法的类型,返回值等。
       Example
       /**
        * @name ajaxCallback
        * @param {Object} data 返回的数据.
        */

       /**
        * @param {ajaxCallback} callback 回调方法.
        * @returns {Boolean} 回调处理是否成功.
        */
       function(callback) { callback(data); }
                                      .      .      .      .     .      .

@yyfrankyy                          Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview                   docco                               JsDoc-Toolkit
                                                               ...
                                                               .............
                                                               .....
Tips


一些注意点


             Windows下,注意仅大小写不同的模块,
             输出的文件可能会覆盖。
             @lends 不能写成 a.b.c 的形式。
             仅能作为整体 {} 存在来写。
             其他描述,对于局部变量 {} 大多无效。
             改写成 a.b.c 的形式试试。
             注意文件内是顺序解析的,注释也要顺序着写。
             JsDoc还很不完美,但是需要的时候还是可以派上用场。


                                      .     .      .      .     .      .

@yyfrankyy                         Yet Another JavaScript Programmer f2e.us
JsDoc的使用
Overview     docco                               JsDoc-Toolkit
                                                 ...
                                                 .............
                                                 .....
Tips




             谢谢!




                       .      .      .      .     .      .

@yyfrankyy           Yet Another JavaScript Programmer f2e.us
JsDoc的使用

Contenu connexe

Similaire à JsDoc的使用

Rec soft npp
Rec soft nppRec soft npp
Rec soft nppcri fan
 
iOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyiOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyGump Law
 
Javascript代码注释及文档生成
Javascript代码注释及文档生成Javascript代码注释及文档生成
Javascript代码注释及文档生成fangdeng
 
Android -汇博
Android -汇博Android -汇博
Android -汇博dlqingxi
 
漫談 Source Control Management
漫談 Source Control Management漫談 Source Control Management
漫談 Source Control ManagementWen-Shih Chao
 
Java eye新闻月刊 2011年01月 - 总第35期
Java eye新闻月刊   2011年01月 - 总第35期Java eye新闻月刊   2011年01月 - 总第35期
Java eye新闻月刊 2011年01月 - 总第35期JianXiong Ma
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式Will Huang
 
Action script3.0中文版
Action script3.0中文版Action script3.0中文版
Action script3.0中文版coollen
 
常用开发工具介绍
常用开发工具介绍常用开发工具介绍
常用开发工具介绍haozes
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetupsunng87
 
51 cto下载 android应用程序开发宝典
51 cto下载 android应用程序开发宝典51 cto下载 android应用程序开发宝典
51 cto下载 android应用程序开发宝典sys520084
 
Eclipse,open ocd,openjta gv3嵌入式开发教程
Eclipse,open ocd,openjta gv3嵌入式开发教程Eclipse,open ocd,openjta gv3嵌入式开发教程
Eclipse,open ocd,openjta gv3嵌入式开发教程magicmanu
 
Java explore
Java exploreJava explore
Java exploreRoger Xia
 
软件开发工程化的个人体验
软件开发工程化的个人体验软件开发工程化的个人体验
软件开发工程化的个人体验March Liu
 
Kindeditor设计思路v2
Kindeditor设计思路v2Kindeditor设计思路v2
Kindeditor设计思路v2luolonghao
 
Monster Processing Workshop (dayOne)
Monster Processing Workshop (dayOne)Monster Processing Workshop (dayOne)
Monster Processing Workshop (dayOne)Akinori Kinoshita
 
Kindeditor 设计思路
Kindeditor 设计思路Kindeditor 设计思路
Kindeditor 设计思路luolonghao
 
Flex for php_developers_info_q
Flex for php_developers_info_qFlex for php_developers_info_q
Flex for php_developers_info_qredfaceapple
 

Similaire à JsDoc的使用 (20)

Flutter實作概述 | GDSC NYCU
Flutter實作概述 | GDSC NYCUFlutter實作概述 | GDSC NYCU
Flutter實作概述 | GDSC NYCU
 
Rec soft npp
Rec soft nppRec soft npp
Rec soft npp
 
iOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyiOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techparty
 
Javascript代码注释及文档生成
Javascript代码注释及文档生成Javascript代码注释及文档生成
Javascript代码注释及文档生成
 
Android -汇博
Android -汇博Android -汇博
Android -汇博
 
漫談 Source Control Management
漫談 Source Control Management漫談 Source Control Management
漫談 Source Control Management
 
Mongodb学习手册
Mongodb学习手册Mongodb学习手册
Mongodb学习手册
 
Java eye新闻月刊 2011年01月 - 总第35期
Java eye新闻月刊   2011年01月 - 总第35期Java eye新闻月刊   2011年01月 - 总第35期
Java eye新闻月刊 2011年01月 - 总第35期
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
 
Action script3.0中文版
Action script3.0中文版Action script3.0中文版
Action script3.0中文版
 
常用开发工具介绍
常用开发工具介绍常用开发工具介绍
常用开发工具介绍
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetup
 
51 cto下载 android应用程序开发宝典
51 cto下载 android应用程序开发宝典51 cto下载 android应用程序开发宝典
51 cto下载 android应用程序开发宝典
 
Eclipse,open ocd,openjta gv3嵌入式开发教程
Eclipse,open ocd,openjta gv3嵌入式开发教程Eclipse,open ocd,openjta gv3嵌入式开发教程
Eclipse,open ocd,openjta gv3嵌入式开发教程
 
Java explore
Java exploreJava explore
Java explore
 
软件开发工程化的个人体验
软件开发工程化的个人体验软件开发工程化的个人体验
软件开发工程化的个人体验
 
Kindeditor设计思路v2
Kindeditor设计思路v2Kindeditor设计思路v2
Kindeditor设计思路v2
 
Monster Processing Workshop (dayOne)
Monster Processing Workshop (dayOne)Monster Processing Workshop (dayOne)
Monster Processing Workshop (dayOne)
 
Kindeditor 设计思路
Kindeditor 设计思路Kindeditor 设计思路
Kindeditor 设计思路
 
Flex for php_developers_info_q
Flex for php_developers_info_qFlex for php_developers_info_q
Flex for php_developers_info_q
 

Plus de Frank Xu

FtnApp 的缩略图实践
FtnApp 的缩略图实践FtnApp 的缩略图实践
FtnApp 的缩略图实践Frank Xu
 
淘宝交易平台前端重构
淘宝交易平台前端重构淘宝交易平台前端重构
淘宝交易平台前端重构Frank Xu
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统Frank Xu
 
排行榜V3项目总结
排行榜V3项目总结排行榜V3项目总结
排行榜V3项目总结Frank Xu
 
Web Developing In Search
Web Developing In SearchWeb Developing In Search
Web Developing In SearchFrank Xu
 
淘宝搜索前端优化
淘宝搜索前端优化淘宝搜索前端优化
淘宝搜索前端优化Frank Xu
 

Plus de Frank Xu (7)

Watcher
WatcherWatcher
Watcher
 
FtnApp 的缩略图实践
FtnApp 的缩略图实践FtnApp 的缩略图实践
FtnApp 的缩略图实践
 
淘宝交易平台前端重构
淘宝交易平台前端重构淘宝交易平台前端重构
淘宝交易平台前端重构
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
 
排行榜V3项目总结
排行榜V3项目总结排行榜V3项目总结
排行榜V3项目总结
 
Web Developing In Search
Web Developing In SearchWeb Developing In Search
Web Developing In Search
 
淘宝搜索前端优化
淘宝搜索前端优化淘宝搜索前端优化
淘宝搜索前端优化
 

JsDoc的使用

  • 1. JsDoc的使用 @yyfrankyy Yet Another JavaScript Programmer f2e.us July 8, 2011 . . . . . .
  • 2. Overview docco JsDoc-Toolkit ... ............. ..... Agenda 1 docco 2 JsDoc-Toolkit Introduction Annotations Tips . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 3. Overview docco JsDoc-Toolkit ... ............. ..... docco http://jashkenas.github.com/docco/ 小巧(100来行代码) 快速 易用(双斜杆注释+markdown语法) 各种语言都有自己的 docco . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 4. Overview docco JsDoc-Toolkit ... ............. ..... docco Docco is a quick-and-dirty, hundred-line-long, literate-programming-style documentation generator. It produces HTML that displays your comments alongside your code. Comments are passed through Markdown, and code is passed through Pygments syntax highlighting. This page is the result of running Docco against its own source file. . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 5. Overview docco JsDoc-Toolkit ... ............. ..... install & usage install $ sudo npm install docco -g $ docco sea.js . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 6. Overview docco JsDoc-Toolkit ... ............. ..... docco . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 7. Overview docco JsDoc-Toolkit ... ............. ..... Introduction jsdoc-toolkit JsDoc Toolkit is an application, written in JavaScript, for automatically generating template-formatted, multi-page HTML (or XML, JSON, or any other text-based) documentation from commented JavaScript source code. . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 8. Overview docco JsDoc-Toolkit ... ............. ..... Introduction 简介 http://code.google.com/p/jsdoc-toolkit/ 基于 @annotation 的API文档工具。 v2 不再继续开发新功能,v3 正在调研。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 9. Overview docco JsDoc-Toolkit ... ............. ..... Introduction 简介 http://code.google.com/p/jsdoc-toolkit/ 基于 @annotation 的API文档工具。 v2 不再继续开发新功能,v3 正在调研。 基本用法 java -jar jsrun.jar app/run.js -r=4 tc/ -t=templates/jsdoc . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 10. Overview docco JsDoc-Toolkit ... ............. ..... Introduction 基本特性 用js实现,运行在rhino上面。 支持模板。 文件内按注释块顺序解析。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 11. Overview docco JsDoc-Toolkit ... ............. ..... Annotations Annotations @fileoverview/@author/@license @param @name @description/@example @augments/@borrows/@lends @namespace/@class/@constructor @function/@field the others.. . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 12. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @fileoverview/@author/@license 文件模板 /** * @fileoverview 模块简介. * @author 文河<wenhe@taobao.com> * * @license * Copyright (c) 2010 Taobao Inc. */ . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 13. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @param 基本用法 @param {类型} 变量名 描述. @param {类型[]} 变量名 描述. . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 14. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @param 基本用法 @param {类型} 变量名 描述. @param {类型[]} 变量名 描述. 可选参数和默认值 @param {类型} [变量名] 描述. @param {类型} [变量名="default"] 描述. . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 15. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @param 基本用法 @param {类型} 变量名 描述. @param {类型[]} 变量名 描述. 可选参数和默认值 @param {类型} [变量名] 描述. @param {类型} [变量名="default"] 描述. 配置参数,可选配置,默认值 @param {类型} config.params 描述. @param {类型} [config.params] 描述. @param {类型} [config.params="default"] 描述. . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 16. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @name 全文索引,默认为注释快后第一个token名。 全文共享,暴露局部变量可能引发局部变量的声明冲突。 设置@name,可改变当前变量的全文索引。 Example /** * name of this account. * */ var name = "frank"; . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 17. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @name 全文索引,默认为注释快后第一个token名。 全文共享,暴露局部变量可能引发局部变量的声明冲突。 设置@name,可改变当前变量的全文索引。 Example /** * name of this account. * @name wenhe */ var name = "frank"; . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 18. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @description/@example 无tag的信息并入@description。 可通过@link/@see进行相互链接。 @example输出<pre/>标签。 顺序解析,直接转为html(无换行),有markdown插件。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 19. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @description/@example 无tag的信息并入@description。 可通过@link/@see进行相互链接。 @example输出<pre/>标签。 顺序解析,直接转为html(无换行),有markdown插件。 Example /** * name of this account. * @description * other desc. * @example * Form.add("hello"); */ . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 20. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @description/@example 无tag的信息并入@description。 可通过@link/@see进行相互链接。 @example输出<pre/>标签。 顺序解析,直接转为html(无换行),有markdown插件。 Example /** * name of this account. * @description * other desc. * @example * Form.add("hello"); */ . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 21. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @description/@example 无tag的信息并入@description。 可通过@link/@see进行相互链接。 @example输出<pre/>标签。 顺序解析,直接转为html(无换行),有markdown插件。 Example Example /** * name of this account. name of this account. * @description other desc. * other desc. * @example Form.add("hello"); * Form.add("hello"); */ . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 22. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @augments/@lends/@borrows @augments 将目标对象的prototype并入当前的prototype。 @borrows 从目标对象借入单个方法/属性。 @lends 把整个对象借给其他对象。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 23. Overview docco JsDoc-Toolkit ... ............. ..... Annotations prototype/this JSDoc里描述prototype或者this,可用#代替 Example mobile.prototype === mobile# mobile.prototype.func === mobile#func this.func = #func . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 24. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @augments 描述基本的原型继承。 @augments /** @constructor */ function moduleBase() { }; . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 25. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @augments 描述基本的原型继承。 @augments /** @constructor */ function moduleBase() { }; /** @augments moduleBase */ function mobile() { }; . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 26. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @augments 描述基本的原型继承。 @augments /** @constructor */ function moduleBase() { }; /** @augments moduleBase */ function mobile() { }; . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 27. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @borrows/@lends @borrows 配合 @lends,描述Mixin机制。 @borrow /** @borrows EventTarget.fire as #fire */ var moduleBase = function() { }; . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 28. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @borrows/@lends @borrows 配合 @lends,描述Mixin机制。 @borrow /** @borrows EventTarget.fire as #fire */ var moduleBase = function() { }; @lends /** @constructor */ function mobile() { }; S.mix(mobile, /** @lends mobile */ { change: ; test: ; getMobile: ; .. }; . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 29. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @borrows/@lends @borrows 配合 @lends,描述Mixin机制。 @borrow /** @borrows EventTarget.fire as #fire */ var moduleBase = function() { }; @lends /** @constructor */ function mobile() { }; S.mix(mobile, /** @lends mobile */ { change: ; test: ; getMobile: ; .. }; . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 30. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @borrows/@lends . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 31. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @namespace/@class/@constructor @namespace 命名空间,输出一个没有参数,没有类型的节点。 @constructor 描述为一个构造器。 @class 描述为一个类。比constructor多了个多行描述。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 32. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @class/@constructor 任何在构造器上声明的参数均为初始化函数,new的时候传入。 @constructor /** * @name Mobile * @class 手机充值 * * @param {Object} config 初始配置. * @param {Object} [config.saveExtra] 额外保存信息. * ... * * @augments ModuleBase */ . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 33. Overview docco JsDoc-Toolkit ... ............. ..... Annotations @class/@constructor . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 34. Overview docco JsDoc-Toolkit ... ............. ..... Annotations the others.. @type 声明某个属性的类型,注意没有中括号。 @exports 用于模块重命名。会修改外部对某个变量的引用。 @memberof 自定义变量归属,自定义@name的时候使用。 @private 把一个公开方法标识为私有。 @public 把一个私有方法暴露出去。 @static 把一个方法标识为静态方法。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 35. Overview docco JsDoc-Toolkit ... ............. ..... Annotations the others.. @returns 返回值,可以指定类型。有没有s都可以。 @ignore 忽略某些索引,对加了-p参数的时候有用。 @deprecated 标识这个方法不推荐继续使用。 @constant 标识为常量。 @event 事件,描述具有很多复杂事件的模块有用。 @field/@function 两者同一类型,指定某个变量为属性还是方法。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 36. Overview docco JsDoc-Toolkit ... ............. ..... Tips last but not least 某种程度上,我们可以只写一些空的注释, 来完善整个JsDoc输出的索引列表。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 37. Overview docco JsDoc-Toolkit ... ............. ..... Tips Example /** * @class 事件对象. * @name EventTarget */ /** * 监听事件 * @name on * @function * @memberof EventTarget * @param {String} event 事件名称. * @param {EventCallback} function 监听方法. */ . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 38. Overview docco JsDoc-Toolkit ... ............. ..... Tips 描述回调函数的参数和返回值 空注释块,还能用来描述回调方法的类型,返回值等。 Example /** * @param {ajaxCallback} callback 回调方法. * @returns {Boolean} 回调处理是否成功. */ function(callback) { callback(data); } . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 39. Overview docco JsDoc-Toolkit ... ............. ..... Tips 描述回调函数的参数和返回值 空注释块,还能用来描述回调方法的类型,返回值等。 Example /** * @name ajaxCallback * @param {Object} data 返回的数据. */ /** * @param {ajaxCallback} callback 回调方法. * @returns {Boolean} 回调处理是否成功. */ function(callback) { callback(data); } . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 40. Overview docco JsDoc-Toolkit ... ............. ..... Tips 一些注意点 Windows下,注意仅大小写不同的模块, 输出的文件可能会覆盖。 @lends 不能写成 a.b.c 的形式。 仅能作为整体 {} 存在来写。 其他描述,对于局部变量 {} 大多无效。 改写成 a.b.c 的形式试试。 注意文件内是顺序解析的,注释也要顺序着写。 JsDoc还很不完美,但是需要的时候还是可以派上用场。 . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用
  • 41. Overview docco JsDoc-Toolkit ... ............. ..... Tips 谢谢! . . . . . . @yyfrankyy Yet Another JavaScript Programmer f2e.us JsDoc的使用