Jsdom: рдореИрдВ ES6 рдореЙрдбреНрдпреВрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде JSDom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдЬреБрд▓ре░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jsdom/jsdom

рдпрд╣ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ:

http://stackoverflow.com/questions/38651209/how-can-i-wrap-an-import-with-jsdom

рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ: jsdom рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ "рд░реИрдк" рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ES6 рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд (рдпрд╛рдиреА import foo form 'bar' ) рдХреЛ "рд░реИрдк" рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдХреЛрдб рд╕реЗ рдкрд╣рд▓реЗ рдЖрдирд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдбреЛрдо-рдЙрдкрдпреЛрдЧ рдХреЛрдб рд╕реНрд╡рдпрдВ рдЖрдпрд╛рдд рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ JSDom рджреНрд╡рд╛рд░рд╛ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ?

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рдХреА рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж; рдпрд╣ рдкрд╣реЗрд▓реА рдореЗрдВ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдерд╛ рдЬрд┐рд╕рдиреЗ рдЕрдВрддрддрдГ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ (рдЗрд╕ рднрдпрд╛рдирдХ рдмреНрд▓реЙрдЧ рдкрд░: http://www.2ality.com/2014/09/es6-modules- final.html)ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ, _is_ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ JSDom рджреНрд╡рд╛рд░рд╛ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: System.import ред

рдЕрдиреНрдп ES6/JSDom-рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

import jsdom;

jsdom({
    html: '<div></div>',
    done: () => {
        // don't do this:
        //      import setup from 'setup';

        // do this:
        System.import('setup')
            .then((setup) => {
                    // test code that uses setup
            })
    }
});

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

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

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

рдЪреВрдВрдХрд┐ рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд┐рд╕реА рднреА рдЗрдВрдЬрди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛ рд╕рд╛рдорд╛рдиреНрдп, рд╕рдорд░реНрдерд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдмреЗрд▓ рдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реЗ рдХреБрдЫ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдиреЛрдб.рдЬреЗрдПрд╕ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ jsdom рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╡рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рд╣рдорд╛рд░рд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред

рдЦреИрд░, рдореИрдВ рдореЛрдЪрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╛рдиреА mocha --compilers js:babel-core/register test.js ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ "[my] рдХреЛрдб рдХреЛ jsdom рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред" рдореИрдВрдиреЗ рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ ES6 рдореЙрдбреНрдпреВрд▓ рдирдП рд╣реИрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭреВрдВрдЧрд╛ рдХрд┐ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рдореБрдЦ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдорд╛рдирдХ рдереЗ (рдЬреИрд╕реЗред Redux, http://redux.js.org/docs/basics/ExampleTodoList.html) ... рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ (рдпрдХреАрдирди) рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВред

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ, ES6 рдореЙрдбреНрдпреВрд▓ рджреВрд░ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред JSDom рдЕрдм рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХреИрди рдХреЛ рд╕рдбрд╝рдХ рдкрд░ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ (рдПрдХ _toally_ рд╡реИрдз рд╡рд┐рдХрд▓реНрдк), рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рдпрджрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рдХрд┐рд╕реА рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХрд┐рд╕реА рднреА рддрд░рд╣, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЖрдк рдпрд╣рд╛рдВ рджреЛ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

  1. рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ jsdom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ jsdom рдХреИрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рднрд▓реЗ рд╣реА рдЖрдкрдиреЗ рдХреЙрдордирдЬ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реЛ, рдЖрдкрдХрд╛ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╡рд┐рдХреА рдкреГрд╖реНрда рджреЗрдЦреЗрдВ, рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджреЗ рдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА ред рдЖрдк рдмреЗрдмреЗрд▓ рдФрд░ рдЬреЗрд╕реНрдЯ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдЖрдпрд╛рдд рдЕрднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ (рдиреЛрдб рдореЗрдВ)ред рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ-рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдиреЛрдб рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реЛрдбрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рдХреА рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж; рдпрд╣ рдкрд╣реЗрд▓реА рдореЗрдВ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдерд╛ рдЬрд┐рд╕рдиреЗ рдЕрдВрддрддрдГ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ (рдЗрд╕ рднрдпрд╛рдирдХ рдмреНрд▓реЙрдЧ рдкрд░: http://www.2ality.com/2014/09/es6-modules- final.html)ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ, _is_ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ JSDom рджреНрд╡рд╛рд░рд╛ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: System.import ред

рдЕрдиреНрдп ES6/JSDom-рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

import jsdom;

jsdom({
    html: '<div></div>',
    done: () => {
        // don't do this:
        //      import setup from 'setup';

        // do this:
        System.import('setup')
            .then((setup) => {
                    // test code that uses setup
            })
    }
});

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

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

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

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

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

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

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

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

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