akn*_*ds1 2 playframework reactjs webjars playframework-2.3
我在Play Framework 2.3项目中使用了webjar react-0.12.2,我依赖它就像这样:
libraryDependencies ++= Seq(
"org.webjars" %% "webjars-play" % "2.3.0-2",
"org.webjars" % "react" % "0.12.2"
)
Run Code Online (Sandbox Code Playgroud)
如果我尝试访问'react.js',就像在下面的例子中一样,我得到一个错误,因为react.js有多个匹配:
<script type='text/javascript' src='@routes.WebJarAssets.at(WebJarAssets.locate("react.js"))'>
Run Code Online (Sandbox Code Playgroud)
错误:
MultipleMatchesException: Multiple matches found for react.js. Please provide a more specific path, for example by including a version number.
Run Code Online (Sandbox Code Playgroud)
我发现访问'react.min.js'代替了,所以'react.js'路径有问题.但为什么会出错,是否有错误?
事实上react.js,WebJar中有两个实例.因此,如果您想使用定位器,则需要更加具体地了解路径.在webjars-play版本之前2.3.0-3,没有一种方法调用方法可以执行此操作,因此您可以执行以下操作之一:
使用Play 2.3的资产管道并通过提取目录访问该文件:
<script type='text/javascript' src='@routes.Assets.at("lib/react/react.js")'>
Run Code Online (Sandbox Code Playgroud)
或者您可以创建一个辅助方法,如:
def fullPath(webjar: String, path: String): String = {
val version = webJarAssetLocator.getWebJars.get(webjar)
s"$webjar/$version/$path"
}
Run Code Online (Sandbox Code Playgroud)
将使用如下:
<script type='text/javascript' src='@routes.WebJarAssets.at(fullPath("react", "react.js"))'>
Run Code Online (Sandbox Code Playgroud)
或者,如果升级到webjars-play版本,2.3.0-3则可以使用现在的内置WebJarAssets.fullPath方法:
<script type='text/javascript' src='@routes.WebJarAssets.at(WebJarAssets.fullPath("react", "react.js"))'>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |