Ricerca…


introduzione

ES6, ECMAScript 6 o ES2015 è l'ultima specifica per JavaScript che introduce dello zucchero sintattico nella lingua. È un grande aggiornamento del linguaggio e introduce molte nuove funzionalità

Maggiori dettagli su Node e ES6 possono essere trovati sul loro sito https://nodejs.org/en/docs/es6/

Nodo ES6 Supporto e creazione di un progetto con Babel

L'intera specifica ES6 non è stata ancora implementata nella sua interezza, quindi sarà possibile utilizzare solo alcune delle nuove funzionalità. Puoi vedere un elenco delle funzionalità ES6 attualmente supportate su http://node.green/

Dal momento che NodeJS v6 ha avuto un supporto abbastanza buono. Pertanto, se si utilizza NodeJS v6 o versione successiva, è possibile utilizzare ES6. Tuttavia, potresti anche voler utilizzare alcune delle funzioni inedite e alcune da oltre. Per questo dovrai usare un transpiler

È possibile eseguire un transpiler in fase di esecuzione e creare, utilizzare tutte le funzionalità di ES6 e altro ancora. Il traspiatore più popolare per JavaScript si chiama Babel

Babel ti consente di utilizzare tutte le funzionalità delle specifiche ES6 e alcune funzionalità aggiuntive non specificate con "stage-0", ad esempio import thing from 'thing invece di var thing = require('thing')

Se volessimo creare un progetto in cui usassimo funzionalità 'stage-0' come l'importazione, avremmo bisogno di aggiungere Babel come traspiatore. Vedrai i progetti usando react e Vue e altri pattern basati su CommonJS implementeranno lo stage-0 abbastanza spesso.

crea un nuovo progetto di nodo

mkdir my-es6-app
cd my-es6-app
npm init

Installa babel sul preset ES6 e sullo stage 0

npm install --save-dev babel-preset-es2015 babel-preset-stage-2 babel-cli babel-register

Crea un nuovo file chiamato server.js e aggiungi un server HTTP di base.

import http from 'http'

http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'})
  res.end('Hello World\n')
}).listen(3000, '127.0.0.1')

console.log('Server running at http://127.0.0.1:3000/')

Nota che usiamo un import http from 'http' questa è una funzione di stage-0 e se funziona significa che abbiamo il transpiler che funziona correttamente.

Se si esegue node server.js non riuscirà a sapere come gestire l'importazione.

Creare un file .babelrc nella directory principale della directory e aggiungere le seguenti impostazioni

{
  "presets": ["es2015", "stage-2"],
  "plugins": []
}

ora puoi eseguire il server con il node src/index.js --exec babel-node

Completare l'operazione non è una buona idea eseguire un transpiler in fase di esecuzione su un'app di produzione. Tuttavia, possiamo implementare alcuni script nel nostro package.json per semplificare il lavoro.

"scripts": {
    "start": "node dist/index.js",
    "dev": "babel-node src/index.js",
    "build": "babel src -d dist",
    "postinstall": "npm run build"
  },

Quanto sopra sopra npm install il codice transpiled nella directory dist consentendo a npm start a usare il codice transpiled per la nostra app di produzione.

npm run dev avvierà il server e il runtime di babel che va bene e preferito quando si lavora su un progetto localmente.

Andando avanti, è possibile installare nodemon npm install nodemon --save-dev per controllare le modifiche e quindi riavviare l'app nodo.

Questo velocizza davvero il lavoro con Babel e NodeJS. In you package.json basta aggiornare lo script "dev" per usare nodemon

"dev": "nodemon src/index.js --exec babel-node",

Usa JS es6 sulla tua app NodeJS

JS es6 (noto anche come es2015) è un insieme di nuove funzionalità del linguaggio JS volte a renderlo più intuitivo quando si utilizza OOP o mentre si affrontano le attività di sviluppo moderne.

Prerequisiti:

  1. Scopri le nuove funzionalità di es6 su http://es6-features.org - potrebbe chiarirti se hai intenzione di usarlo nella tua prossima app NodeJS

  2. Verifica il livello di compatibilità della versione del tuo nodo su http://node.green

  3. Se tutto va bene, facciamo il codice!

Ecco un esempio molto breve di una semplice app hello world con JS es6

'use strict'

class Program
{
    constructor()
    {
        this.message = 'hello es6 :)';
    }

    print()
    {
        setTimeout(() =>
        {
            console.log(this.message);
            
            this.print();

        }, Math.random() * 1000);
    }
}

new Program().print();

È possibile eseguire questo programma e osservare come stampa lo stesso messaggio più e più volte.

Ora .. lasciamolo giù riga per riga:

'use strict'

Questa linea è effettivamente necessaria se si intende utilizzare js es6. strict modalità strict , intenzionalmente, ha una semantica diversa dal codice normale (si prega di leggere di più su MDN - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)

class Program

Incredibile: una parola chiave di class ! Solo per un rapido riferimento - prima di es6 l'unico modo per definire una classe in js era con la parola chiave ... function !

function MyClass() // class definition
{

}

var myClassObject = new MyClass(); // generating a new object with a type of MyClass

Quando si utilizza OOP, una classe è un'abilità fondamentale che aiuta lo sviluppatore a rappresentare una parte specifica di un sistema (la decomposizione del codice è cruciale quando il codice diventa più grande .. ad esempio: quando si scrive il codice lato server)

constructor()
{
    this.message = 'hello es6 :)';
}

Devi ammettere che è abbastanza intuitivo! Questo è l'indice della mia classe - questa "funzione" unica si verificherà ogni volta che un oggetto viene creato da questa particolare classe (nel nostro programma - solo una volta)

print()
{
    setTimeout(() => // this is an 'arrow' function
    {
        console.log(this.message);
        
        this.print(); // here we call the 'print' method from the class template itself (a recursion in this particular case)

    }, Math.random() * 1000);
}

Perché la stampa è definita nell'ambito della classe - in realtà è un metodo - che può essere invocato dall'oggetto della classe o dalla stessa classe!

Quindi .. fino ad ora abbiamo definito la nostra classe .. tempo di usarla:

new Program().print();

Che è veramente uguale a:

var prog = new Program(); // define a new object of type 'Program'

prog.print(); // use the program to print itself

In conclusione: JS es6 può semplificare il tuo codice - renderlo più intuitivo e facile da capire (confrontandolo con la versione precedente di JS) .. potresti provare a riscrivere un tuo codice esistente e vedere la differenza per te stesso

GODERE :)



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow