Подтвердить что ты не робот

В чем разница между scala.js vs jscala?

Есть два инструмента для компиляции кода Scala прямо в JavaScript: Scala.js и JScala. Оба они отлично смотрятся и могут работать с нетривиальным кодом Scala.

Какова техническая разница между ними?

4b9b3361

Ответ 1

На самом деле существует более двух инструментов, но Scala.js и JScala действительно являются двумя инструментами, все еще находящимися в активной разработке.

Разница фундаментальна: Scala.js - это компилятор от Scala к JavaScript, тогда как JScala - это DSL на основе макросов для создания фрагментов кода JavaScript.

Как пояснил в своем ответе @Gaurav, Scala.js является обычным компилятором Scala, но вместо кода JVM он испускает код JavaScript. Код Scala, который вы пишете, никогда не запускается JVM. Весь ваш код Scala переведен на JavaScript. По этой причине он поддерживает весь язык Scala, включая, например, библиотеку коллекций. Это полезно для написания всей клиентской стороны как приложения Scala.

Использование JScala, с другой стороны, большая часть вашего приложения (по крайней мере, все внешние вызовы макроса javascript) все еще запущены на JVM. Макрос перезаписывает код Scala -looking внутри него на соответствующий JavaScript AST (или непосредственно в виде строки кода). Это означает, что, когда JVM выполняет там код, программа генерирует (во время выполнения) строку JavaScript AST/. Это полезно для генерации фрагментов кода, которые будут отправляться клиенту динамически.

Таким образом, главный критерий решения:

  • Если вы хотите написать клиентскую часть своего веб-приложения в качестве приложения Scala, используйте Scala.js
  • Если вы хотите генерировать фрагменты кода JavaScript со стороны сервера, написанные в Scala, используйте JScala

Более подробное сравнение этих двух инструментов доступно на http://www.sebnozzi.com/84/scala-to-javascript-comparison/

Ответ 2

js- scala является библиотекой Scala для генерации кода JavaScript, а scala.js - это бэкэнд JavaScript для компилятора Scala.

scala.js компилирует ваш код Scala в код JavaScript. Обычно обычный компилятор Scala принимает ваши исходные файлы Scala и создает код JavaScript вместо JTM-байт-кода.

.scala | === scalac === > |.js

С другой стороны, js- scala представляет собой библиотеку Scala, предоставляющую составные генераторы кода JavaScript. Вы можете использовать их в своих обычных программах Scala для написания генераторов программ JavaScript. Ваша программа Scala скомпилирована в байт-код JVM с использованием обычного компилятора Scala, и выполнение этой программы создает программу JavaScript.

.scala | === scalac === > |.class | === java === > |.js

Более подробную информацию я рекомендую для чтения в блоге одним из авторов js- scala http://julien.richard-foy.fr/blog/2013/12/19/js-scala-and-scala-js/