Saltar al contenido principal

Agosto 2016: Nuevas Apps

· 3 lectura mínima

Aquí están las nuevas aplicaciones de Electron que fueron añadidas al sitio en agosto.


El sitio se actualiza con nuevas aplicaciones y reuniones a través de pull requests de la comunidad. Puede ver el repositorio para recibir notificaciones de cosas nuevas o si no está interesado en todos los cambios del sitio suscríbete al feed RSS del blog.

Si has hecho una aplicación Electron u organizar una reunión, haz un pull request para añadirlo al sitio y hará el siguiente resumen.

Nuevas aplicaciones

Código RPGifyAplicación de codificación de estilo RPG
PamFaxUna aplicación multiplataforma para enviar y recibir faxes
BlankUpEditor Markdown con claridad +1
RamboxAplicación libre y de código abierto, que combina las aplicaciones web más comunes de mensajería y correo electrónico
GordieLa mejor aplicación para tus colecciones de tarjetas
Ionic CreatorConstruye increíbles aplicaciones móviles, más rápido
TwitchAlertsMantén a tus espectadores contentos con hermosas alertas y notificaciones
MuseeksUn reproductor de música simple, limpio y multiplataforma
SeaPigUn convertidor de markdown a html
GrupMeAplicación no oficial de GroupMe
MoeditorTu editor de markdown para todos los fines
SoundnodeSoundnode App es la nube de Soundcloud para escritorio
QMUI WebQMUI Web Desktop es una aplicación para administrar proyectos basados en QMUI Web Framework
SvgsusOrganiza, limpia y transforma tus SVGs
RammeApp de escritorio de Instagrama no oficial
InsomniaCliente API REST
CorreoUna aplicación Gmail para Windows, macOS y Linux de barra de menús
KongDashCliente de escritorio para API de admin de Kong
Translation EditorEditor de archivos de traducción para mensajes INTL ICU (ver formatjsio)
5EClient5EPlay CSGO Client
Theme JuiceDesarrollo local de WordPress facilitado

Servicio de accesibilidad

· 2 lectura mínima

Hacer aplicaciones accesibles es importante y estamos encantados de presentar nuevas funcionalidades a Devtron y Spectron que brindan a los desarrolladores la oportunidad de mejorar sus aplicaciones para todo el mundo.


Los problemas de accesibilidad en las aplicaciones de Electrón son similares a los de los sitios web porque, en última instancia, son HTML. Sin embargo, con las aplicaciones de Electron, no puede usar los recursos en línea para las auditorías de accesibilidad ya que su aplicación no tiene una URL para apuntar al auditor.

Estas nuevas funciones traen esas herramientas de auditoría a tu App Electron. Estas nuevas características traen esas herramientas de auditoría a su aplicación Electron. Siga leyendo para obtener un resumen de las herramientas o revise nuestra documentación de accesibilidad para obtener más información.

Spectron

En el framework de testing Spectron, puedes hacer una auditoria de cada ventana y <webview> tag en tu aplicación. Por ejemplo:

app.client.auditAccessibility().then(function (audit) {
if (audit.failed) {
console.error(audit.message);
}
});

Puede leer más acerca de esta herramienta en la documentación de Spectron.

Devtron

En Devtron existe una nueva ventana de accesibilidad, la cual te permite auditar una página en tu aplicación, ordenar y filtrar los resultados.

Capturas de devtron

Ambas herramientas están utilizando la biblioteca Herramientas de desarrollo de accesibilidad creada por Google para Chrome. Usted puede obtener más información sobre las reglas de auditoría de accesibilidad que esta biblioteca utiliza en la wiki del repositorio.

Si usted sabe de otras herramientas de accesibilidad para Electron, añadelas a la documentation de accesibilidad con una pull request.

npm install electron -g

· 3 lectura mínima

As of Electron version 1.3.1, you can npm install electron --save-dev to install the latest precompiled version of Electron in your app.


npm install electron -g

El binario precombinado de Electron

Si alguna vez has trabajado en una aplicación Electron, probablemente te hayas encontrado con el paquete Npm electron-prebuilt. Este paquete es una parte indispensable de casi todos los proyectos de Electron. Cuando se instala, detecta su sistema operativo y descarga un binario precompilador que está compilado para funcionar en la arquitectura de tu sistema.

Nuevo estado

The Electron installation process was often a stumbling block for new developers. Many brave people tried to get started developing an Electron by app by running npm install electron instead of npm install electron-prebuilt, only to discover (often after much confusion) that it was not the electron they were looking for.

This was because there was an existing electron project on npm, created before GitHub's Electron project existed. To help make Electron development easier and more intuitive for new developers, we reached out to the owner of the existing electron npm package to ask if he'd be willing to let us use the name. Luckily he was a fan of our project, and agreed to help us repurpose the name.

Prebuilt lives on

As of version 1.3.1, we have begun publishing electron and electron-prebuilt packages to npm in tandem. The two packages are identical. We chose to continue publishing the package under both names for a while so as not to inconvenience the thousands of developers who are currently using electron-prebuilt in their projects. We recommend updating your package.json files to use the new electron dependency, but we will continue releasing new versions of electron-prebuilt until the end of 2016.

The electron-userland/electron-prebuilt repository will remain the canonical home of the electron npm package.

Many thanks

We owe a special thanks to @mafintosh, @maxogden, and many other contributors for creating and maintaining electron-prebuilt, and for their tireless service to the JavaScript, Node.js, and Electron communities.

And thanks to @logicalparadox for allowing us to take over the electron package on npm.

. Desbloquear teléfono

We've worked with the community to update popular packages that are affected by this change. Packages like electron-packager, electron-rebuild, and electron-builder have already been updated to work with the new name while continuing to support the old name.

If you encounter any problems installing this new package, please let us know by opening an issue on the electron-userland/electron-prebuilt repository.

For any other issues with Electron, please use the electron/electron repository.

Electron Internals: Usando Node como una librería

· 4 lectura mínima

This is the second post in an ongoing series explaining the internals of Electron. Echa un vistazo a la primera publicación sobre integración de bucles de eventos si aún no lo has hecho.

Most people use Node for server-side applications, but because of Node's rich API set and thriving community, it is also a great fit for an embedded library. This post explains how Node is used as a library in Electron.


Sistema de compilación

Tanto Node como Electron usan GYP como sus sistemas de compilación. If you want to embed Node inside your app, you have to use it as your build system too.

New to GYP? ¿Nuevo en GYP? Leer esta guía antes de continuar en esta publicación.

Node's flags

El nodo . yp archivo en el directorio de código fuente de Node describe cómo se construye el Node , junto con un montón de GYP variables que controlan qué partes de Node están habilitadas y si abrir ciertas configuraciones.

To change the build flags, you need to set the variables in the .gypi file of your project. The configure script in Node can generate some common configurations for you, for example running ./configure --shared will generate a config.gypi with variables instructing Node to be built as a shared library.

Electron does not use the configure script since it has its own build scripts. Las configuraciones para Node se definen en el archivo common.gypi en el directorio raíz del código fuente de Electron.

In Electron, Node is being linked as a shared library by setting the GYP variable node_shared to true, so Node's build type will be changed from executable to shared_library, and the source code containing the Node's main entry point will not be compiled.

Since Electron uses the V8 library shipped with Chromium, the V8 library included in Node's source code is not used. This is done by setting both node_use_v8_platform and node_use_bundled_v8 to false.

Shared library or static library

When linking with Node, there are two options: you can either build Node as a static library and include it in the final executable, or you can build it as a shared library and ship it alongside the final executable.

In Electron, Node was built as a static library for a long time. This made the build simple, enabled the best compiler optimizations, and allowed Electron to be distributed without an extra node.dll file.

Sin embargo, esto cambió después de que Chrome cambiara para usar BoringSSL. BoringSSL es una bifurcación de OpenSSL que elimina varias API no utilizadas y cambia muchas interfaces existentes. Because Node still uses OpenSSL, the compiler would generate numerous linking errors due to conflicting symbols if they were linked together.

Electron no pudo usar BoringSSL en Node, o usar OpenSSL en Chromium, así que la única opción era cambiar a construir Node como una biblioteca compartida, y ocultar los símbolos BoringSSL y OpenSSL en los componentes de cada uno.

This change brought Electron some positive side effects. Before this change, you could not rename the executable file of Electron on Windows if you used native modules because the name of the executable was hard coded in the import library. After Node was built as a shared library, this limitation was gone because all native modules were linked to node.dll, whose name didn't need to be changed.

Supporting native modules

Los módulos nativos en Node funcionan definiendo una función de entrada para la carga de Node, y luego buscando los símbolos de V8 y libuv desde Node. This is a bit troublesome for embedders because by default the symbols of V8 and libuv are hidden when building Node as a library and native modules will fail to load because they cannot find the symbols.

So in order to make native modules work, the V8 and libuv symbols were exposed in Electron. For V8 this is done by forcing all symbols in Chromium's configuration file to be exposed. Para libuv, se consigue estableciendo la definición BUILDING_UV_SHARED=1.

Starting Node in your app

After all the work of building and linking with Node, the final step is to run Node in your app.

Node doesn't provide many public APIs for embedding itself into other apps. Generalmente, puedes simplemente llamar a node::Start y node::Init para iniciar una nueva instancia de Node. However, if you are building a complex app based on Node, you have to use APIs like node::CreateEnvironment to precisely control every step.

In Electron, Node is started in two modes: the standalone mode that runs in the main process, which is similar to official Node binaries, and the embedded mode which inserts Node APIs into web pages. The details of this will be explained in a future post.

Julio 2016: Nuevas Apps y Encuentros

· 2 lectura mínima

We're starting a monthly roundup to highlight activity in the Electron community. Each roundup will feature things like new apps, upcoming meetups, tools, videos, etc.


This site is updated with new apps and meetups through pull requests from the community. Puede ver el repositorio para recibir notificaciones de cosas nuevas o si no está interesado en todos los cambios del sitio suscríbete al feed RSS del blog.

Si has hecho una aplicación Electron u organizar una reunión, haz un pull request para añadirlo al sitio y hará el siguiente resumen.

Nuevas aplicaciones

DemioA Webinar platform built for inbound sales and marketing
ElectorrentA remote client app for uTorrent server
PhoneGapThe open source framework that gets you building amazing mobile apps using web technology
WordMarkA lightweight blog publishing editor for Markdown writers
UbAuthApp to help developers create access tokens for Uber applications with OAuth 2.0
HyperTermHTML/JS/CSS terminal
MarpMarkdown presentation writer
Glyphr StudioA free, web based font designer, focusing on font design for hobbyists
BitCryptA simple file encryption application for Windows Encrypt your bits
TrymBeautiful small app for macOS to help you view, optimize and convert SVG icons
BookerText editor with the power of Markdown
PhonePresenterThe smartest presentation clicker
YoutThe new way to watch your playlists from YouTube on desktop

New Meetups

Electron Open Source Desktop FrameworkLondon, UK

Electron Internals: Integración de bucle de mensaje

· 3 lectura mínima

This is the first post of a series that explains the internals of Electron. This post introduces how Node's event loop is integrated with Chromium in Electron.


Ha habido muchos intentos de usar Node para programación GUI, como node-gui para enlaces GTK+ y node-qt para enlaces QT. But none of them work in production because GUI toolkits have their own message loops while Node uses libuv for its own event loop, and the main thread can only run one loop at the same time. So the common trick to run GUI message loop in Node is to pump the message loop in a timer with very small interval, which makes GUI interface response slow and occupies lots of CPU resources.

During the development of Electron we met the same problem, though in a reversed way: we had to integrate Node's event loop into Chromium's message loop.

The main process and renderer process

Before we dive into the details of message loop integration, I'll first explain the multi-process architecture of Chromium.

En Electron hay dos tipos de procesos: el proceso principal y el proceso de renderizador (esto en realidad es extremadamente simplificado, para una vista completa por favor vea Archivación multiproceso). The main process is responsible for GUI work like creating windows, while the renderer process only deals with running and rendering web pages.

Electron allows using JavaScript to control both the main process and renderer process, which means we have to integrate Node into both processes.

Replacing Chromium's message loop with libuv

My first try was reimplementing Chromium's message loop with libuv.

It was easy for the renderer process, since its message loop only listened to file descriptors and timers, and I only needed to implement the interface with libuv.

However it was significantly more difficult for the main process. Each platform has its own kind of GUI message loops. macOS Chromium uses NSRunLoop, whereas Linux uses glib. I tried lots of hacks to extract the underlying file descriptors out of the native GUI message loops, and then fed them to libuv for iteration, but I still met edge cases that did not work.

So finally I added a timer to poll the GUI message loop in a small interval. As a result the process took a constant CPU usage, and certain operations had long delays.

Polling Node's event loop in a separate thread

As libuv matured, it was then possible to take another approach.

The concept of backend fd was introduced into libuv, which is a file descriptor (or handle) that libuv polls for its event loop. So by polling the backend fd it is possible to get notified when there is a new event in libuv.

So in Electron I created a separate thread to poll the backend fd, and since I was using the system calls for polling instead of libuv APIs, it was thread safe. And whenever there was a new event in libuv's event loop, a message would be posted to Chromium's message loop, and the events of libuv would then be processed in the main thread.

In this way I avoided patching Chromium and Node, and the same code was used in both the main and renderer processes.

The code

You can find the implemention of the message loop integration in the node_bindings files under electron/atom/common/. It can be easily reused for projects that want to integrate Node.

Actualización: Implementación movida a electron/shell/common/node_bindings.cc.

Podcasts de Electron

· Lectura de un minuto

¿Buscas comenzar en el mundo de Electron? Se han publicado dos nuevos podcasts que ofrecen un gran vistazo a qué es, por qué se construyó y cómo se está utilizando.


Ya disponible:

Hanselminutes: Creando aplicaciones multiplataforma de Electron

¿Es Electron "sólo Chrome en una ventana" o es mucho más? Jessica pone a Scott en el camino correcto y explica exactamente donde encaja la plataforma de Electron en su mundo como desarrollador.


JavaScript Air: Electron Apps

Electron is becoming more and more of a relevant and popular way of building multi-platform desktop apps with web technologies. Let's get a dive into this awesome tech and see how we can use it to enhance our own experience and our user's experience on the desktop.


If you're looking for an introduction to Electron, give the first a listen. The second goes into more detail about building apps with great tips from Nylas's Evan Morikawa.

We are currently working on two more podcasts that should come out next month, keep an eye on the @ElectronJS Twitter account for updates.

Electron 1.0

· 4 lectura mínima

Durante los últimos dos años, Electron ha ayudado a los desarrolladores a construir aplicaciones multiplataforma de escritorio usando HTML, CSS y JavaScript. Ahora estamos encantados de compartir un hito importante para nuestro framework y para la comunidad que lo creó. La versión de Electron 1.0 ya está disponible en electronjs.org.


Electron 1.0

Electron 1.0 representa un hito importante en la estabilidad y madurez de la API. Esta versión te permite construir aplicaciones que actúen y se sientan verdaderamente nativas en Windows, Mac y Linux. Construir aplicaciones de Electron es más fácil que nunca con nueva documentación, nuevas herramientas y una nueva aplicación para guiarlo a través de las API de Electron.

Si estás listo para construir tu primera aplicación Electron , aquí tienes una guía de inicio rápido para ayudarte a empezar.

Estaremos encantados de ver tus creaciones con Electron.

Trayectoria de Electron

Lanzamos Electron cuando lanzamos Atom hace poco más de dos años. Electron, entonces conocido como Atom Shell, era el framework sobre el que habíamos construido Atom. En esos días, Atom fue la fuerza motriz detrás de las características y funcionalidades que Electron proporcionaba, bajo la presión de lograr el lanzamiento inicial de Atom.

Ahora conducir Electron es una creciente comunidad de desarrolladores y empresas que construyen todo desde correo electrónico, chat, y aplicaciones Git a herramientas de análisis SQL, clientes torrent, y robots.

En estos últimos dos años hemos visto tanto empresas como proyectos de código abierto elegir Electron como la base de sus aplicaciones. Justamente el año pasado, Electron ha sido descargado por más de 1.2 millones de veces. Da una visita a algunas de las increíbles aplicaciones de Electron y añade la tuya si no está ahí.

Descarga Electron

Demos de la API de Electron

Junto con el lanzamiento de la versión 1.0, estamos lanzando una nueva aplicación para ayudarte a explorar las API de Electron y aprender más sobre cómo hacer que tu aplicación de Electron se sienta nativa. La aplicación Electron API Demos contiene fragmentos de código para ayudar a comenzar su aplicación y consejos sobre el uso efectivo de las API de Electron.

Demos de la API de Electron

Devtron

También hemos añadido una nueva extensión para ayudarte a depurar tus aplicaciones de Electron. Devtron es una extensión de código abierto a las Herramientas para desarrolladores de Chrome diseñadas para ayudarte a inspeccionar, debug, y solucione problemas a su aplicación Electron.

Devtron

Características

  • Require graph que te ayuda a visualizar las dependencias internas y externas de las bibliotecas de tu aplicación tanto en los procesos principales como en los procesos de renderizado
  • IPC monitor que rastrea y muestra los mensajes enviados y recibidos entre los procesos de tu aplicación
  • Event inspector que muestra los eventos y los escuchadores que están registrados en tu aplicación en las API principales de Electron, como la ventana, la aplicación y los procesos
  • App Linter que verifica tus aplicaciones en busca de errores comunes y funcionalidades faltantes

Spectron

Finalmente, lanzamos una nueva versión de Spectron, el framework de pruebas de integración para aplicaciones Electron.

Spectron

Spectron 3.0 cuenta con un soporte completo para toda la API de Electron, lo que te permite escribir pruebas más rápidamente para verificar el comportamiento de tu aplicación en diferentes escenarios y entornos. Spectron se basa en ChromeDriver y WebDriverIO por lo que también tiene APIs completas para la navegación de la página, entrada y ejecución de JavaScript.

Comunidad

Electron 1.0 es el resultado de un esfuerzo de la comunidad realizado por cientos de desarrolladores. Además de la estructura principal, se han lanzado cientos de bibliotecas y herramientas para facilitar la construcción, empaquetado y despliegue de aplicaciones de Electron.

Ahora hay una nueva página de comunidad que muestra muchas de las increíbles herramientas de Electron , aplicaciones, bibliotecas y frameworks en desarrollo. También puede revisar Electron y Electron Userland organizaciones para ver algunos de estos fantásticos proyectos.

¿Eres nuevo en Electron? Mira el video de introducción de Electron 1.0:

Novedades en Electron 0.37

· 5 lectura mínima

Electron 0.37 fue publicado recientemente e incluye una gran actualización de Chrome 47 a Chrome 49, además de algunas nuevas APIs principales. Este último lanzamiento proporciona todas las nuevas características incluidas en Chrome 48 y Chrome 49. Esto incluye las propiedades personalizadas de CSS, soporte incrementado de ES6, mejoras en KeyboardEvent, mejoras en Promise y otras nuevas características disponibles en tu aplicación de Electron.


What's New

Propiedades personalizadas de CSS

Si anteriormente has utilizado lenguajes procesados previamente como Sass y Less, es probablemente que estés familiarizado con las variables, que te permiten definir valores reutilizables en cosas como esquemas de color y diseños. Las variables ayudan a mantener las hojas de estilo SECAS y más fáciles de mantener.

Las propiedades personalizadas de CSS son similares a las variables previamente procesadas en el sentido de que son reutilizables, pero también tienen una cualidad única que las hace más poderosas y flexibles: estas pueden ser manipuladas con JavaScript. Esta sutil pero poderosa característica permite realizar cambios dinámicos a las interfaces visuales, mientras estas se benefician de la aceleración por hardware de CSS y la reducción de código duplicado entre el código de la interfaz y las hojas de estilo.

Para más información sobre las propiedades personalizadas de CSS, lea el artículo de MDN y la demostración de Google Chrome.

Variables de CSS en acción

Veamos un ejemplo de variable simple que puede modificarse sobre la marcha en tu app.

:root {
--awesome-color: #a5ecfa;
}

body {
background-color: var(--awesome-color);
}

El valor de la variable puede ser recuperado y modificado directamente en JavaScript:

// Obtener el valor de la variable ' #A5ECFA'
let color = window
.getComputedStyle(document.body)
.getPropertyValue('--awesome-color');

// Establece el valor de la variable a 'orange'
document.body.style.setProperty('--awesome-color', 'orange');

Los valores de las variables también pueden ser editadas desde la sección de Estilos en las herramientas de desarrollo para una retroalimentación y cambios rápidos:

Propiedades CSS en la pestaña Estilos

Propiedad KeyboardEvent.code

Chrome 48 añadió la nueva propiedad code, disponible en los eventos KeyboardEvent, que representará la tecla física presionada, independientemente de la distribución del teclado del sistema operativo.

Esto debería hacer que la implementación de atajos de teclado personalizados en tu aplicación Electron sea más precisa y consistente en diferentes máquinas y configuraciones.

window.addEventListener('keydown', function (event) {
console.log(`Has pulsado ${event.code}.`);
});

Consulta este ejemplo para verlo en acción.

Eventos de rechazo de promesas (Promise Rejection Events)

Chrome 49 añadió dos nuevos eventos a window que te permiten ser notificado cuando no se controla una promesa rechazada.

window.addEventListener('unhandledrejection', function (event) {
console.log('Promesa rechazada sin controlar', event.promise, event.reason);
});

window.addEventListener('rejectionhandled', function (event) {
console.log('Promesa rechazada controlada', event.promise, event.reason);
});

Consulta este ejemplo para verlo en acción.

Actualizaciones de ES2015 en V8

La versión de V8 incorpora a Electron un 91% de ES2015. Aquí tienes algunas adiciones interesantes que puedes usar directamente, sin flags ni precompiladores:

Parámetros por defecto

function multiply(x, y = 1) {
return x * y;
}

multiply(5); // 5

Asignación de desestructuración

Chrome 49 añadió asignación por desestructuración para facilitar la asignación de variables y parámetros de funciones.

Esto hace que las asignaciones de Electron sean más limpias y compactas ahora:

Para importar el Browser
const { app, BrowserWindow, Menu } = require('electron');
Para importar el Renderizador
const { dialog, Tray } = require('electron').remote;
Otros ejemplos
// Destructuring an array and skipping the second element
const [first, , last] = findAll();

// Destructuring function parameters
function whois({ displayName: displayName, fullName: { firstName: name } }) {
console.log(`${displayName} is ${name}`);
}

let user = {
displayName: 'jdoe',
fullName: {
firstName: 'John',
lastName: 'Doe',
},
};
whois(user); // "jdoe is John"

// Destructuring an object
let { name, avatar } = getUser();

Nuevas APIs de Electron

A continuación, se muestran algunas de las nuevas APIs de Electron. Puedes ver cada nueva API en las notas de la versión de las versiones de Electron.

Eventos show y hide en BrowserWindow

Estos eventos se disparan cuando la ventana (window) se muestra o se oculta.

const { BrowserWindow } = require('electron');

let window = new BrowserWindow({ width: 500, height: 500 });
window.on('show', function () {
console.log('Window was shown');
});
window.on('hide', function () {
console.log('Window was hidden');
});

platform-theme-changed en app para OS X

Este evento se dispara cuando el Modo Oscuro del sistema cambie.

const { app } = require('electron');

app.on('platform-theme-changed', function () {
console.log(`Ha cambiado el tema. ¿En modo oscuro? ${app.isDarkMode()}`);
});

app.isDarkMode() para OS X

Este método devuelve true si el sistema está en Modo Oscuro y false en caso contrario.

Eventos scroll-touch-begin y scroll-touch-end en BrowserWindow para OS X

Esos eventos se disparan cuando empieza o termina un evento de la rueda de scroll.

const { BrowserWindow } = require('electron');

let window = new BrowserWindow({ width: 500, height: 500 });
window.on('scroll-touch-begin', function () {
console.log('Inicio de scroll táctil');
});
window.on('scroll-touch-end', function () {
console.log('Fin de scroll táctil');
});

Use V8 and Chromium Features in Electron

· 2 lectura mínima

Building an Electron application means you only need to create one codebase and design for one browser, which is pretty handy. But because Electron stays up to date with Node.js and Chromium as they release, you also get to make use of the great features they ship with. In some cases this eliminates dependencies you might have previously needed to include in a web app.


There are many features and we'll cover some here as examples, but if you're interested in learning about all features you can keep an eye on the Google Chromium blog and Node.js changelogs. You can see what versions of Node.js, Chromium and V8 Electron is using at electronjs.org/#electron-versions.

ES6 Support through V8

Electron combines Chromium's rendering library with Node.js. The two share the same JavaScript engine, V8. Many ECMAScript 2015 (ES6) features are already built into V8 which means you can use them in your Electron application without any compilers.

Below are a few examples but you can also get classes (in strict mode), block scoping, promises, typed arrays and more. Check out this list for more information on ES6 features in V8.

Arrow Functions

findTime () => {
console.log(new Date())
}

String Interpolation

var octocat = 'Mona Lisa';
console.log(`The octocat's name is ${octocat}`);

New Target

Octocat() => {
if (!new.target) throw "Not new";
console.log("New Octocat");
}

// Throws
Octocat();
// Logs
new Octocat();

Array Includes

// Returns true
[1, 2].includes(2);

Rest Parameters

// Represent indefinite number of arguments as an array
(o, c, ...args) => {
console.log(args.length);
};

Chromium Features

Thanks to all the hard work Google and contributors put into Chromium, when you build Electron apps you can also use cool things like (but not limited to):

Follow along with the Google Chromium blog to learn about features as new versions ship and again, you can check the version of Chromium that Electron uses here.

What are you excited about?

Tweet to us @ElectronJS with your favorite features built into V8 or Chromium.