рдпрд╣ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ:
http://stackoverflow.com/questions/38651209/how-can-i-wrap-an-import-with-jsdom
рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ: jsdom рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ "рд░реИрдк" рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ES6 рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд (рдпрд╛рдиреА import foo form 'bar'
) рдХреЛ "рд░реИрдк" рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдХреЛрдб рд╕реЗ рдкрд╣рд▓реЗ рдЖрдирд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдбреЛрдо-рдЙрдкрдпреЛрдЧ рдХреЛрдб рд╕реНрд╡рдпрдВ рдЖрдпрд╛рдд рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ JSDom рджреНрд╡рд╛рд░рд╛ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ?
рдЪреВрдВрдХрд┐ рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд┐рд╕реА рднреА рдЗрдВрдЬрди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛ рд╕рд╛рдорд╛рдиреНрдп, рд╕рдорд░реНрдерд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдмреЗрд▓ рдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реЗ рдХреБрдЫ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдиреЛрдб.рдЬреЗрдПрд╕ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ jsdom рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╡рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рд╣рдорд╛рд░рд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред
рдЦреИрд░, рдореИрдВ рдореЛрдЪрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╛рдиреА mocha --compilers js:babel-core/register test.js
ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ "[my] рдХреЛрдб рдХреЛ jsdom рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред" рдореИрдВрдиреЗ рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ ES6 рдореЙрдбреНрдпреВрд▓ рдирдП рд╣реИрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭреВрдВрдЧрд╛ рдХрд┐ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рдореБрдЦ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдорд╛рдирдХ рдереЗ (рдЬреИрд╕реЗред Redux, http://redux.js.org/docs/basics/ExampleTodoList.html) ... рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ (рдпрдХреАрдирди) рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВред
рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ, ES6 рдореЙрдбреНрдпреВрд▓ рджреВрд░ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред JSDom рдЕрдм рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХреИрди рдХреЛ рд╕рдбрд╝рдХ рдкрд░ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ (рдПрдХ _toally_ рд╡реИрдз рд╡рд┐рдХрд▓реНрдк), рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рдпрджрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рдХрд┐рд╕реА рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдХрд┐рд╕реА рднреА рддрд░рд╣, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЖрдк рдпрд╣рд╛рдВ рджреЛ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рдХреА рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж; рдпрд╣ рдкрд╣реЗрд▓реА рдореЗрдВ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдерд╛ рдЬрд┐рд╕рдиреЗ рдЕрдВрддрддрдГ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ (рдЗрд╕ рднрдпрд╛рдирдХ рдмреНрд▓реЙрдЧ рдкрд░: 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
рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред
рдХрд┐рд╕реА рднреА рддрд░рд╣, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕ рд╕рдбрд╝рдХ рдкрд░ рдЬрд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА, рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рдХреА рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж; рдпрд╣ рдкрд╣реЗрд▓реА рдореЗрдВ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдерд╛ рдЬрд┐рд╕рдиреЗ рдЕрдВрддрддрдГ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ (рдЗрд╕ рднрдпрд╛рдирдХ рдмреНрд▓реЙрдЧ рдкрд░: http://www.2ality.com/2014/09/es6-modules- final.html)ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ, _is_ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ JSDom рджреНрд╡рд╛рд░рд╛ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
System.import
редрдЕрдиреНрдп ES6/JSDom-рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рдореЛрдЪрд╛ рдЬреИрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдпрд╛рдиреА рдЖрдкрдХреЛ рдЕрдкрдиреЗ
it
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВdone
рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рджdone
рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛)редрдХрд┐рд╕реА рднреА рддрд░рд╣, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕ рд╕рдбрд╝рдХ рдкрд░ рдЬрд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА, рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред