рдЖрдкрдХреЛ рдирдорд╕реНрдХрд╛рд░, рдкрд╛рдардХред рдЕрднреА рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВ рднреА Node.js рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдХреБрдЫ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдорди рдирд╣реАрдВ рд╣реБрдЖред рдХрдИ рд▓реЛрдЧ рдЬреЛ рдЬреЗрдПрд╕ рдФрд░ рдЗрд╕рдХреЗ рдЬрд╝реЗрди рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ, рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рдХреНрд▓реЛрдЬрд░ рдореЗрдВ, рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди, рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рджреЛрд╕реНрдд рдХреЗ рд╕рд╛рде PHP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛, рдУрдУрдкреА рдХреА рдЕрд▓реНрдкрддрд╛ рдФрд░ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХреА, рдФрд░ рдореИрдВрдиреЗ рдХрд╣рд╛: "рд╕рд░реНрд╡рд░ рдХреА рдУрд░ PHP рдХреЗ рдмрдЬрд╛рдп, JS рдореЗрдВ рд▓рд┐рдЦреЗрдВ", рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реА: "рдЖрдкрдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдиреЛрдбреНрдЬ"ред рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╣рд┐рдЪрдХрд┐рдЪрд╛рд╣рдЯ рдХреЗ, рдореИрдВрдиреЗ рд╡рд┐рдХреА рдФрд░ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрджрд╛рдИ рд╢реБрд░реВ рдХреА, рдлрд┐рд░ рдХрдо рд╕реЗ рдХрдо рд╕рдордп рдореЗрдВ рдореИрдВрдиреЗ рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдмреЙрдХреНрд╕ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣рд╛рдВ Node.js. рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред
рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ Node.js рдЖрдкрдХреЛ рдПрдХ рдЕрдВрдзреЗрд░реЗ рдЬрдВрдЧрд▓ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рддреБрд░рдВрдд рднрд╛рд╖рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рднреА рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдПрдХ рдЫреЛрдЯреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдпрд╣ рд╕рдм 2 рдЫреЛрдЯреЗ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдЧрд╛, рдЬрд╛рдирдмреВрдЭрдХрд░ рдмрд┐рдирд╛ рддрд╛рдордЭрд╛рдо рдХреЗ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ "рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред"
рддреЛ, рдЕрд╡рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ: рд╣рдо рдЖрд╡реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрди рдлрд╝реЙрд░реНрдо рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдХрд░реЗрдВрдЧреЗ:
<script type = " nodejs " > 100 + 235 ; </script >
FractalizeR's HabraSyntax Source Code Highlighter .
рдпрд╣ рдХреЛрдб 335 рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдРрд╕реА рддрдХрдиреАрдХ рдХреНрдпреЛрдВ, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ:
<% = 100 + 235%> ? рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрди рдЯреИрдЧреЛрдВ рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рдЬреЗрдПрд╕ рдХреЛрдб рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рд╕рдВрдкрд╛рджрдХреЛрдВ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрдпрд╛рдЧ рдХреЗ рдЕрдиреБрд╖реНрдард╛рди рдХреЗ рдмрд┐рдирд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗред рдЬреЗрдПрд╕ рдХреЛрдб рдХреНрдпреЛрдВ? "рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдмрд░реНрдмрд░рддрд╛ рд╣реИ!" рдареАрдХ рд╣реИ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ 1C-Bitrix рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЙрдбрд▓ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рд╕рд┐рд░реНрдл рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдФрд░ рдЪрдХреНрд░реЛрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕реАрдЦрдирд╛ рдФрд░ рдЙрд╕рдХреЗ рддрдВрдЧ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЙрддрд░рдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рдЬреЗрдПрд╕ рд╣реИ! рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкрдХрдбрд╝реЛ? рдЖрдорддреМрд░ рдкрд░, рдЯрд╛рдЗрдкрд╕реЗрдЯрд░реНрд╕ рдЬреЗрдПрд╕ рдореЗрдВ рд▓рд┐рдЦрддреЗ рдФрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рд╣реА рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╡реЗ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐, рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣реЗрд░рдлреЗрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЙрдирдХреЗ рдХреЛрдб рдХреЛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдЕрдм, рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЕрднреНрдпрд╛рд╕ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдЪрд░рдг рджрд░ рдЪрд░рдг рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ: рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП start.js рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯред рд╣рдо start.js рдореЗрдВ рдЖрдЧреЗ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд Node.js рдореЙрдбреНрдпреВрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдЬреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:
var http = require ( ' http ' ) ; //
var fs = require ( ' fs ' ) ; // ,
var vm = require ( ' vm ' ) ; // JS- ,
FractalizeR's HabraSyntax Source Code Highlighter .
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Node.js рдХреЛ рдХрд┐рд╕реА рднреА Apaches рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ PHP рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рддрддреНрд╡ рд╣реИред рд╕рд░реНрд╡рд░ рд╕реАрдзреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЙрдЧрддрд╛ рд╣реИ рдФрд░ рддрдм рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрд╕реЛрд▓ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИред рд╣рдо рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП JSON рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рднреА рддреБрд░рдВрдд рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВрдЧреЗ:
var host = {
addr : ' 127.0.0.1 ' ,
port : 8070
} ;
var jsonExport = {
title : ' ' ,
list : [
{ name : ' ' , msg : ' ' } ,
{ name : ' ' , msg : ' ' } ,
{ name : ' ' , msg : ' ! ' }
]
} ;
FractalizeR's HabraSyntax Source Code Highlighter .
8070 рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдмрд╕ 80 рдХреЗ рджрд╢рдХ рдореЗрдВ рдЕрдкрд╛рдЪреЗ рдпрд╛ рдХреБрдЫ рдФрд░ рдХреЗ рдХрдмреНрдЬреЗ рдореЗрдВ рд╣реИред рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдкреЛрд░реНрдЯ рдореБрдлреНрдд рд╣реИ, рддреЛ рдЖрдк 80 рд╡рд╛рдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред 127.0.0.1 рдПрдХ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдЗрд╕рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рднреАрддрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдЕрднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЕрдЧрд▓рд╛, рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рддреЗ рд╣реИрдВ:
var server = http . createServer ( function ( request , response ) {
//
} ) ;
FractalizeR's HabraSyntax Source Code Highlighter .
рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣реИрдВрдбрд▓рд░ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реНрдЪреА рджреЗрдВ рдФрд░ рддреБрд░рдВрдд рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдкреЛрд░реНрдЯ 8070 рдкрд░ рд╕реБрдирдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬреЗрдВ:
server . listen ( host . port , host . addr ) ;
console . log ( ' : ' + host . addr + ' : ' + host . port ) ;
FractalizeR's HabraSyntax Source Code Highlighter .
рдЕрдм рд╣реИрдВрдбрд▓рд░ рдХреЛрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ:
response . writeHead ( 200 , { ' content-type ' : ' text/html; charset=utf-8 ' } ) ;
fs . readFile ( ' ./template.html ' , function ( err , data ) {
//
} ) ;
FractalizeR's HabraSyntax Source Code Highlighter .
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ 200 рд╡реЗрдВ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рд╡рд╛рдкрд╕реА рд╣реИ, рдЕрд▓рд╛ рдУрдХреЗ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░, рдСрдмреНрдЬреЗрдХреНрдЯ рд╢реЗрд╖ рд╣реЗрдбрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧред рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдкрдврд╝ рд░рд╣реА рд╣реИред
рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛрдб рдЬреЛ start.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ:
var data = data . toString ( ) ;
var dataArr = data . match ( / \<script type=(nodejs|'nodejs'|"nodejs")\>([^\0]+?)< \/ script\> /gi m ) ;
for ( var i = 0 ; i < ( dataArr . length | | 0 ) ; i + + ) {
var code = dataArr [ i ] . replace ( / ^\<script([^\>]+)\>([^\0]+?)< \/ script\>$ /i m , ' $2 ' ) ;
data = data . replace ( / \<script type=(nodejs|'nodejs'|"nodejs")\>([^\0]+?)< \/ script\> /i m ,
vm . runInNewContext ( code , jsonExport ) ) ;
}
response . end ( data ) ;
FractalizeR's HabraSyntax Source Code Highlighter .
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ - рд╣рдо рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЛ regs рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рдореБрдЭреЗ regs рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ - рдкрд╛рд░реНрд╕рд░ рдХреЛрдб рдХреЗ рдкрд╛рдП рдЧрдП рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреАрдо gim, g рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдореИрдЪ рд╣реИрдВ, рдореИрдВ рдХреЗрд╕-рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ, рдореА рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╕рд░реНрдЪ рд╣реИ (рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕рд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп)ред рд░реЗрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреА рдХреЗрд╡рд▓ рдПрдХ рдЯреНрд░рд┐рдХ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддреА рд╣реИред рдПрдХ рдбреЙрдЯ рдХреИрд░реЗрдХреНрдЯрд░ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдХреИрд░реЗрдХреНрдЯрд░ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИ, рдРрд╕реЗ рдореЗрдВ рд╣рдореЗрдВ рднреА рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ! рдФрд░ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдмрдЬрд╛рдп рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
[^ \ 0] , - рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЬреЛ рд╢реВрдиреНрдп (рд╢реВрдиреНрдп) рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╣реБрд╣? рдпрд╣ рд╕рд┐рд░реНрдл
[^] рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрд╣рд▓реЗ, рд▓рдВрдмреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ - рдПрдХ рдкрд╛рд╢, рд╣рдо рдкрд╛рд░реНрд╕рд░ рдХреЛрдб рдХреЙрд▓ рдХреА рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рд▓реВрдк рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ - рд╡рд░реНрддрдорд╛рди рдкрд╛рд░реНрд╕рд░ рдХреЛрдб рдореЗрдВ, <script *> ... </ script> рдХреЗ рдмреАрдЪ рдХреЛрдб рдХреЛ рдЦреАрдВрдЪрдХрд░ рдХреЛрдб рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рд▓реВрдк рдХреА рджреВрд╕рд░реА рдФрд░ рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ - рдбреЗрдЯрд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╣рдо vm рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдкрд╛рд░реНрд╕рд░ рдХреЙрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рдореЗрдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕рдиреЗ рд╣рдорд╛рд░реА JSON рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреБрдВрдЬреА рдЬреА рдХреЗ рдмрд┐рдирд╛ reg рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд╕рдореНрдорд┐рд▓рд┐рдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкреВрд░реЗ рдХреЛрдб рдХреЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред
рд╣рдорд╛рд░реА start.js рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рд╣реИ, рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рджреГрд╢реНрдп рд╣реИ:
var http = require ( ' http ' ) ;
var fs = require ( ' fs ' ) ;
var vm = require ( ' vm ' ) ;
var host = {
addr : ' 127.0.0.1 ' ,
port : 8070
} ;
var jsonExport = {
title : ' ' ,
list : [
{ name : ' ' , msg : ' ' } ,
{ name : ' ' , msg : ' ' } ,
{ name : ' ' , msg : ' ! ' }
]
} ;
var server = http . createServer ( function ( request , response ) {
response . writeHead ( 200 , { ' content-type ' : ' text/html; charset=utf-8 ' } ) ;
fs . readFile ( ' ./template.html ' , function ( err , data ) {
var data = data . toString ( ) ;
var dataArr = data . match ( / \<script type=(nodejs|'nodejs'|"nodejs")\>([^\0]+?)< \/ script\> /gi m ) ;
for ( var i = 0 ; i < ( dataArr . length | | 0 ) ; i + + ) {
var code = dataArr [ i ] . replace ( / ^\<script([^\>]+)\>([^\0]+?)< \/ script\>$ /i m , ' $2 ' ) ;
data = data . replace ( / \<script type=(nodejs|'nodejs'|"nodejs")\>([^\0]+?)< \/ script\> /i m ,
vm . runInNewContext ( code , jsonExport ) ) ;
}
response . end ( data ) ;
} ) ;
} ) ;
server . listen ( host . port , host . addr ) ;
console . log ( ' : ' + host . addr + ' : ' + host . port ) ;
FractalizeR's HabraSyntax Source Code Highlighter .
рдФрд░ рдлрд┐рд░, рджреЛ рдмрд╛рд░ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдкреВрд░реЗ рдХреЛрдб рдХреЛ template.html рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд▓реЗрдЖрдЙрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ):
<html >
<head >
<meta http-equiv = " content-type " content = " text/html; charset=utf-8 " >
<title > <script type = " nodejs " > title ; </script > </title >
</head >
<body >
<h1 > <script type = " nodejs " > title ; </script > </h1 >
<script type = " nodejs " >
var out = ' ' ;
out + = ' <ul>\n ' ;
for ( var i = 0 ; i < list . length ; i + + ) {
out + = ' \t\t<li><b> ' + list [ i ] . name + ' </b> ' + list [ i ] . msg + ' </li>\n ' ;
}
out + = ' \t</ul> ' ;
out ;
</script >
</body >
</html >
FractalizeR's HabraSyntax Source Code Highlighter .
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдЦреБрдж рдЗрд╕ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдЗрдирд╕реЗрдЯ рдмрд╕ рд╣рдорд╛рд░реЗ JSON рд╕рдВрджрд░реНрдн рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдкреНрд░рдореБрдЦ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕реВрдЪреА рдиреАрдЪреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рд╣реИ, рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ рд▓реМрдЯрддрд╛ рд╣реИред
рддреЛ, рдЕрдм рдереЛрдбрд╝рд╛ рдЬрд╛рджреВ, рд╣рдо рд╕рд╛рдВрддреНрд╡рдирд╛ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ:
node start . js
FractalizeR's HabraSyntax Source Code Highlighter .
рд╣рдо
http://127.0.0.1:8070 рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЖрдирдВрдж рд▓реЗрдВ! рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!
PS рдпрд╣ рдордд рднреВрд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рд╕рдВрдЪрд╛рд▓рдХ рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдиреНрдпреВрдирддрд░ рд╣реИред