Now.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Node.js рдореЗрдВ рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓

рдкрд░рд┐рдЪрдп


рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП Node.js рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
Now.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ


Now.js - рд╕реЙрдХреЗрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ Node.js рдореЙрдбреНрдпреВрд▓, рдЬреЛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░, рдЖрдк рди рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕рд╛рдЭрд╛ рдЪрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕ рдиреНрдпреВрдирддрдо рдХреЛрдб рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджреВрд░рд╕реНрде рдХреЙрд▓ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб

rpc = require " now "
rpc_channel
= rpc . initialize httpServer
rpc_channel
. now . myVariable = " some value "
rpc_channel
. now . distribute = ( message ) - >
rpc_channel
. now . receive @now . name , message
FractalizeR's HabraSyntax Source Code Highlighter .

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
  1. рдЕрдм рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓
  2. рд╣рдо рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ Node.js рд╕рд░реНрд╡рд░ (http.Server) рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рдХрд░рдХреЗ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдирд▓ рдмрдирд╛рддреЗ рд╣реИрдВ
  3. рдкреНрд░рд╛рдкреНрдд рдЪреИрдирд▓ рдореЗрдВ рдЕрдм рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд░ myVariable рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
  4. рд╣рдо рд╡рд┐рддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЕрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  5. рд╡рд┐рддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ

рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ

console . log ( now . myVariable ) ;
now
. receive = function ( message ) {
$
( " #messages " ) . append ( " <br> " + message ) ;
}
$
( " #send-button " ) . click ( function ( ) {
now
. distribute ( $ ( " #text-input " ) . val ( ) ) ;
} ) ;
FractalizeR's HabraSyntax Source Code Highlighter .

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

Now.js рдФрд░ Kiss.js рдХреЗ рд╕рд╛рде рдПрдХ рдЪреИрдЯ рд▓реЗрдЦрди


рдирд┐рдпрдВрддреНрд░рдХ

kiss = require " kiss.js "
rpc
= kiss . controllers . rpc
class MyController
@on_app_started
= ( app ) - >
app
. rpc_channel . now . distributeMessage = ( message ) - >
gr
= rpc . getGroup @now . room
gr
. removeUser @user . clientId
gr
= rpc . getGroup @now . new_room
gr
. addUser @user . clientId
@now
. room = @now . new_room
gr
. now . receiveMessage @now . name , message
@
index = ( req , res ) - >
context
= { template_ name : " chat.html " }
v
= new kiss . views . TextViewer ( )
v
. render req , res , context
exports
. MyController = MyController
FractalizeR's HabraSyntax Source Code Highlighter .

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

рдЧреНрд░рд╛рд╣рдХ

$ ( document ) . ready ( function ( )
{
now
. name = " user " ;
now
. room = " room 1 " ;
function send ( )
{
now
. name = $ ( ' <div/> ' ) . text ( $ ( " #username " ) . val ( ) ) . html ( ) ;
now
. new_room = $ ( ' <div/> ' ) . text ( $ ( " #room " ) . val ( ) ) . html ( ) ;
var html = $ ( ' <div/> ' ) . text ( $ ( " #text-input " ) . val ( ) ) . html ( ) ;
now
. distributeMessage ( html ) ;
$
( " #text-input " ) . val ( " " ) ;
}
$
( " #send-button " ) . click ( send ) ;
$
( " #text-input " ) . keypress ( function ( e )
{
if ( e . keyCode = = 13 ) send ( ) ;
} ) ;
now
. receiveMessage = function ( name , message )
{
$
( " <li><h3> " + name + " </h3><p><strong> " + message + " </strong></p></li> " ) . prependTo ( " #messages " ) ;
$
( ' #messages ' ) . listview ( ' refresh ' ) ;
}
} ) ;
FractalizeR's HabraSyntax Source Code Highlighter .

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

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо Now.js рдХреЗ рд╕рд╛рде рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рд╕реЗ рдЪрд░ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрджрд░реНрдн


рдбреЗрдореЛ
рд╕реНрд░реЛрдд рдХреЛрдб рдЪреИрдЯ рдХрд░реЗрдВ
Now.js
Socket.io
Kiss.js

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


All Articles