日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js

發(fā)布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

gwt-2.8.2下載

該博客嚴(yán)重偏向于GWT(和基于GWT的框架),但是我謹(jǐn)記,將來GWT可能會被其他技術(shù)取代,因此我們始終愿意探索其他平臺/框架。 正如他們所說,多元化可以降低風(fēng)險。 每種編程語言,即使是最奇怪的編程語言,都有其“到j(luò)avascript”編譯器: https : //github.com/jashkenas/coffeescript/wiki/List-of-languages-that-c??ompile-to-JS ,因此GWT可以嘗試學(xué)習(xí)向他人學(xué)習(xí),以求日后改善。 Scala.js一直被與GWT進行比較,因為它們都使用基于JVM的語言,這暗示著語法和語義上的某些相似之處。 Scala.js是Scala到j(luò)avascript編譯器,其工作方式與GWT類似。 Scala.js具有使GWT有吸引力的功能的等效項,例如JsInterop,開發(fā)人員模式,修剪,草稿編譯,元素等。 我們計劃在即將發(fā)布的一篇文章中與GWT進行Scala.js比較,但是在此之前,我們想簡要介紹一下Scala.js,以及如何編寫一個簡單的程序。

這是Scala,不是Java

Scala是一種面向?qū)ο蟮腏VM語言,它針對功能性編程及其內(nèi)置的不變性已經(jīng)引起了一些炒作。 就我個人而言,我從未在Scala中編寫任何“實際”應(yīng)用程序,因此我真的不了解該語言的所有來龍去脈。 看起來您可以使用Scala進行任何操作,也可以使用Java 8進行操作,反之亦然。 在檢查語法差異時引起注意的一件事是,Scala具有動態(tài)類型推斷,因此未聲明變量的類型。 這看起來可能更類似于javascript,并且可能會給人一種我們直接使用javascript進行編程的感覺。 Scala.js文檔提供了Scala與Es6之間的比較: https ://www.scala-js.org/doc/sjs-for-js/es6-to-scala-part1.html

項目設(shè)置

初始設(shè)置非常簡單。 只有一個用于scala( sbt )的構(gòu)建工具,和一個用于Scala.js的插件,因此沒有任何問題。 Scala.js項目不需要任何特殊結(jié)構(gòu),簡單的項目結(jié)構(gòu)就足夠了。 NodeJs是使用Scala.js的要求。 然后,可以通過運行以下命令來初始化項目:

sbt new scala/scala-seed.g8

從命令行。 然后將提示您輸入項目的名稱,版本和組織名稱(在Maven中等效于groupId)。 然后,我們需要將Scala.js依賴關(guān)系和配置添加到build.sbt文件(等同于pom.xml)中。 我們的build.sbt文件看起來像:

enablePlugins(ScalaJSPlugin)name := "scalajsdemo"version := "0.1-SNAPSHOT"scalaVersion := "2.11.8"libraryDependencies ++= Seq("org.scala-js" %%% "scalajs-dom" % "0.9.1" )scalaJSUseMainModuleInitializer := true

該配置是最小的,因此不需要很大的努力。

使用框架

設(shè)置項目后,我們要做的就是創(chuàng)建一個擴展JSApp對象的入口點類。

object MyForm extends JSApp {override def main(): Unit = {} }
  • 與DOM交互:
    Scala.js具有非常全面的API,以與原始JS相同的方式進行DOM交互和操作。 實際上,這是Scala.js的核心重點:默認(rèn)情況下,沒有自定義ui組件來構(gòu)建ui。 例如,使用事件偵聽器創(chuàng)建按鈕的代碼如下: val button = document.createElement("button")button.textContent = "Click button"button.addEventListener("click", { (e0: dom.Event) =>println("clicked")}, false)document.body.appendChild(button)

    為了使用XmlHttpRequest執(zhí)行HTTP請求,代碼如下所示:

    val req = new XMLHttpRequest()req.open("GET", "http://www.g-widgets.com/feed/")req.setRequestHeader("Access-Control-Allow-Origin", "*")

    假設(shè)我們要解析G-Widgets Rss feed并創(chuàng)建一個包含所有標(biāo)題的列表,然后我們將執(zhí)行以下操作:

    val blogPostsListElement = document.createElement("ul")req.onload = {(e: Event) =>if (req.status == 200) {val parser = new DOMParser();val doc = parser.parseFromString(req.responseText, "application/xml")val titleList = doc.getElementsByTagName("title")for(i <- 0 to titleList.length){val listElement = document.createElement("li")if(titleList.item(i) != null){listElement.textContent = titleList.item(i).textContentblogPostsListElement.appendChild(listElement)}}}}req.send();document.body.appendChild(blogPostsListElement)
  • 到/從Javascript導(dǎo)出(等效于JsInterop):
    Scala.js還可以使用注釋將類導(dǎo)出/導(dǎo)入到Javascript。 假設(shè)我們要在代碼中使用JSON實用程序?qū)ο?#xff0c;導(dǎo)入它的一種方法是: @js.native @JSGlobal object JSON extends js.Object {def parse(data: String): js.Object = js.nativedef stringify(anobject :js.Object): String = js.native }

    同樣,我們可以使用注釋從JavaScript腳本中導(dǎo)出一些要使用的對象:

    @JSExportTopLevel("DummyJs") class DummyJs(val dummyValue: String) {@JSExportdef getTheDummyValue(): String = dummyValue }
  • 編譯和開發(fā)模式

    關(guān)于Scala.js的一件真正整潔的事情是它的編譯時間短。 更改代碼后,重新編譯.js所需的編譯時間不會超過9(對于此簡單應(yīng)用程序),這非常令人鼓舞,而且令人沮喪。 Web服務(wù)器的選擇(如果需要)保持打開狀態(tài)。 例如,帶有實時重載擴展名的服務(wù)器可能會派上用場。 Scala.js提供了兩種編譯模式:fastOptJS和fullOptJS。 當(dāng)運行fastOptJS(相當(dāng)于GWT中的草稿模式)時,編譯器進行的優(yōu)化較少,因此編譯時間較短。 這是發(fā)展的理想選擇。 另一方面,fullOptJS使用Google的閉包編譯器來生成高度緊湊和優(yōu)化的.js文件。

    結(jié)語

    這是對Scala.js的自以為是的介紹。 Scala.js可以提供的主要優(yōu)點是沒有樣板的項目設(shè)置和快速的編譯時間。 GWT比Scala.js更成熟并且使用更多,但是GWT可以從Scala.js中學(xué)習(xí),可以減少編譯時間和設(shè)置項目的樣板。 另一方面,一些Scala.js倡導(dǎo)者并不了解GWT的演變,有時會對GWT能力進行不正確的評估。 例如, 格雷格·多雷爾 ( Greg Dorell)在最近的Devoxx 演講中指出,“ GWT不起作用”,因為它無法為js功能提供良好的導(dǎo)入/導(dǎo)出。 他顯然忽略了GWT還引入了JsInterop。 GWT仍然在生態(tài)系統(tǒng)和社區(qū)方面取勝。 我們將在以后的帖子中進行更詳細(xì)的比較。 綜上所述,Scala.Js是開發(fā)Web應(yīng)用程序的一種有吸引力的替代方法。 對于Java開發(fā)人員來說,可能存在語言障礙,但是學(xué)習(xí)曲線不會真的很陡峭,因為Java和Scala都是JVM語言并且具有相似的概念。

    完整的代碼可以在這里找到: https : //github.com/zak905/scalajsdemo

    翻譯自: https://www.javacodegeeks.com/2017/07/overview-scala-js-gwt-developer-perspective.html

    gwt-2.8.2下載

    總結(jié)

    以上是生活随笔為你收集整理的gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。