GithubHelp home page GithubHelp logo

zoosky / akka-http-with-scalajs-example Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vmunier/akka-http-scalajs.g8

0.0 2.0 0.0 251 KB

Example application showing how you can integrate Akka HTTP with Scala.js.

License: Apache License 2.0

Scala 73.60% Shell 17.06% HTML 9.34%

akka-http-with-scalajs-example's Introduction

Akka HTTP with Scala.js

License Deploy to Heroku

This is a simple example application showing how you can integrate an Akka HTTP project with a Scala.js project.

The application contains three directories:

  • server Akka HTTP application (server side)
  • client Scala.js application (client side)
  • shared Scala code that you want to share between the server and the client

Run the application

$ sbt
> ~re-start
$ open http://0.0.0.0:8080

Features

The application uses the sbt-web-scalajs sbt plugin and the scalajs-scripts library.

  • compile, run, re-start trigger the Scala.js fastOptJS command
  • ~compile, ~run, ~re-start continuous compilation is also available
  • Production archives (e.g. using assembly, universal:packageBin) contain the optimised javascript
  • Source maps
    • Open your browser dev tool to set breakpoints or to see the guilty line of code when an exception is thrown
    • Source Maps is disabled in production by default to prevent your users from seeing the source files. But it can easily be enabled in production too by setting emitSourceMaps in fullOptJS := true in the Scala.js projects.

Cleaning

The root project aggregates all the other projects by default. Use this root project, called akka-http-with-scalajs-example, to clean all the projects at once.

$ sbt
> akka-http-with-scalajs-example/clean

IDE integration

Eclipse

  1. $ sbt "eclipse with-source=true"
  2. Inside Eclipse, File/Import/General/Existing project..., choose the root folder. Uncheck the first and the last checkboxes to only import client, server and one shared, click Finish. Alt text

IntelliJ

In IntelliJ, open Project wizard, select Import Project, choose the root folder and click OK. Select Import project from external model option, choose SBT project and click Next. Select additional import options and click Finish. Make sure you use the IntelliJ Scala Plugin v1.3.3 or higher. There are known issues with prior versions of the plugin.

Classpath during development

The assets (js files, sourcemaps, etc.) are added to the classpath during development thanks to the following lines:

WebKeys.packagePrefix in Assets := "public/",
managedClasspath in Runtime += (packageBin in Assets).value

Note that packageBin in Assets also executes any tasks appended to pipelineStages, e.g. gzip. You may want to avoid executing tasks under pipelineStages during development, because it could take long to execute.

In that case, in order to still have access to the assets under WebKeys.packagePrefix in Assets during development, you can use the following code instead:

lazy val server = (project in file("server")).settings(
...
WebKeys.packagePrefix in Assets := "public/",
WebKeys.exportedMappings in Assets ++= (for ((file, path) <- (mappings in Assets).value)
  yield file -> ((WebKeys.packagePrefix in Assets).value + path)),
...
)

akka-http-with-scalajs-example's People

Contributors

vmunier avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.