C'è un modo per ottenere ES6 in sails.js?SailsJS supporta ES6?
risposta
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.
è 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]
}
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
Ci scusiamo per la formattazione. L'app non è la migliore per questo –
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
comedevDependencies
; - Aggiornamento
npm start
script inpackage.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.
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
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
.
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. –