2015-10-19 15 views

risposta

5

Questa è una domanda node.js non specificamente vele. Sì, la versione corrente di node.js supporta determinati standard ES2015 a seconda della versione di Node.js e dei flag utilizzati all'avvio del server.

maggior parte delle funzioni sono già attivi, invece di utilizzare tutte le funzionalità, è necessario utilizzare node app.js --es_staging o node app.js --harmony nella cartella del progetto, invece di sails lift

Il seguente collegamento fornisce informazioni aggiornate su quali caratteristiche versione corrente del supporto Nodo e come accedervi.

https://nodejs.org/en/docs/es6/

8

è necessario controllare la compatibilità di ES6 con node.js invece qualsiasi quadro come sails.js, esprimere ecc

perché finalmente node.js cambierà il supporto JavaScript per codice lato server. Quindi non importa quale framework stai usando.

You can use the sails with ES6:

Per il controllo di compatibilità ES6 kangax.github.io.

consigliati:

Sails v 0.11.0 or greater

Node v 4.. or greater

npm v 2.14.4 or greater

Ora siete pronti ad esplorare nuovi Ecmascript6 funzione.

Otterrete la nuova funzione da http://es6-features.org/.

TEST:

Codice:

ecma6Test:function(req,res,next){ 
    var evens =req.body.evens 
    odds = evens.map(v => v + 1); 
    res.json({sucess:true,'odds':odds}); 
} 

Richiesta:

{"evens":[2,4,6,8,10]} 

Risposta:

{ 
    "sucess": true, 
    "odds":[3, 5, 7, 9, 11] 
} 
+0

Le funzioni di messa in scena non sono considerate stabili dal team V8. ma puoi usarli per --harmony flag. Ma penso che devi aspettare finché non sono stabili. –

2

risposta di Vishnu ha coperto.

L'elenco esplicito di ES6 caratteristiche disponibili nella versione più recente nodo è qui https://nodejs.org/en/docs/es6/

Which ES6 features ship with Node.js by default (no runtime flag required)?

  • let (modalità rigorosa solo)
  • const
  • (modalità rigorosa blocchi funzionali-a-solo)
    • A partire dalla v8 3.31.74.1, le dichiarazioni a ambito di blocco sono intenzionalmente implementate con un lim non conforme iter al codice di modalità rigoroso. Gli sviluppatori dovrebbero essere consapevoli che questo cambierà mentre v8 continua verso la conformità alle specifiche ES6.
  • classi (modalità rigorosa solo)
  • Collezioni
  • Mappa
  • WeakMap
  • Impostare
  • WeakSet
  • array tipizzati
  • Generatori
  • binari e ottali letterali
  • Object estensioni letterali (le proprietà scorciatoie e metodi)
  • promesse
  • metodi
  • nuova stringa
  • Simboli
  • stringhe di modello
  • Freccia Funzioni
+0

Ci scusiamo per la formattazione. L'app non è la migliore per questo –

15

SailsJS è solo un quadro scritta tramite sintassi ES5 e non ha bisogno di supportare ES6.

È possibile scrivere un progetto con la sintassi ES6 come di consueto e utilizzare Babel \ Traceur \ qualunque per l'esecuzione.

Il mio flusso è la seguente:

  • Crea progetto vele;
  • Installa babel come devDependencies;
  • Aggiornamento npm start script in package.json con "start": "babel-node app.js";

Questo è tutto. Posso scrivere il codice ES6 \ 7 nei miei controller \ models \ etc ed eseguire il server tramite il comando npm start. Funziona come al solito quando lo hai scritto con la sintassi ES5.

Babel Transpiler

Babel Node

+0

Purtroppo non è così facile. Errore generato: /node_modules/source-map-support/source-map-support.js:415 var hasStack = (argomenti [1] && argomenti [1] .stack); ^ TypeError: impossibile leggere la proprietà 'nomefile' di undefined – alexmngn

1

C'è il gancio sails-hook-babel che potrebbe funzionare per voi. Non funziona per me, come spiego di seguito, ma spero che ottenga maggiore visibilità, sia migliorato, e quindi questa risposta sarà più rilevante.

Attualmente, a partire dalla v6.0.1 la libreria funzionerà per i file caricati dopo l'esecuzione degli hook delle vele. Ciò significa che se si desidera utilizzare ES2015 ad es. il tuo file config/routes.js, riceverai un errore di sintassi. Ma come suggerito in this issue, dovrebbe funzionare per es. file nella cartella api.