Imba – a JavaScript alternative for increased developer productivity

I’m Sindre, CTO at Scrimba.com. We’re about to launch a major overhaul of Imba, the programming language we use for everything here at Scrimba. The language has been developed over many years, and it powers both the frontend and backend of Scrimba (100…


This content originally appeared on DEV Community and was authored by Sindre Aarsaether

I'm Sindre, CTO at Scrimba.com. We're about to launch a major overhaul of Imba, the programming language we use for everything here at Scrimba. The language has been developed over many years, and it powers both the frontend and backend of Scrimba (100K+ monthly users). Imba is not an academic exercise or a toy project. Check out https://imba.io for more details!

Since we've been flying under the radar for several years I thought I should post about it here now that we are approaching beta of this major update.

The main benefit of Imba is speed. Both in development and performance.

  • Imba's Memoized DOM approach is an order of magnitude faster than Virtual DOMs (Vue, React). See this article for a short introduction to the approach.
  • Imba's time-saving syntax with built-in tags and styles results in less typing and switching files
  • Imba works with node and the npm ecosystem, and integrates tightly with both js and typescript

Here are some of the features worth mentioning ?

Minimal syntax

Imba's syntax is minimal, beautiful, and packed with clever features. It combines logic, markup and styling in a powerful way. Less keystrokes, and less switching files means you'll be able to build things fast.

 "basics"

Runs on both server and client

Imba powers both the frontend and the backend of Scrimba.com, our learning platform with 100K+ monthly active users. On the frontend, Imba replaces e.g. Vue or React, and on the backend, it works with the Node ecosystem (e.g. npm).

 "server"

Integrated styling

Inspired by tailwind, Imba brings styles directly into your code. Styles can be scoped to files, components, and even parts of your tag trees. Style modifiers like @hover, @lg , @landscape and @dark can be used for extremely concise yet powerful styling.

 "styles"

Blazing fast, Zero config

Imba comes with a built-in bundler based on the blazing fast esbuild. Import stylesheets, images, typescript, html, workers and more without any configuration. Bundling is so fast that there is no difference between production and development mode - it all happens on-demand.

 "bundling"

When you run your app with the imba command it automatically bundles and compiles your imba code, along with typescript, css and many other file types. It provides automatic reloading of both the server and client.

Typing and tooling

The tooling is implemented as a typescript server plugin giving us great intellisense, diagnostics, and even cross-file refactorings that works with js/ts files in the same project. You can import types just like in typescript, and annotate variables, parameters and expressions. Like the language, the tooling is still in alpha, but improving every day.

 "types"

Get involved!

If you'd like to learn more about Imba, please join our Discord server. We also host community meetings (watch recordings of here).

Imba has been under active development for 6+ years now, and activity is only ramping up. We're looking for contributors who would like to help improve documentation and the ecosystem around Imba.

We really think Imba will add a lot of value in an already crowded space of languages and frameworks. if you're the type who loves to tinker with new things, I'd wholeheartedly recommend you to check it out :)


This content originally appeared on DEV Community and was authored by Sindre Aarsaether


Print Share Comment Cite Upload Translate Updates
APA

Sindre Aarsaether | Sciencx (2021-06-10T13:39:46+00:00) Imba – a JavaScript alternative for increased developer productivity. Retrieved from https://www.scien.cx/2021/06/10/imba-a-javascript-alternative-for-increased-developer-productivity/

MLA
" » Imba – a JavaScript alternative for increased developer productivity." Sindre Aarsaether | Sciencx - Thursday June 10, 2021, https://www.scien.cx/2021/06/10/imba-a-javascript-alternative-for-increased-developer-productivity/
HARVARD
Sindre Aarsaether | Sciencx Thursday June 10, 2021 » Imba – a JavaScript alternative for increased developer productivity., viewed ,<https://www.scien.cx/2021/06/10/imba-a-javascript-alternative-for-increased-developer-productivity/>
VANCOUVER
Sindre Aarsaether | Sciencx - » Imba – a JavaScript alternative for increased developer productivity. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/06/10/imba-a-javascript-alternative-for-increased-developer-productivity/
CHICAGO
" » Imba – a JavaScript alternative for increased developer productivity." Sindre Aarsaether | Sciencx - Accessed . https://www.scien.cx/2021/06/10/imba-a-javascript-alternative-for-increased-developer-productivity/
IEEE
" » Imba – a JavaScript alternative for increased developer productivity." Sindre Aarsaether | Sciencx [Online]. Available: https://www.scien.cx/2021/06/10/imba-a-javascript-alternative-for-increased-developer-productivity/. [Accessed: ]
rf:citation
» Imba – a JavaScript alternative for increased developer productivity | Sindre Aarsaether | Sciencx | https://www.scien.cx/2021/06/10/imba-a-javascript-alternative-for-increased-developer-productivity/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.