内置资源处理函数
EDP内置了一些资源处理函数
,可以满足对常见资源的处理。下面列举一些常用的内置资源处理函数
。
file
file接受一个参数 @param {string} file
,如果指定了文件,会渲染指定文件,否则会根据请求的路径输出文件内容。
- 如果
pathname
是一个目录,会调用listDirectory
输出当前目录文件列表 - 如果
pathname
是一个文件,直接输出文件内容
两种情况都会以config中配置的documentRoot
作为根目录。
参数:
file
: {string} 指定的输出文件
1 | { |
content
直接输出指定固定内容。
参数:
content
: {string} 输出内容
1 | { |
header
设置指定的response header,新设置的头会覆盖context.header
中已有的项。
参数:
header
: {Object} response header
1 | { |
contentType
输出固定Content-Type头,会覆盖已有的content-type
的值。
参数:
contentType
: 返回的contentType的值
1 | { |
json
将数据按JSON格式输出,将自动设置为JSON的Content-Type
参数:
data
: 需要返回的data
1 | { |
jsonp
将JSON数据按jsonp的方式输出,将自动设置为JS的Content-Type
参数:
data
: 需要返回的参数,如果JSON.stringify
失败,则使用context.content代替callbackKey
: 回调函数名在url中的key值,默认使用callback
1 | { |
dumpRequest
打印请求信息,打印的内容包括:
url
: request.urlmethod
: request.methodhttpVersion
: request.httpVersionprotocol
: request.protocolhost
: request.hostauth
: request.authhostname
: request.hostnameport
: request.portsearch
: request.searchhash
: request.hashheaders
: request.headersquery
: request.querybody
: request.bodyBuffer
1 | { |
redirect
重定向,根据permanent决定返回头是302还是301
参数:
location
: 重定向地址permanent
: 是否永久,如果是永久,则status code是301,否则是302
1 | { |
less
对context.content
进行less编译
参数:
compileOptions
: less编译参数encoding
: 源编码方式
1 | { |
autoless
对css资源的请求,自动查找相应的同名less文件,并编译输出
参数:
compileOptions
: less编译参数encoding
: 源编码方式
1 | { |
stylus
对context.content
进行stylus编译
参数:
compileOptions
: less编译参数encoding
: 源编码方式
1 | { |
autostylus
对css资源的请求,自动查找相应的同名stylus文件,并编译输出
参数:
compileOptions
: less编译参数encoding
: 源编码方式
1 | { |
autocss
对css资源的请求,自动查找相应的同名stylus或者less文件,并编译输出,autostylus和autoless都是基于autocss实现
参数:
compileOptions
: less编译参数encoding
: 源编码方式
1 | { |
coffee
对context.content
进行coffee编译
1 | { |
autocoffee
对js资源的请求,自动查找相应的同名coffee文件,并编译输出
参数:
encoding
: 源编码方式
1 | { |
php
处理对php文件的请求,当前只处理url后缀是php的请求,根据当前pathname找到php文件,调用php-cgi,输出执行后的内容
参数:
opt_handler
: php-cgi可执行文件的路径,默认为path中的php-cgiopt_suffix
: 文件后缀名(当前不可用)opt_forwardPathName
: 函数,将此函数的返回值作为php文件的路径
1 | { |
proxy
后端代理当前请求,转发到对应的主机上
参数:
hostname
: 主机名,可为域名或者IPport
: 端口,默认80
1 | { |
proxyNoneExists
如果当前context.status
等于404时,代理转发当前请求
查找config中的proxyMap,如果配置有如下:1
2
3exports.proxyMap = {
'127.0.0.1:8080': 'www.baidu.com:80'
};
则会把127.0.0.1:8080的请求代理到www.baidu.com:80
1 | { |
html2js
如下示例中的配置会将html2js.js
的文件定位到html2js
文件,并调用html2js转化为js文件输出
参数:
compileOptions
: 编译参数encoding
: 源编码方式
1 | { |
livereload
在html代码的body结束标签前增加下面一个script标签1
<script src="http://{options.ip}:{options.port}/livereload.js"></script>
参数:
options
: LiveReload的参数options.ip
: LiveReload服务器的IP地址,默认为当前机器的ip地址options.port
: LiveReload服务器的端口号,默认为8898options.encoding
: 文件编码,默认为utf-8
listDirectory
输出指定的dir目录或者当前请求的pathname对应的目录下的文件列表
参数:
dir
: 指定路径,默认为当前请求的pathname
1 | { |
addRequestHeader
配合Proxy Handler使用,添加一些自定义的Request Header
参数:
headers
: 自定义请求头
1 | { |
write
输出当前context的内容,并结束请求
注意:write对一般开发者来说不要去使用,edp webserver会默认在handlers的最后面增加一个write handler,如果开发者调用的write,最后面一个write handler执行的时候会报错
home
主索引页
查找当前pathname路径下的指定索引文件,如果没找到,则使用listDirectory
来作为输出
参数:
file
: {string|Array} 主索引文件,如果是数组,则从0开始寻找可用的主索引文件,找到了一个会忽略其他的文件
1 | { |
delay
延迟输出
参数:
time
: 延迟输出的时间,单位为ms
1 | { |
empty
输出空内容
1 | { |