Tajuk ditulis semula sebagai: "Mengintegrasikan Perenderan Sebelah Pelayan dengan scalajs-react" diterjemahkan ke dalam bahasa Cina sebagai "Mengintegrasikan scalajs-react dengan pemaparan sebelah pelayan"
P粉155551728
2023-08-30 10:58:29
<p>Saya telah cuba mengikuti panduan untuk menyepadukan pemaparan sebelah pelayan dalam scalajs-react, tetapi timbunan saya mungkin berbeza sedikit, jadi ia tidak begitu intuitif.</p>
<p>我正在使用<kod>SBT 1.5.5</kod>,<kod>skala 2.12.10</kod>以及以下相关:<
<pre class="brush:php;toolbar:false;">addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.7.4")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.7.0")
addSbtPlugin("org.scala-js" % "sbt-jsdependencies" % "1.0.2")
addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.20.0")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0")
addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.3.7")
addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0")
addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.2.0")</pre>
<p>在文章的<strong>第2步</strong>中,它说要将以下内容添加到'build.sbt'文件;中:&glt;
<pre class="brush:php;toolbar:false;">val scalaGraalVer = "1.0.1"
malas val webappSsr = crossProject("webapp-ssr")
malas val webappSsrJs = webappSsr.js
.dependsOn(myScalaJsWebapp) // 将此处更改为您真正的SJS模块名称
.setting(
perpustakaanDependencies ++= Seq(
"com.github.japgolly.scala-graal" %%% "core-js" % scalaGraalVer,
"com.github.japgolly.scala-graal" %%% "ext-boopickle" % scalaGraalVer
),
scalaJSLinkerConfig ~= { _.withSourceMap(false) },
artifactPath dalam (Kompilasi, fastOptJS) := (crossTarget.value / "webapp-ssr.js"),
artifactPath dalam (Kompilasi, fullOptJS) := (crossTarget.value / "webapp-ssr.js")
)
malas val webappSsrJvm = webappSsr.jvm
.setting(
perpustakaanDependencies ++= Seq(
"com.github.japgolly.scala-graal" %% "teras" % scalaGraalVer,
"com.github.japgolly.scala-graal" %% "core-js" % scalaGraalVer,
"com.github.japgolly.scala-graal" %% "ext-boopickle" % scalaGraalVer
),
unmanagedResources dalam Compile += Def.taskDyn {
peringkat val = (scalaJSStage dalam Compile dalam webappSsrJs).value
val task = stageKey(stage)
Def.task((task in Compile in webappSsrJs).value.data)
}.nilai)
)</pra>
<p>所以我目前在这里有2个问题:</p>
<ol>
<li><p><kod>crossProject</kod>似乎不接受<kod>String</kod>作为参数,即:</p>
<p><kod>def crossProject(平台:sbtcrossproject.Platform*)</code></p>
</li>
& lt;无法弄清楚它的位置,因此不知道我缺少什么或是否有其他方法。</p>
</li>
</ol></p>
Suka @tdimoff dah cakap,
crossProject
方法不接受字符串参数,所以这行代码lazy val webappSsr = crossProject("webapp-ssr")
应该替换为lazy val webappSsr = crossProject(JSPlatform, JVMPlatform)
untuk perpustakaan sbtcrossproject.Mengenai fungsi
stageKey
, ia nampaknya merupakan sebahagian daripada perpustakaan scalajs-bundler, jadi anda perlu menambah kebergantungan perpustakaan berikut:libraryDependencies += "ch.epfl.scala" % "scalajs-bundler" % "0.20.0"
Ini sepatutnya membolehkan anda menggunakan fungsi
stageKey
.