Assets理解随笔
在PlayFramework中应用
在Play框架中提供的都是动态文件响应,前端工作内容大部分是静态文件.Assets大概起的就是这个作用.
默认路径看 conf/routes 里:
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
#注释大意是静态文件从 /public 文件夹到 /assets 中URL路径.
规则声明HTTP GET请求 /assets/ 时映射到 Controllers.Assets.at 方法,该方法使用两个参数,告诉该方法 Path 路径和 file 文件.
缺省使用 /public/filename 路径,如果需要指定详细点,可以定义路由规则:
GET /images/*file controllers.Assets.at(path="/public/images", file)
GET /styles/*file controllers.Assets.at(path="/public/styles", file)
使用assets逆向路由来避免hardocded(硬编码[百度百科词条])的URL,Assets.at也是一个普通的Action方法,因此你可以使用assets逆向路由,例如:
<link href="@routes.Assets.at("images/favicon.png")" rel="shortcut icon" type="image/png">
除了逆向路由的优点,使用Asset控制器的另外一个优点是内置的缓存支持以及和Http Entity Tag(Etag)的支持.从而允许客户端根据需要是否要从服务器请求资源还是可以使用Cached中的文件.
Assets这个从rails中发展出来的,可以看看[Ruby-China]中的介绍.