在`Astros`中，每个资源都是一个 `Asset`实例，

### 实例化方式

**参数形式1：**
    
```
    new astro.Asset(request, project);
```

**参数形式2：**
    
```
    new astro.Asset({
        modType: 'page'
        ......
    });
```

## 属性
#### asset.status
发布时，状态值为'release'


#### asset.modType
资源类型

值   | 说明
----|----
jsCom | JS组件资源
webCom| Web组件资源
page  | 页面资源
static| 静态资源，asset目录下的字体、视频等资源

#### asset.name
资源名称

#### asset.fileType
资源类型

值 | 说明
----|----
js  |
css |
img |
其他 |如果资源不是js、css、img，filetype的值为资源的后缀名

#### asset.filePath

文件物理路径

* 可读、写

根据资源模块类型和名称生成路径并，如页面home的js的asset属性为

属性 | 值 
----|----
modType  | page 
fileType | js
name | home

读取文件时，会读取配置文件中设置的modType对应的存储路径（如页面存的储路径（默认）是`站点根目录/pages`）

    console.log(asset.filePath)
    // output
    // 项目根目录/pages/home/home.js

#### asset.info

* 只读

返回资源对象信息

```
    console.log(asset.info);
    /* output:
    
        modType: page, name:home fileType: css
    */
```

#### asset.relPath

发布的物理路径

* 可读、写

如果要自定义发布路径，可以通过该属性指定文件发布时的路径



#### 示例
```
    // request(http://127.0.0.1:3100/css/p/home.css)
    
    var asset = new astro.Asset(request, projectName);
    
    asset.getContent(function(){
        console.log(asset.info);
        // output
        // modType: page, name:home fileType: css
    });
```
```    
    // request(http://127.0.0.1:3100/img/webcom/footer/background.png)
    var asset = new astro.Asset(request, projectName);
    
    asset.getContent(function(){
        console.log(assrt.info);
        // output
        // modType: webCom, name:footer/background.png fileType: img
    });
```
```    
    var asset = new astro.Asset({
        modType:'page',
        fileType:'page',
        name: 'home'
    });
    
    asset.getContent(function(){
        console.log(assrt.info);
        // output
        // modType: page, name:home fileType: js
    });
```

#### asset.prjCfg

* 只读

asset所属项目配置

#### asset.modNameMin
资源类型对应的缩写

值|意义
----|----
jsCom|jscom
webCom|webcom
img|img
page|p

modNameMin 用于生成发布路径时，合成对应的资源目录，如页面home的JS对应地址为 `site/js/p/home.js`

#### asset.modNameFull
资源类型对应的完整名称

值|意义|说明
----|----|----
jscom | jsCom|JS组件资源
webCom|webCom|web组件资源
img |img|图片资源
p   |page| 页面资源


modNameFull 用于解析路径时，把资源映射到对应资源类型，如 site/js/p/home.js 解析后的asset属性是

属性|值
----|----
fileType | js
modType | page


> 你可以通过替换astro自带的中间件，来完成自定义路由

### 方法

#### (static) asset.Asset.getContents（assetList, callback）

批量读取资源内容

* 返回 **Promise** 对象（可通过回调函数或者Promise完成异步回调）

#### asset.read()
读取资源原始内容

* 同步

#### asset.getContent(callback)

读取资源，该方法会依次调用中间件，并返回经过中间件处理后的内容

* 异步

#### asset.release(callback)
发布资源

* 异步

### asset.clone

拷贝当前资源