рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ html / css рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдереЗ: рдЙрдкрд▓рдмреНрдзрддрд╛, рд▓рдкрдЯ, рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдЖрд╕рд╛рдиреАред рдЪреБрдирд╛рд╡ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдиреЛрдб рдПрдирдкреАрдПрдо рдкреНрд░рдмрдВрдзрдХ рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ред рдПрдирдкреАрдПрдо рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ
рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдирдкреАрдПрдо рдЧреНрд░рдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рднрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдореЙрдбреНрдпреВрд▓ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред
рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдкреАрдПрдо
рдПрдирдкреАрдПрдо рдореМрдЬреВрджрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрд╛рдо рдХреЛ рдЖрдкрд╕ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред , рд╣рд╛рдБ
рдХрднреА-рдХрднреА рд╕рдорд╛рдзрд╛рди рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдФрд░ рдЧреНрд░рдВрдЯ рд╕реЗ рдиреАрдЪ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдЙрдкрдХрд░рдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВрдХрд┐ рдПрдирдкреАрдПрдо рд╕рд┐рд░реНрдл рд▓реЙрдиреНрдЪ
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбреНрдпреВрд▓, рдлрд┐рд░ рдЖрдкрдХреЛ рд▓рд╛рдкрддрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдиреЗ рдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдореЙрдбреНрдпреВрд▓, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИред
рдПрдирдкреАрдПрдо рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди
рдПрдирдкреАрдПрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдЕрдЧрд░ Node.JS рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк
рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдХрджрдо рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдирдкреАрдПрдо рд╡рд┐рдиреНрдпрд╛рд╕ рдЙрджрд╛рд╣рд░рдг
{ "name": "FrontendTemplate", "description": "", "author": "Sergei Z.", "scripts": { }, "dependencies": { }, "devDependencies": { } }
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд░реБрдЪрд┐ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд▓реЙрдХ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣рдо рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд┐рди рдореЙрдбреНрдпреВрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЪрд▓реЛ рдЙрдкрдпреЛрдЧреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
{ "name":" FrontendTemplate", "version": "0.0.1", "description": "", "repository": "", "author": "Sergei Z.", "dependencies": { }, "devDependencies": { "supervisor": "*", "jshint": "~1.1.0", "less": "~1.3.3", "jade": "*", "uglify-js2": "*" } }
рдЬреЗрдбред рд╣рдорд╛рд░реЗ html рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдмрджрд╕реВрд░рдд рдХрд░рдирд╛-JS2ред рдЬреЗрдПрд╕ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ред
рдХрдоред рдХрдо рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ред
JSHintред рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ред рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХред рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдЬреЗрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдпрд╛ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ред
рд╣рдо рдкреИрдХреЗрдЬ рдореЗрдВ рдЗрд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред jsonред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ npm рдЗрдВрд╕реНрдЯреЙрд▓ рдЪрд▓рд╛рдПрдВред NPM рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рдиреЛрдб_рдореЙрдбрд▓реНрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред
рдпрд╣ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╣рдорд╛рд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рднреА
рд╣рдореЗрдВ Windows рдкрд░
UnixUtils рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
{ "name": "frontendTemplate", "version": "0.0.1", "description": "", "scripts": { "less": "cat src/less/*.less > build/app.less.temp && lessc -x ./build/app.less.temp > ./build/css/app.css && rm -f build/app.less.temp", "uglify": "cat src/js/lib/*.js src/js/*.js > build/app.js.temp && uglifyjs2 -o build/js/app.min.js build/app.js.temp && rm -f build/app.js.temp", "jade": "jade --out build/ src/jade/index.jade", "build": "npm run less && npm run uglify && npm run jade", "start": "npm run build", "watch": "supervisor --watch src--extensions less,js,jade --no-restart-on exit --exec npm -- run build" }, "repository": "", "author": "Sergei Z.", "dependencies": { }, "devDependencies": { "supervisor": "*", "jshint": "~1.1.0", "less": "~1.3.3", "jade": "*", "uglify-js2": "*" } }
рдХрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ src / рдХрдо рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ css рдореЗрдВ рдХрдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд┐рд▓реНрдб / css рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ
Uglify-js2 рд╕реНрдХреНрд░рд┐рдкреНрдЯ src рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╕рднреА js рдХреЛрдб рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ lib рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмрд┐рд▓реНрдб / js рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ
рдЬреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ src / рдЬреЗрдб рдлреЛрд▓реНрдбрд░ рд╕реЗ html рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд┐рд▓реНрдб рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ
рдПрдХ рдмрд╛рд░ рдореЗрдВ рд░рди рдХрдо, рдмрджрд╕реВрд░рдд рдФрд░ рдЬреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ
рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо
рд╢реБрд░реВ рдХрд░реЗрдВрд╡реЙрдЪ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ src рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрдо рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ js, рдЬреЗрдб рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ
рдЖрдк npm рд░рди% рдХрдорд╛рдВрдбрдирд╛рдо% рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдирдкреАрдПрдо рд░рди рдмрд┐рд▓реНрдбред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП npm рд░рди рдмрд┐рд▓реНрдб рдпрд╛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП npm рд░рди рд╡реЙрдЪ рдФрд░ рдЕрдЧрд░ рдлрд╛рдЗрд▓ рдмрджрд▓рддреА рд╣реИ рддреЛ рдЙрд╕рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред
NPM рдФрд░ TDD \ BDD
рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдЪрд╛ рдФрд░ рдлреИрдВрдЯрдордЬреЗрдПрд╕ рдХреЛ рднреА рдЦрд░рд╛рдм рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИрдЖрдИрдбреАрдИ рдПрдХреАрдХрд░рдг
рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ NPM рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, IDE рдХреЗ рд╕рд╛рде NPM рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Sublime Text 2 рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рдЯрд░реНрдЯрд▓рд╕реНрдЯреАрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдкрдХреЛ IDE рд╕реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдФрд░ рд╕реАрдзреЗ IDE рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрдорд╛рдВрдб рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
Node.JS рдлреНрд░рдВрдЯрдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЯреВрд▓рдХрд┐рдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдЙрдиреНрдирдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдмрдВрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреНрд░рдВрдЯ рдХреЛ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред