Ace: [рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдирд┐рдВрдЧ] рд╕рдорд░реНрдерди ESNext (async/рдкреНрд░рддреАрдХреНрд╖рд╛, рд╡рд░реНрдЧ рдЧреБрдг, рдЖрджрд┐)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рджрд┐рд╕ре░ 2016  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ajaxorg/ace

рдореИрдВ ES6+ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП ESLint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХреЗрдд рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рдХрдХреНрд╖рд╛ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдПрд╕рд┐рдВрдХ/рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрдИ рдЕрдиреНрдп рд▓рд╛рдЗрдирд┐рдВрдЧ рдирд┐рдпрдо рднреА рд╣реИрдВ рдЬреЛ рдпрд╣ рдЬреЗрд╢рд┐рдВрдЯ рд╕реЗ рдХрд╛рдлреА рдмреЗрд╣рддрд░ рдХрд░рддреЗ рд╣реИрдВред

class Foo {
    bar = 'baz';
}
async function foo () {
    const bar = await baz();
}

рдореИрдВрдиреЗ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЯрд░ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд┐рддрдирд╛ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВред

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ #3180 рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╣рдо рдЗрд╕реЗ ESLint рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдбреЗрдореЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВред

рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдирдпрд╛ JSHint рд╕рдВрд╕реНрдХрд░рдг 2.10.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрд╕реНрдерд╛рдпреА рдХрд╛рдордХрд╛рдЬ рдХреЗ рд░реВрдк рдореЗрдВ - рдореИрдВрдиреЗ рдПрд╕реАрдИ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддреАрдХреНрд╖рд╛/async рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ.. рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдХрдИ рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рд┐рд░реНрдл async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 8**2 рдЬреИрд╕реЗ рдирдП рдЧрдгрд┐рдд рдСрдкрд░реЗрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

рдЖрдЬ рддрдХ, рдпрд╣ рдореБрджреНрджрд╛ 3 рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдЕрдм рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдВрдЧ рдмрдврд╝ рд░рд╣реА рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрднреА рднреА рдХрд╛рдлреА рд╕рдХреНрд░рд┐рдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХрд┐рд╕реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реЛрдбрдореИрдк рдкрд░ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реИ, "рд╣рд╛рдБ, рд╣рдореЗрдВ рдпрд╣реА рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдФрд░ рд╣рдо рд╢рд╛рдпрдж рдЗрд╕реЗ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред"

рдХреНрдпрд╛ рд╣рдо _рдХреГрдкрдпрд╛_ рдпрд╣рд╛рдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? @рдирд╛рдЗрдЯрд╡рд┐рдВрдЧ ? @adamjimenez ?

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдЯрд░ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрд╛, рдФрд░ рдЬреВрд░реА рдиреЗ рдореЗрд░реА рдЦреБрдж рдХреА рдХреБрдЫ, _/mode/ javascript_worker.js_

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ESNext рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рд╣реИ , рдХрдо рд╕реЗ рдХрдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕рдиреЗ рдХреЛрдИ рдкреНрд░рдХрд╛рд╢ рдирд╣реАрдВ рдбрд╛рд▓рд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдЖрдк рд╕рднреА рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдореИрдВрдиреЗ jshint.js рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд╡реАрдирддрдо рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдРрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрд╣ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рдЬрд╛ рд░рд╣реА рддреНрд░реБрдЯрд┐ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдиреНрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ (рд▓рд╛рдкрддрд╛ рдХреЛрд╖реНрдардХ, рдмрдВрдж рддрд╛рд░, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рдЬрд╛ рд░рд╣реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рднреА рд░реЛрдХрддрд╛ рд╣реИред рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдХреНрдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдорд░ рдЪреБрдХреА рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд╛рдлреА рджрд░реНрджрдирд╛рдХ рдерд╛ рдХрд┐ рдкреВрд░рд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдХрдИ рдШрдВрдЯреЗ рд▓рдЧ рдЧрдП) рдФрд░ рдлрд┐рд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ ...: /

рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
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");

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!! рдХреЛрдИ рд╕рдВрдХреЗрдд рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ ES6 рдХреЗ рд▓рд┐рдП 6 рдФрд░ рдЗрд╕реА рддрд░рд╣?

рдореИрдВ рдпрд╣ рднреА рдЬреЛрдбрд╝реВрдВрдЧрд╛, рдпрджрд┐ рдЕрдиреНрдп рд▓реЛрдЧ git рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдирд╛ SSH Github рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: git clone https://github.com/ajaxorg/ace.git/ ред _рдЙрд╕ рдкрд░ рдПрдХ рдмрд╛рд░ рдареЛрдХрд░ рдЦрд╛рдИ, рдЬрд┐рддрдирд╛ рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ_

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

aslushnikov picture aslushnikov  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

narraressan picture narraressan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ketysek picture ketysek  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

akosyakov picture akosyakov  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

featurecat picture featurecat  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ