Scala – JavaScript class conversion example

Tags: ,

Scala – JavaScript class conversion example

Scala – JavaScript class conversion example

Scala is a great language. We are lucky to use it not only for back-end development but also in front-end. That’s cool, but it’s an illusion that one can create the whole front-end by solely using Scala.js. Of course, it’s possible. And one could develop the great application. I won’t argue about that. But my point is: we should use the strong parts of Scala in conjunction with strong parts of JavaScript. We all love Scala for many things. If we need to realize business logic, we will choose Scala.js . But what about view rendering, appearance, visual effects, styles,

Continue Reading

Scala Futures, Traverse and Side Effects

Scala Futures, Traverse and Side Effects

A month ago I was developing some virtual file system. My code had should read a config file, take a path and create all folders from that path. I had an asynchronous API for that purpose. My code was like this: val list = ( “/a”, “/a/b”, “/a/b/c”, “/a/b/c/d”, “/a/b/c/d/e” ) def isDirExists(str: String): Future[Boolean] = ??? def createDir(str: String): Future[Unit] = ??? Future.traverse(list){dir => isDirExists(dir).flatMap{ isExists => if (isExists) Future.successful(()) else createDir(dir) } } The list consists of paths of folders to be sequentially created. The folder creation starts from the most upper folder. If it doesn’t exist it

Continue Reading

Scala.js With Monix Example

Scala.js With Monix Example

One of the annoying thing in front-end development is managing long calculations in a browser. JavaScript does things synchronously, and when you want to do something, that needs time for execution, JavaScript resists. Here is an example of such long calculation. At first, I shall demonstrate synchronous code, then asynchronous. Scala has the great library Monix, that works well with Scala.js. I have already told about Monix in some of my previous posts. Of cause, I’m going to use this library in my asynchronous example. My son goes to school. One time he was doing his math homework and he

Continue Reading

Let’s create a Slider. Again…

Let’s create a Slider. Again…

There have been three posts about creating a Slider with Scala.js already. The first post was about how to do it in principal. The second post was about the ScalaCSS library in general and how one could use it with our Slider in particular. The third post was about how to use a JSON object with our Slider. Now it’s time to compare Scala.js with its closest alternative: I mean TypeScript (a typed superset of JavaScript that compiles to plain JavaScript). It’s fun: the first version of this Slider was written in CoffeeScript. It took me about 3 hours. I

Continue Reading

Scala.js and unidirectional data flow 2

Scala.js and unidirectional data flow 2

Last time we talked about using Monix as a tool of creating unidirectional data flow in Scala.js applications. The tiny Dispatcher class was made for that purpose. We considered the Counter example, which demonstrated all the power of this approach. Today I intend to widen our horizons and to consider another example: more complex one: which will demonstrate not only usage of the Dispatcher but also usage of Sortable.js with React. But before that I want to add some new methods to the Dispatcher class. Here is the full code of the Dispatcher class: import monix.execution.Ack import monix.execution.Ack.Continue import monix.reactive.{Observable,

Continue Reading

Scala.js and unidirectional data flow

Scala.js and unidirectional data flow

During the last two years the one of the most popular subjects for discussion in the JavaScript society  is so-called “unidirectional data flow”. Those happy years, when we used JavaScript for organizing of some effect on the page or for loading some widget by Ajax, gone to the past. Today JavaScript is used for building client-side web applications. There are several frameworks for doing such things. I used React in my last projects. It’s a great library. It allows doing everything you want. Except unidirectional data flow. You have to use Flux or Redux for that purpose. But what about

Continue Reading

Designing facades in Scala.js

Designing facades in Scala.js

Scala.js builds a bridge from the Scala world to the JavaScript world. Today Scala developers can take all the magic of Scala with many powerful libraries and use it in front-end applications. But after passing the bridge our developer suddenly might find himself in very different environment. Does he know something about transition animation, or about event system on mobile devises? Fortunately JavaScript itself is ready to give a huge bulk of awesome libraries for all cases. All we need to do is to find an appropriate library and write a facade. You can find this in the Scala.js documentation: When

Continue Reading

Slider 2: a JavaScript object instead of case classes

Slider 2: a JavaScript object instead of case classes

Two weeks ago we talked about how to create a beautiful Slider in Scala.js Our Slider works well (See Demo). But there was one thing that worried me. We need to define a Slider property as a Scala case class. It’s not bad, if our Slider is a part of a single Scala/Scala.js application. But what if we need to install our Slider into some HTML page. In that situation we should think how to pass some JavaScript object into the Slider. At first sight this is a frightening problem. It turned out that it is not. All we need

Continue Reading

ScalaCSS. Is it time for using it?

ScalaCSS. Is it time for using it?

I decided to go further with my Slider and to find out whether my styles can be generated by Scala. First of all, I added ScalaCSS library and an extension for Scalajs-react to my dependencies: libraryDependencies += “com.github.japgolly.scalacss” %%% “core” % “0.5.1” libraryDependencies += “com.github.japgolly.scalacss” %%% “ext-react” % “0.5.1” ScalaCSS has two ways of making styles:  To make standalone stylesheets (like SASS or LESS)  To add css-styles directly to the page by a compiled javascript   Standalone stylesheets As it was written in the ScalaCSS manual: Produces static CSS for external consumption. Like SCSS and LESS. There is only one

Continue Reading

Let’s create a Slider

Let’s create a Slider

I have started to write code on Scala.js half a year ago and I can’t stop doing it. I should say that I love JavaScript and I wrote hundreds of thousands lines of code. But there is one thing that always frustrates me in JavaScript: It hasn’t many useful things that other languages have. You should use some or other framework (I used yui and jquery in the past). I used CoffeeScript a year ago. Today it’s time for Babel. Nobody wants writing plain JavaScript anymore! I choose Scala. See the Demo to this post. A Slider is a program

Continue Reading