Π― ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ javascript, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ESLint Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ES6+.
Π― Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠ»Π°ΡΡΠ° ΠΈ async/await Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ, Π½ΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» Π»ΠΈΠ½ΡΠΈΠ½Π³Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ jshint.
class Foo {
bar = 'baz';
}
async function foo () {
const bar = await baz();
}
Π― Π½Π΅ ΠΈΠ·ΡΡΠ°Π», Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π»ΠΈΠ½ΡΠ΅Ρ javascript, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ Π·Π½Π°Ρ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠΉ Π·Π°ΠΏΡΠΎΡ.
ΠΡΠΎ Ρ
ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ, ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ #3180.
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Π·ΡΡΡ Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ESLint.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ Π½Π°Π΄ ΡΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ.
ΠΡΠΏΡΡΠ΅Π½Π° Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ JSHint 2.10.0 Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ β Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ ACE, Π² Π½Π΅ΠΌ ΡΠΆΠ΅ Π΅ΡΡΡ await/async.
Typescript Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ... Π½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ async/await, Π²Π΅ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ es6, Π²ΠΊΠ»ΡΡΠ°Ρ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ 8**2
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ ΡΡΠΎΠΌΡ Π²ΡΠΏΡΡΠΊΡ 3 Π³ΠΎΠ΄Π° . React ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΡΠΏΡΠΎΡ Π½Π° Π½Π΅Π³ΠΎ ΡΠ°ΡΡΠ΅Ρ. ΠΡΠΎΠ΅ΠΊΡ Π²ΡΠ΅ Π΅ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π°ΠΊΡΠΈΠ²Π΅Π½, Π½ΠΎ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Π΅ΡΡΡ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΎΠΆΠ½ΠΎΠΉ ΠΊΠ°ΡΡΠ΅, ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Β«Π΄Π°, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΈ ΠΌΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎΒ».
ΠΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ, _ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°_, ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π΄Π΅ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅? @Π½Π°ΠΉΡΠ²ΠΈΠ½Π³ ? @Π°Π΄Π°ΠΌΡ ΠΈΠΌΠ΅Π½Π΅Ρ ?
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΡΠ°Π»ΡΡ Π½Π°ΠΉΡΠΈ Π»ΠΈΠ½ΡΠ΅Ρ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² CSS, ΠΈ ΠΏΡΠΈΠΊΠΈΠ½ΡΠ» ΡΡΠΎ-ΡΠΎ ΡΠ²ΠΎΠ΅, _/mode/javascript_worker.js_ π
ΠΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ½Π° ΡΠΆΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ESNext , ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Javascript Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ javascript. ΠΠΈΡΠ½ΠΎ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠ»ΠΈΠ»ΠΎ ΡΠ²Π΅Ρ, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΈΠ· Π²Π°Ρ.
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ace ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΌΠ΅Π½Ρ ΡΠ°ΠΉΠ»Π° jshint.js Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π΄Π»Ρ async/await. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² (ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, Π½Π΅Π·Π°ΠΊΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈ Ρ.Β Π΄.). ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ, Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π°ΡΠ° ΠΌΠ΅ΡΡΠ².
Π― ΡΠΎΠΆΠ΅ Π²ΠΎΠ·ΠΈΠ»ΡΡ Ρ ΡΡΠΈΠΌ, ΠΈ Ρ ΡΠΌΠΎΠ³ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ, Π±ΡΠ»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΠ½ΠΎ ΠΊΠΎΠΏΠ°ΡΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° (Π·Π°Π½ΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ²), Π° ΠΏΠΎΡΠΎΠΌ ΡΠ·Π½Π°Π», ΡΡΠΎ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½ΡΠΆΠ½Ρ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΡΠΊΡ... :/
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²:
1) Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΡ/ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ - Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ: "esnext:!0" Π½Π° "esversion:9"
https://raw.githubusercontent.com/ajaxorg/ace-builds/master/src-min/worker-javascript.js
2) Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅ΠΏΠΎ ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅Π±Ρ. (ΠΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 1 ΠΌΠΈΠ½ΡΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ ΡΠΎΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ)
git clone [email protected]:ajaxorg/ace.git
npm install
nano +82 lib/ace/mode/javascript_worker.js // replace "esnext: true," with "esversion: 9"
node Makefile.dryice.js full --target ../ace-builds
ΠΠΠΠΠΠΠΠΠΠ : ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π½Π°ΡΠ΅Π» Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±:
var editor = ace.edit("editor");
editor.session.on('changeMode', function(e, session){
if ("ace/mode/javascript" === session.getMode().$id) {
if (!!session.$worker) {
session.$worker.send("setOptions", [{
"esversion": 9,
"esnext": false,
}]);
}
}
});
editor.session.setMode("ace/mode/javascript");
ΠΠΎΡΡΡΡΠ°ΡΡΠΈΠΉ!! ΠΡΠ±ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 6 Π΄Π»Ρ ES6 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅?
Π― ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Ρ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ Ρ git ΠΈΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅ Π½Π°ΡΡΡΠΎΠΈΠ» ΡΠ²ΠΎΠΉ SSH Ρ Github, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ: git clone https://github.com/ajaxorg/ace.git/
. _ΠΠ°ΡΡΠΊΠ°Π»ΡΡ Π½Π° ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·, ΡΠ΅ΠΌ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΏΡΠΈΠ·Π½Π°ΡΡ_
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ Π½Π°Π΄ ΡΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ.