成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JSDuck用法詳解

xiaochao / 1869人閱讀

摘要:語(yǔ)法父類(lèi)名表示當(dāng)前類(lèi)繼承于哪個(gè)類(lèi)的標(biāo)簽。成員標(biāo)簽成員標(biāo)簽作用于類(lèi)中的配置屬性函數(shù)事件。表明可被子類(lèi)繼承,和一起使用。示例獲取圓的面積圓的半徑面積值作用于函數(shù),表明函數(shù)的標(biāo)簽。作用于函數(shù),表明構(gòu)造函數(shù)參數(shù)的標(biāo)簽,用法同。

字?jǐn)?shù):3692字

閱讀時(shí)間:15分鐘

前言

? 首先,咱們有一個(gè)前提,JSDuck對(duì)我們而言只是一個(gè)便于API查看的文檔化工具。因此,只要它能夠滿(mǎn)足我們文檔化的所有需求,并且優(yōu)雅地顯示出來(lái)就足夠了。所以,這篇文章旨在告訴大家,在日常工作中,我們?nèi)绾问褂眠@個(gè)工具,至于里面的實(shí)現(xiàn)原理、編程思想或者自定義標(biāo)簽等咱一概不講。

? 如果是之前完全沒(méi)有接觸過(guò)JSDuck或者機(jī)器上沒(méi)有JSDuck環(huán)境,建議可以先花5分鐘看一下筆者的另一篇文章 五分鐘玩轉(zhuǎn)文檔化工具JSDuck。可以先將環(huán)境搭建起來(lái),對(duì)JSDuck也有一個(gè)可視化的認(rèn)識(shí)。

? 接下來(lái),筆者將從基本概念、標(biāo)簽、工具使用三個(gè)方面,和你一起認(rèn)識(shí)認(rèn)識(shí)JSDuck文檔化工具。

? 提別標(biāo)明一下,文章所有講述的內(nèi)容都是基于當(dāng)前最新的版本JSDuck5

1.基本概念

? JSDuck將代碼組成分為兩大部分:類(lèi)和類(lèi)中成員。其中,成員又分為配置、屬性、函數(shù)、事件、文檔樣式幾個(gè)部分。因此,使用JSDuck有一個(gè)基礎(chǔ)——我們的代碼都是以面向?qū)ο蟮姆绞骄帉?xiě)的。

? 其次,JSDuck的數(shù)據(jù)類(lèi)型包括JS原始類(lèi)型、JS內(nèi)嵌類(lèi)型和DOM類(lèi)型三大類(lèi)型。

? JS原始類(lèi)型:

? boolean:布爾類(lèi)型

? number:數(shù)值類(lèi)型

? string:字符串類(lèi)型

? void:無(wú)返回值

? undefine:未定義

? JS內(nèi)嵌類(lèi)型:

? Number:數(shù)值類(lèi)型

? String:數(shù)值類(lèi)型

? Boolean:布爾類(lèi)型

? Object:對(duì)象

? Array:數(shù)組類(lèi)型

? Date:日期類(lèi)型

? Function:函數(shù)類(lèi)型

? Arguments:函數(shù)參數(shù)

? Error:錯(cuò)誤類(lèi)型

? Regex:正則對(duì)象

? null:空值

? DOM類(lèi)型:

? HTMLElement:html節(jié)點(diǎn)類(lèi)型

? XMLElement:xml節(jié)點(diǎn)類(lèi)型

? NodeList:DOM節(jié)點(diǎn)集合類(lèi)型

? TextNode:DOM文本節(jié)點(diǎn)類(lèi)型

? CSSStyleSheet:樣式表對(duì)象

? CSSStyleRule:樣式規(guī)則對(duì)象

? Event:DOM事件類(lèi)型

? 這些數(shù)據(jù)類(lèi)型都是JSDuck默認(rèn)支持的數(shù)據(jù)類(lèi)型,它們都是我們?cè)趯?xiě)代碼文檔時(shí)可以直接使用的數(shù)據(jù)類(lèi)型。此外,JSDuck還支持我們自定義數(shù)據(jù)類(lèi)型,不過(guò)絕大多數(shù)情況下,這些數(shù)據(jù)類(lèi)型已經(jīng)足夠我們使用了。

2.標(biāo)簽

? JSDuck擁有超級(jí)豐富的標(biāo)簽,這也正是它功能強(qiáng)大的體現(xiàn)之一。其實(shí)學(xué)習(xí)這個(gè)工具的80%的學(xué)習(xí)成本都在標(biāo)簽的學(xué)習(xí)上,也就是說(shuō)弄清楚了這些標(biāo)簽,那我們基本上就掌握了這門(mén)工具了。而且,其實(shí)在我們學(xué)習(xí)這些標(biāo)簽時(shí),不僅是了解他們的用法,我們更多的是學(xué)習(xí)到這些標(biāo)簽背后的代碼規(guī)范、設(shè)計(jì)思路和編程思想。廢話(huà)不多說(shuō)了,咱就開(kāi)始JSDuck標(biāo)簽的學(xué)習(xí)吧!

? JSDuck一共有55個(gè)標(biāo)簽,去除廢棄的和基本不用的標(biāo)簽,還有39個(gè)。其中,通用標(biāo)簽9個(gè),類(lèi)標(biāo)簽9個(gè),成員標(biāo)簽15個(gè),其他標(biāo)簽6個(gè)?,F(xiàn)在我們需要學(xué)習(xí)的僅僅就是這不到40個(gè)標(biāo)簽,而且,這40個(gè)里面有一半的標(biāo)簽使用頻率很低。所以,實(shí)質(zhì)上,我們掌握20個(gè)常用標(biāo)簽就能滿(mǎn)足我們絕大部分的需求了。那么,下面我們就一起來(lái)看看這些標(biāo)簽的用法吧!

通用標(biāo)簽

通用標(biāo)簽作用于所有代碼。

@author

示例:
/**
* @class MyClass
* My neat class.
* @author John Doe 
*/

表示代碼作者的標(biāo)簽。

@docauthor

示例:
/**
* @class MyClass
* My neat class.
* @author John Doe 
* @docauthor Tom 
*/

表示文檔作者的標(biāo)簽,一般情況下和代碼作者一致,如果不一致時(shí),才會(huì)使用的標(biāo)簽。

@example

示例:
/**
*     
*    @example
*    var pMyClass = new MyClass();
*
* @class MyClass
* My neat class.
* @author John Doe 
*/

文檔示例,使用 @example 標(biāo)簽時(shí)注意要上下都至少空一行并且空四個(gè)。這里也可使用markdown語(yǔ)法代替使用。

樣例還有一種用法,通過(guò)命令參數(shù) --examples 配置示例文件目錄,以頁(yè)面的形式查看示例。

@link

示例:
/**
* 展示非阻擋式消息框,阻擋式彈出框見(jiàn){@link GM.Alert#show GM.Alert}
* @method show
* @param strMessage
*/

內(nèi)部鏈接標(biāo)簽,可以鏈接到文檔其他位置。

@static

表明類(lèi)或成員為靜態(tài)的標(biāo)簽。

@since、@experimental 、@depercated、@new

四個(gè)標(biāo)簽用法一樣,分別表示:代碼版本之后無(wú)效標(biāo)簽、實(shí)驗(yàn)性代碼標(biāo)簽、暫用代碼標(biāo)簽、新增代碼標(biāo)簽。

類(lèi)標(biāo)簽

類(lèi)標(biāo)簽只作用于類(lèi)。

@class

語(yǔ)法:
@class 類(lèi)名

表示類(lèi)的標(biāo)簽。

@extends

語(yǔ)法:
@extends 父類(lèi)名

表示當(dāng)前類(lèi)繼承于哪個(gè)類(lèi)的標(biāo)簽。

@alias、@alternateClassName

分別表示類(lèi)的別名標(biāo)簽、類(lèi)的說(shuō)明標(biāo)簽。

@abstract

表明抽象類(lèi)的標(biāo)簽。

@requires

示例:
/**
* @class TestClass
* @requires TestClass3
* @requires TestClass4
*/

表明當(dāng)前類(lèi)依賴(lài)的類(lèi),可以有多個(gè)依賴(lài)類(lèi)。

@uses

表明當(dāng)前類(lèi)使用了那些類(lèi),可以有多個(gè)。

@mixins

表明多態(tài)類(lèi)標(biāo)簽,當(dāng)前類(lèi)中混合了其他類(lèi)的成員。

@singleton

表明當(dāng)前類(lèi)為單例模式類(lèi)。

成員標(biāo)簽

成員標(biāo)簽作用于類(lèi)中的配置、屬性、函數(shù)、事件。

@member

語(yǔ)法:
@member 類(lèi)名

表明當(dāng)前成員屬于哪一個(gè)類(lèi),如果代碼中該成員已經(jīng)屬于某個(gè)類(lèi),則會(huì)自動(dòng)分析出來(lái),不需要添加該標(biāo)記。

@private@protected

分別表明當(dāng)前成員是私有成員和受保護(hù)成員的標(biāo)簽。

@hide

文檔中,子類(lèi)不需要展示出來(lái)的其父類(lèi)的成員標(biāo)簽。

@inheritable

表明可被子類(lèi)繼承,和@static一起使用。

@removed

表明成員已經(jīng)被刪除標(biāo)簽。

@method

示例:
/**
* @method area
* 獲取圓的面積
* @param {Number} r 圓的半徑
* @return {Number} 面積值
*/

作用于函數(shù),表明函數(shù)的標(biāo)簽。

@param

語(yǔ)法:
@param name
@param {Type} name
@param {Type} [name]
@param {Type} [name="default-value"]
@param {Type} name.subproperty

作用于函數(shù),表明函數(shù)參數(shù)的標(biāo)簽。

@constructor

作用于函數(shù),表明函數(shù)是類(lèi)的構(gòu)造函數(shù)的標(biāo)簽。

@cfg

作用于函數(shù),表明構(gòu)造函數(shù)參數(shù)的標(biāo)簽,用法同 @param。

@return

語(yǔ)法:
@return {Type} 返回說(shuō)明
@return {Type} return.subproperty

作用于函數(shù),表明函數(shù)返回值標(biāo)簽,沒(méi)有返回值就不需要添加該標(biāo)簽。

@abstract

作用于函數(shù),表明函數(shù)是抽象函數(shù)的標(biāo)簽。

@chainable

作用于函數(shù),表明函數(shù)是鏈?zhǔn)胶瘮?shù)的標(biāo)簽。如果代碼中直接返回this,則工具會(huì)自動(dòng)識(shí)別為鏈?zhǔn)胶瘮?shù)。

@throws

語(yǔ)法
@throws 錯(cuò)誤描述
@throws {Type} 錯(cuò)誤描述

作用于函數(shù),表明函數(shù)報(bào)錯(cuò)時(shí)拋出的異常標(biāo)簽,可以添加多個(gè)標(biāo)簽表明多個(gè)異常,錯(cuò)誤類(lèi)型默認(rèn)是 object 類(lèi)型。

@fires

語(yǔ)法:
@fires eventName

作用于函數(shù),表明當(dāng)前函數(shù)會(huì)觸發(fā)哪個(gè)事件的標(biāo)簽。

其他標(biāo)簽

其他標(biāo)簽作用于一些特殊代碼。

@event

語(yǔ)法:
@event name 事件描述

作用于事件,描述事件的標(biāo)簽。

@preventable

作用于事件,表明事件觸發(fā)函數(shù)中,返回false就可以停止冒泡的標(biāo)簽。

@enum

語(yǔ)法:
@enum
@enum {Type}
@enum {Type} EnumName
@enum [EnumName=alias.*]

示例:
/** @enum */
MyEnum = {
 /** the first enum value */
 FIRST: "foo",
 /** the second enum value */
 SECOND: "bar"
};

表明枚舉的標(biāo)簽。

@property

作用于類(lèi)中屬性,用法同 @param ,描述屬性的標(biāo)簽。

@readonly

作用于類(lèi)中屬性,表明屬性是只讀的標(biāo)簽。

@aside

語(yǔ)法:
@aside guide 
@aside video 
@aside example 

作用于類(lèi),表明向?qū)У臉?biāo)簽。

3.工具使用

? 上面講述了一堆JSDuck的概念和各種標(biāo)簽,那都是在約束我們?nèi)绾尉帉?xiě)代碼和相應(yīng)的注釋。那在這個(gè)基礎(chǔ)上,我們?cè)撊绾问褂眠@個(gè)工具呢?

? JSDuck工具使用起來(lái)其實(shí)非常簡(jiǎn)單,就是幾個(gè)簡(jiǎn)單的cmd命令就可以了。如下圖所示,就是JSDuck的所有命令,一頁(yè)就可以顯示完全,并且我們常用的命令不到10個(gè)。

?

部分命令參數(shù)如下:

參數(shù) 含義
-- 或 空 需要生成文檔的文件或者目錄,也可以是一個(gè)集合
--output 文檔存放的目錄
--config 配置文件路徑
--encoding 文檔編碼方式
--exclude 不生成文檔的目錄或文件,可以是一個(gè)集合
--title 文檔標(biāo)題
--footer 文檔標(biāo)尾
--head-html 文檔頁(yè)面的head中需要添加的內(nèi)容
--body-html 文檔頁(yè)面的body中需要添加的內(nèi)容
--css 額外添加的樣式?
--welcome 歡迎頁(yè)面
--guides 向?qū)渲?/td>
--examples 示例配置
--categories 分類(lèi)配置
--images 圖片路徑配置
--tags 自定義標(biāo)簽
--examples-base-url 示例文件的基礎(chǔ)路徑
--help 查看命令幫助
--version 查看當(dāng)前版本

? 這里要注意一點(diǎn),JSDuck所有的參數(shù)都需要添加兩個(gè) “-”。例如,最常用的命令就是 :

? jsduck "G: est-jsduck est.js" --output=G: est-jsduckdoc

? 這條命令的意思就是將文件 G:test-jsducktest.js 中的代碼生成文檔,然后存放到目錄 G:test-jsduckdoc 下。這是最簡(jiǎn)單的一條命令,這個(gè)命令之后可以添加上面列出的任何參數(shù)。但是每次我們都去敲一堆命令行來(lái)執(zhí)行工具確實(shí)有點(diǎn)繁瑣,下面我們一起試試更便捷的方法吧!

? JSDuck是支持使用配置文件來(lái)執(zhí)行命令的,我們只需要在執(zhí)行cmd的目錄下創(chuàng)建一個(gè)名為 jsduck.json 的文件,將所有的配置都寫(xiě)到這個(gè)配置文件里面,然后直接執(zhí)行 jsduck 命令就行了。下面我們貼出一個(gè)標(biāo)準(zhǔn)的配置文件看看:

{
    "--title": "XXX文檔",
    "--welcome": "welcome.html",
    "--warnings": ["-link", "-no_doc"],
    "--seo": true,
    "--": [
        "./common/js",
        "./custom",
        "./libs/angular/custom"
    ],
    "--output": "./docs",
    "--examples-base-url": "./examples",
    "--examples": "./examples.json",
    "--body-html": [
        ""
    ],
    "--tags":["tags/my_custom_tag.rb"]
}

? 如果想省事情,可以直接把這段配置拷貝過(guò)去,按照自己的實(shí)際環(huán)境設(shè)置一下屬性,就可以直接使用了。下面,我們一起來(lái)解讀一下這段配置的含義。

"--title": "XXX文檔",

配置文檔在瀏覽器中顯示的標(biāo)簽名稱(chēng)和頁(yè)面的標(biāo)題名稱(chēng)為 “XXX文檔”。

"--welcome": "welcome.html",

配置文檔歡迎頁(yè)面的路徑為“welcome.html”,這里配置的是相對(duì)當(dāng)前運(yùn)行命令的路徑。

"--warnings": ["-link", "-no_doc"],

配置生成文檔時(shí),遇到未知的連接或缺失文檔的代碼時(shí),不生成警告日志。參數(shù)值里面,“-”表示

關(guān)閉警告,“+”表示打開(kāi)警告,查看詳細(xì)警告信息可以鍵入jsduck --help=warings

"--seo": true,

配置生成文檔時(shí),進(jìn)行SEO優(yōu)化。

"--": [
        "./common/js",
        "./custom",
        "./libs/angular/custom"
    ],

配置需要生成文檔的內(nèi)容,這里我配置了一個(gè)集合,里面包含了三個(gè)目錄,這三個(gè)目錄下所有的文件都會(huì)被掃描并生成文檔。這里,我們也可以配置到具體的一個(gè)文件。

"--output": "./docs",

配置生成的文檔文件的保存目錄為當(dāng)前目錄下的 docs 文件夾。

"--examples-base-url": "./examples",

配置生成的文檔中示例的基準(zhǔn)目錄為當(dāng)前目錄下的 examples文件夾,文檔中需要使用的示例文件都以這個(gè)目錄為基礎(chǔ)路徑。

"--examples": "./examples.json",

配置示例文件路徑為當(dāng)前目錄下名為 examples.json 的文件,文件內(nèi)容如下:

[
   {
       "title": "Combination Examples",
       "items": [
           {
               "name": "feed-viewer",
               "title": "Feed Viewer",
               "description": "RSS feed reader example application.",
               "url": "feed-viewer.html",
               "icon": "G:/codeWorkSpace/idea/static-resources/src/main/webapp/custom/frame/frame2/img/user.png",
               "status": "updated"
           },
           {
               "name": "web-desktop",
               "text": "Web Desktop",
               "description": "A desktop in the browser using Ext components.",
               "url": "http://www.example.com/desktop.html",
               "icon": "/../../custom/frame/frame2/img/user.png",
               "status": "updated"
           }
       ]
   }
]

其中,url如果是相對(duì)路徑,就是相對(duì) "--examples-base-url" 中配置的路徑

"--body-html": [
    ""
],

配置生成的文檔頁(yè)面中,body內(nèi)需要添加的額外內(nèi)容,頁(yè)面元素表現(xiàn)如下圖所示:

這里我是配置了一個(gè)版本列表的下拉菜單,里面包含了這個(gè)文檔的1.0、2.0、3.0版本的鏈接。

"--tags":["tags/my_custom_tag.rb"]

配置自定義標(biāo)簽,我們這里是配置了一個(gè)ruby代碼文件路徑,自定義了一種標(biāo)識(shí)成員為內(nèi)部成員的標(biāo)簽。這里就需要我們具備一點(diǎn)ruby的知識(shí)了,該文件代碼如下:

require "jsduck/tag/boolean_tag"

class Inner < JsDuck::Tag::BooleanTag
  def initialize
    @pattern = "inner"
    @signature = {:long => "inner", :short => "in"}
    super
  end
end

這就是一個(gè)自定義一個(gè)布爾類(lèi)型的簡(jiǎn)單標(biāo)簽的示例代碼。還有許多更復(fù)雜的標(biāo)簽定義方式,但是好在JSDuck提供的標(biāo)簽已經(jīng)相當(dāng)豐富了,絕大多數(shù)情況下,我們是不需要自定義標(biāo)簽的。

? 至此,JSDuck的基本用法就已經(jīng)全部介紹完畢啦!到這里的大家也已經(jīng)擁有獨(dú)立使用JSDuck所需的所有知識(shí)儲(chǔ)備了,接下來(lái)我們?nèi)钡闹挥袑?shí)戰(zhàn)了。下一篇文章,筆者將和大伙一起實(shí)戰(zhàn)一把,探討一下怎樣才是使用JSDuck的正確姿勢(shì)。

? 馬上回來(lái),敬請(qǐng)期待哦!

? 除了該文章以外,筆者還特制了一份思維導(dǎo)圖,以作飯后甜點(diǎn)食用: 一張圖之——JSDuck 。

歡迎關(guān)注我的微信公眾號(hào):

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90723.html

相關(guān)文章

  • JSDuck實(shí)戰(zhàn)

    摘要:我們先聲明了類(lèi),在類(lèi)的注釋上添加標(biāo)簽表示靜態(tài)類(lèi)。靜態(tài)類(lèi)中包含一個(gè)方法,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的擴(kuò)展功能,后面類(lèi)的繼承需要用到這個(gè)接口。這里需要注意,靜態(tài)類(lèi)中,所有的成員也都是靜態(tài)的。 字?jǐn)?shù):2543 閱讀時(shí)間:15分鐘 前言 ? 上一篇文章我們講述了JSDuck的詳細(xì)用法。那么,本文筆者就以實(shí)例為基礎(chǔ),和大家一起,從零開(kāi)始,搭建一個(gè)簡(jiǎn)單的API文檔——我們的第一個(gè)API文檔V0.0.1。...

    kel 評(píng)論0 收藏0
  • 五分鐘玩轉(zhuǎn)文檔化工具JSDuck

    摘要:我們?cè)趯?duì)現(xiàn)在較主流的五個(gè)文檔工具分別作了調(diào)研和嘗試,得到結(jié)論如下工具優(yōu)點(diǎn)缺點(diǎn)提供了完整的模板開(kāi)發(fā)事件觸發(fā)等接口,使用非常靈活。至此,的環(huán)境部署已經(jīng)全部完成了。 字?jǐn)?shù):981 閱讀時(shí)間:5分鐘 選型依據(jù) ? 在經(jīng)歷了數(shù)個(gè)上線(xiàn)的項(xiàng)目之后,筆者所在的團(tuán)隊(duì)已經(jīng)沉淀了一個(gè)相對(duì)穩(wěn)定版本的前端框架。因此,我們需要出具一套框架API文檔,以便公司其他成員的使用和框架的后期維護(hù)。我們?cè)趯?duì)...

    rickchen 評(píng)論0 收藏0
  • Javascript自動(dòng)化文檔工具:YUI Doc, JSDoc 3, JSDuck等比較

    摘要:本文比較了種較為主流的注釋文檔生成工具。應(yīng)該說(shuō)是非常適合開(kāi)源項(xiàng)目多個(gè)作者共同維護(hù)的一個(gè)文檔工具。最后我選擇了作為文檔生成的工具。為了支持多種語(yǔ)言,它僅對(duì)注釋塊內(nèi)部的內(nèi)容進(jìn)行解析。 最近隨著寫(xiě)Node以及獨(dú)立的CommonJS模塊越來(lái)越多,我發(fā)現(xiàn)有一份好的文檔不僅可以幫助自己在應(yīng)用這些接口的時(shí)候不至于迷糊,而且對(duì)于共同開(kāi)發(fā)的情況下,能夠省去大量團(tuán)隊(duì)的交流和Debug的時(shí)間。 本文比較了...

    tyheist 評(píng)論0 收藏0
  • Jsduck的使用

    摘要:簡(jiǎn)介是眾多開(kāi)源項(xiàng)目中的一個(gè),它是使用編寫(xiě)的文檔生成器。系統(tǒng)環(huán)境變量,對(duì)所有用戶(hù)起作用。使用可通過(guò)配置,也可通過(guò)直接在命令行寫(xiě)參數(shù)來(lái)使用。配置進(jìn)入項(xiàng)目目錄,配置文件,類(lèi)似以下的寫(xiě)法運(yùn)行命令,即可在文件夾下找到自動(dòng)生成的文檔。 簡(jiǎn)介 jsduck是senchalabs眾多開(kāi)源項(xiàng)目中的一個(gè),它是使用ruby編寫(xiě)的 javascript API文檔生成器。不像JSDoc一樣,不按照符合JSDo...

    alaege 評(píng)論0 收藏0
  • JSDuck 與 AngularJS 融合技巧

    摘要:融合思路解決這個(gè)問(wèn)題,有兩種思路。給我們帶來(lái)了以下新成員模塊服務(wù)指令篩選器和控制器。與其他類(lèi)是通過(guò)類(lèi)的名稱(chēng)區(qū)分的,名稱(chēng)統(tǒng)一以結(jié)尾。這種處理方式是一種折中方案,如果想要更加規(guī)范優(yōu)雅的話(huà),建議使用自定義標(biāo)簽來(lái)解決。 字?jǐn)?shù):1568 閱讀時(shí)間:10分鐘 前言 ??前面,我們以一個(gè)實(shí)戰(zhàn)案例來(lái)詳細(xì)說(shuō)明了如何在實(shí)際開(kāi)發(fā)中使用JSDuck工具。但是,并不是所有的時(shí)候,代碼的封裝方式都受我們控制的。...

    CarterLi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<