рдЕрд╡рдпрд╡ред рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХрдВрд╕реЛрд▓

рдШрдЯрдХ рдиреЛрдЯреЛрдВ рдХреЗ рдКрдкрд░

рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдоред v1



рдШрдЯрдХреЛрдВ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдпрдорд┐рдд node.js рдореЙрдбреНрдпреВрд▓ рдХреА рддрд░рд╣ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЛрдо рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдореИрдВ рдХрдВрд╕реЛрд▓ рдХреЗ рдХрд┐рд╕реА рдШрдЯрдХ рдХреЛ рдЪрд▓рд╛рдХрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдиреЛрдб node mocha ... рдХрд╣реЛ node mocha ... , рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреНрдп рдШрдЯрдХ рдХреА require рдирд╣реАрдВ рд╣реИ рдЬреЛ DOM рд╕реЗ рдмрдВрдзрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, require рдХрдВрд╕реЛрд▓ рдиреЛрдб рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓, рдШрдЯрдХ рдирд╣реАрдВред рдФрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ node.js рдХрд╛ рдкреНрд░рднреБрддреНрд╡ рд╣реИ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИред рдШрдЯрдХ рдмрд┐рд▓реНрдбрд░ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рдПрдЧреАред Https://github.com/component/component/issues/41 рджреЗрдЦреЗрдВред рдЕрдм рддрдХ, рдЖрдк рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЖрдкрдХреЛ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрдЯрдХ рдирд┐рдХрд╛рдп рдореЗрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП) рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ( component/router рджреЗрдЦреЗрдВ):

 try { var Route = require('route-component'); } catch (err) { var Route = require('route'); } 


рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд╣рдо v1 рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдШрдЯрдХреЛрдВ рдХреЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ, рдлрд┐рд░ рдореИрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред Js-Applications рдХреЗ рдПрдХреАрдХреГрдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред

рд╕рдорд╛рдирд╛рдВрддрд░ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рд░рд▓ рдШрдЯрдХреЛрдВ рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдЖрд╡рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, component/indexof , component/each , рдЕрднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб https://github.com/mbykov/component-testing-example рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдХреНрд▓реЛрди рдФрд░ рдЗрд╕реЗ рджреЗрдЦреЗрдВред

рдЗрдХрд╛рдИ рдмрдирд╛рдо рдПрдХреАрдХреГрдд рдкрд░реАрдХреНрд╖рдг



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

test / test.js



рдЪрд▓реЛ рдХрдВрд╕реЛрд▓ рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдШрдЯрдХ рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рдкрддреНрд░ рдХреЛ рдЬрд╛рдирдиреЗ, рдХрд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рднреВрд▓ рдЧрдП рд╣реИрдВ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдХреНрдпрд╛ рд╣реИ - рдпрд╛ ред рдпрд╛, рдХрд╣рддреЗ рд╣реИрдВ, ╬╛ - ╬╛ рдпрд╛ ╬╗ ? (рдпрд╣ "рдЦрд┐рд▓реМрдирд╛" рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдЙрдЪреНрдЪрд╛рд░рдг рдХреЗ рдмрд┐рдирд╛ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ)ред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдШрдЯрдХ рдореЗрдВ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ, рдПрдХ рд╡рд░реНрдг рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд╢рдмреНрджред рдЗрд╕рдореЗрдВ рд╣рдо рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдШрдЯрдХ component/map рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдШрдЯрдХ рдХреЗрд╡рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

 var map = require('map-component'); module.exports = nextSym; function nextSym() { if (!(this instanceof nextSym)) return new nextSym(); return this; } 


рдФрд░ рджреЛ рддрд░реАрдХреЗ

 nextSym.prototype.sym = function(sym){ return String.fromCharCode(sym.charCodeAt(0)+1); } nextSym.prototype.word = function(word){ var self = this; var arr = word.split(''); var res = map(arr, function(sym) { return self.sym(sym); }) return res.join(''); } 


рд▓рд╛рдЗрди рдпрджрд┐ ((рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЙрджрд╛рд╣рд░рдг)) рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рд▓реМрдЯрд╛рдПрдВ () рдПрдХ рдЬрд╛рджреВ рдХрд╛ рдЬрд╛рджреВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рд╣рдореЗрдВ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

 $ make 


package.json, рдореЛрдЪрд╛ рдФрд░ рдЪрд╛рд╣рд┐рдП



рд╣рдо рдПрдХ рд╣реА рд▓реЗрдЦрдХ, TJ Holowaychuk рдФрд░ рдЪрд╛рд╣рд┐рдП рджрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдореЛрдЪрд╛ рдврд╛рдВрдЪреЗ (рдореЛрдЪрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдЕрдм рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдШрдЯрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдиреЛрдб.рдЬреЗрдПрд╕, рддреЛ рдЪрд▓рд┐рдП рдПрдХ package.json рдмрдирд╛рддреЗ рд╣реИрдВред рдЬреЗрд╕рди рдлрд╝рд╛рдЗрд▓

 $ npm init 


package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

  "version": "0.0.1", "dependencies": { "map-component": "*" }, "devDependencies": { "mocha": "*", "should": "*" }, 


рдорд╛рдирдЪрд┐рддреНрд░-рдШрдЯрдХ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореЛрдЪрд╛ рдФрд░ рдЪрд╛рд╣рд┐рдПред

 $ npm install 


makefile рдФрд░ test.js



рдореЗрдХрдлрд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рд╛рде рд╕реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХреЙрд▓ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдЖрдЗрдЯрдо рд▓рд┐рдЦреЗрдВ;

 test: @./node_modules/.bin/mocha \ --require should \ --reporter spec 


рдкрд░реАрдХреНрд╖рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЦреЛрдЬ рджреНрд╡рд╛рд░рд╛ рдореЛрдЪрд╛ред рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдПрдБред js

 var nextSym = require('..')(); describe('component console example', function(){ describe('symbol', function() { it(' before ', function() { var next = nextSym.sym(''); next.should.be.equal(''); }) }) describe('word', function() { it('shifted qwerty is rxfsuz', function() { var shifted= nextSym.word('qwerty'); shifted.should.be.equal('rxfsuz'); }) }) }) 


рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ

  component console example symbol тЬУ  before  word тЬУ shifted qwerty is rxfsuz 2 passing (19ms) 


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

рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП

Source: https://habr.com/ru/post/In209372/


All Articles