рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЖрдИрдЯреА рд╕рдореБрджрд╛рдп рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рдЪрд╛рд░ рд╣реБрдЖ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, NodeJS, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд╛рдлреА рдЕрдЬреАрдм, рдпрд╣ рдореЙрдбреНрдпреВрд▓рд░, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐, рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ js рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЫреЛрдЯреЗ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдерд╛, рдФрд░ рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рдореИрдВ рдкреАрдПрдЪрдкреА рдореЗрдВ рдПрдХ рдСрдирд▓рд╛рдЗрди рдЧреЗрдо рдХреЗ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдХрдИ рд╢реБрд░реБрдЖрдд рд╡рд╛рд▓реЗ рдЬреЗрдПрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдореИрдВ рдмрд╣реБрдд рдЕрд╕рд╛рдорд╛рдиреНрдп рдерд╛ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдХреЗ рдмрдЬрд╛рдп рддрдерд╛рдХрдерд┐рдд рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдиреЗ Object.prototyp рдФрд░ __proto__ рдХреЗ рд╕рд╛рде рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдмрд╣реБрдд рднреНрд░рдо рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред рдХрдИ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рддрд░рд╣, рдореЗрд░реЗ рд▓рд┐рдП рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рдореБрдЭреЗ "рдкрд░рд┐рдЪрд┐рдд рдУрдУрдкреА" рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдирд╛ рдерд╛ред рдереЛрдбрд╝рд╛ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдиреЛрдбрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВрдиреЗ рдПрдХ рдРрд╕реЗ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ OO рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд, рдмрд╣реБрд░реВрдкрддрд╛, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди (рдмреЗрд╢рдХ, рдпрд╣ рд╕рдм рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╣рдж рддрдХ рдХрд┐ js рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ)ред
рдиреЛрдбрдЬреЗрдПрд╕ рдкрд░ рдХрд╛рдлреА рдХреБрдЫ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╡реЗ рд▓рдЧрднрдЧ рдХрднреА рднреА рдПрдорд╡реАрд╕реА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЗрд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореЙрдбрд▓ рдореБрдЭреЗ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рд▓рд╛рдЧрдд (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛) рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╛рдлреА рдЧрдВрднреАрд░) рдлрд▓ рд▓рдЧреЗрдЧрд╛ред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛
рдХрд╛рд░реНрдп рдореЗрд░реЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдиреЛрдб рдорд╢реАрдиреЛрдВ рдкрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб.рдЬреЗрдПрд╕, рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ - рдХрд╛рдлреА рд╕рд░рд▓ред рдореБрдЭреЗ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдмрд╣реБрдд рдХреЛрдб рдорд┐рд▓рд╛, рдЬрд┐рд╕рдиреЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рдерд╛ред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, Redis рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
-root
--application.js
--config.js
--constants.js
--import_data.js
--slots_module.js
--user_activity.js
--social.js
--node_modules /
--- рдпрд╣рд╛рдБ node.js рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ
рдПрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рд╕рдВрд░рдЪрдирд╛, рд╣реИ рдирд╛? : =)
рд▓реЗрдХрд┐рди рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдмрдврд╝рддреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдпрд╣ рдЙрдореНрдореАрдж рдХрд░реЗрдЧрд╛, рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди 5,000 рд░реЗрдЦрд╛рдУрдВ рддрдХ рдмрдврд╝реЗ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рдФрд░ рдЕрдиреНрдп рдкреНрд░рд╕рдиреНрдирддрд╛рдПрдВ рдереАрдВ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╣рд╛рдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдкрд░ рдЖрдПред рдЙрдмрд▓рддрд╛ рд╣реБрдЖред рдореИрдВрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдФрд░ рдкреБрдирд░реНрдЧрдарди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ (рдУрдЖрд░рдПрдо) рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рд╣реИ рдФрд░ рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдПрдирдУрдбреАрдЬреЗрдПрд╕ рдФрд░ рд░реЗрдбрд┐рд╕ рдХреЗ рд▓рд┐рдП рдУрдЖрд░рдПрдо рдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдиреЛрд╣рдорд╛ рдореЙрдбреНрдпреВрд▓ рдореЙрдбрд▓, рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрд┐рдд рдФрд░ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ (User.js) рдХреЗ рд╡рд┐рд╡рд░рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ
var nohm = require('nohm').Nohm; var redis = require('redis').createClient(); nohm.setClient(redis); nohm.model('User', { properties: { balance: { type: "integer", defaultValue: 0, index: false }, ad_id: { type: "string", index: true }, bonus_games_pending: { type: "boolean", index: false }, chips: { type: "integer", defaultValue: 0 }, source: { type: "string" }, spins_count: { type: "integer", defaultValue: 0 }, mute: { type: "boolean", defaultValue: false }, sound: { type: "boolean", defaultValue: false }, charges_base: { type: "boolean", defaultValue: false }, parent_ref: { type: "string", index: true }, sid: { type: "string", index: true }, bonus_to: { type: "integer", defaultValue: 0 }, points_count: { type: "integer" }, parent_id:{ type: "string", index: true }, invitation_accepted: { type: "string" }, ref_type: { type: "string", index: true }, spins_temporary: { type: "integer" }, enter_date: { type: "integer" }, free_spins: { type: "integer" }, screen: { type: "string" }, last_game: { type: "string" }, startOffer: { type: "boolean", index: true }, last_activity: { type: "integer" }, win_turn: { type: "integer" }, double_game_pending: { type: "integer" }, level: { type: "integer", index: true }, last_spin: { type: "integer" }, uid: { type: "string", index: true }, status: { type: "string" }, bonus_games_temporary: { type: "integer", defaultValue: 0 }, browser: { type: "string" }, builded: { type: string, } }, methods: { getContryFlag: function () { return 'http://example.com/flag_'+this.p('country')+'.png'; }, updateBalance: function (value){ var balance = this.p('balance'); this.p('balance', balance+value); this.save(); }, updateChips: function(value){ var chips = this.p("chips"); this.p("chips", chips+value); this.save(); }, incrSpins: function(){ var spins = this.p('spins_count'); this.p('spins_count', spins+1); this.save(); }, swichMute: function(){ var mute = this.p('mute'); this.p('mute', !mute); this.save(); }, swichSound: function(){ var sound = this.p('sound'); this.p('sound', !sound); this.save(); }, setPointsCount: function (value){ this.p('points_count', value); this.save(); return value; }, incrPointsCount: function(){ var count = this.p('points_count'); this.p('points_count', count+1); this.save(); }, incrSpinsTmp: function(){ var tmp = this.p('spins_temporary'); this.p('spins_temporary', tmp+1); this.save(); }, incrFreeSpins: function(){ var spins = this.p('free_spins'); this.p('free_spins', spins+1); this.save(); }, incrLevel: function(){ var level = this.p('level'); this.p('level', level+1); this.save(); return this.p('level'); } } }); var user = nohm.factory('User'); exports.user = user;
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
var user = require('./UserTest').user; app.get('/', function (req, res) {
рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рдирд┐рд░рдВрддрд░ рд░реЗрдбрд┐рд╕.рд╣реЗрдЯрд▓ () рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдм рд╕реЗ рд╣рдо рдореЙрдбрд▓ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрдмрдВрдз рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
-root
--application.js
--constants.js
--config.js
-рдореЙрдбрд▓ /
--- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
--- Slotmachine.js
--- Event.js
- рдЪрд┐рд▓реНрд▓рд░ /
--- рд╕рд╛рдорд╛рдЬрд┐рдХ .js
--node_modules /
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдХреБрдЫ рдФрд░ рдлрд╛рдЗрд▓реЗрдВ рдереАрдВ, рдХреЛрдб рд╕рдорд░реНрдерди рдХрд╛рдлреА рд╕рд░рд▓ рдерд╛, рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд╛рдлреА рдХрдореА рдЖрдИ, рдФрд░ рдкрдардиреАрдпрддрд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдмрдврд╝ рдЧрдИ! рдЕрдм рдореБрдЭреЗ рдиреВрдбрд▓реНрд╕ рдХреЛ 10 рд╕реНрддрд░ рдХреЗ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдХреЙрд▓рдмреИрдХ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рд╣реИред рд╕рдм рдХреБрдЫ рдкрд╛рд░рджрд░реНрд╢реА, рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдЙрдкрдпреЛрдЧреА рд╕реЗ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд▓реЗрдЦ рдорд┐рд▓реЗрдЧрд╛ред рдЖрд▓реЛрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛!