summaryrefslogtreecommitdiff
path: root/intro.md
blob: ada6fb736f653468de9db14631ec0a610ed49009 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Hands-On Scala.js

	- Some Scala experience
	- Some Javascript/Web experience

	Intro to Scala.js
		What
		Why
		Where

	Tutorial
		A HTML5 Canvas Application
			Accessing DOM APIs
				Using js.Dynamic
				Using scala-js-dom for type-safety

			Input, Output
			Publishing
			Looking through the generated code

		Interactive Web Pages
			Managing HTML using the DOM
			Managing HTML using Scalatags
			Wiring up DOM events and interactions
			Publishing

		Building Cross-platform Libraries
			Shared code organization
			Shared tests using uTest
			Publishing 

		Client-Server Integration
			Hello World client/server project
				Serving the client javascript from the server

			Sharing code
				Using shared libraries
				Writing shared application logic

			Ajax calls
				Using the DOM APIs
				Using uPickle for serialization
				Using Autowire for routing

			Deployment

	Reference
		Javascript Interop
			Calling Javascript from Scala.js
			Writing your own FFI facades
			Calling Scala.js from Javascript
			Mapping of Types
		
		Library Dependencies

		Differences from Scala/JVM

		Compilation Pipeline
			Optimization Phases



Intro to Intro to Scala.js

	Scala.js is a compiler that compiles Scala source code to equivalent Javascript code. That lets you write Scala code that you can run in a web browser, or other environments (Chrome plugins, Node.js, etc.) where Javascript is supported.

	This book is targeted at people who have some experience in both Scala and Javascript. You do not need to be an expert in both, but I will skim over basic concepts in both languages to cut to the Scala.js specific points.

	Scala.js on its own allows you to develop web applications with the safety and toolability that comes with a statically typed language. 
	
	- Typo-safety due to its compiler which catches many silly errors before the code is run
	- In-editor support for autocomplete, error-highlighting, refactors, and intelligent navigation
	- Very small compiled executables, in the 170-400kb range
	- Source-maps for ease of debugging

	In general, the development experience is on