forum.ge
reklama
FORUM.GE წესები  · დახმარება  · ძებნა  · წევრები  · კალენდარი  · ფოსტა  · ჩატი
Pages: (6) 1 2 [3] 4 5 ... ბოლო »  ( გადავიდეთ პირველ წაუკითხავ წერილზე ) გამოხმაურება · ახალი თემა · ახალი გამოკითხვა

> ნუბური შეკითხვები nodejs - ში
web_nts
EVERYBODY LIES


*******
ჯგუფი: Members
წერილები: 11772
წევრი No.: 11840
რეგისტრ.: 28-July 05

გამოგზავნილია: 15 Nov 2016, 22:42  #49276693      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა
mikey:)
QUOTE
Express ჯობია თუ Sails? ......

რა თმა უნდა ექსპრესი.

Sails ექსპრესზე დგას თვითონ და იმის მეათედი დოკუმენტაცია და რესურსი არ არსებობს რაც ექსპრესს აქვს.


--------------------
სპლიყვი გამოუშვით ფარჩაკებო!
Otory
Insane


*******
ჯგუფი: Members
წერილები: 16585
წევრი No.: 1007
რეგისტრ.: 9-June 02

გამოგზავნილია: 15 Nov 2016, 23:55  #49277357      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა · ვებგვერდი
web_nts
Svani91
მოკლედ სიტუაცია ასეთია:
* თუ რაღაც განმეორებითი სტატიკური კონტენტია ტემპლეიტში, მაშინ ჯობია საბტემპლეიტი გააკეთო და ის დააინკლუდო უბრალოდ, კოდში ვაბშე არაფერი გექნება - გექნება მხოლოდ ტემპლეიტში (მგონი ეს არის შენი შემთხვევა);
* თუ რაღაც განმეორებითი დინამიური კონტენტია (მაგალითად დალოგინებული იუზერის სახელი, breadcrumbs, ან რაიმე მსგავსი) - მაშინ სასურველია რომ მიდლვეარი გამოიყენო მისი გენერირებისთვის (ეს ალბათ ისედაც ასე იქნება) და res.locals გამოიყენო;
* თუ რაღაც განმეორებითი დინამიური კონტენტია მაგრამ რატომღაც (?? არ წარმომიდგენია რა შემთხვევა შეიძლება იყოს, really...) მიდლვეარში ვერ ჩასვამ მის გენერირება / პროცესინგს - მაშინ app.locals შეგიძლია გამოიყენო. დედამიწა არ ჩამოიქცევა და ქართველობას არავინ წაგვართმევს გლობალები (ნუ, მეტ-ნაკლებად) გამოვიყენოთ, ასევე სქოუფის პრობლემა არ იქნება, რადგან მთლად გლობალი არაა - "ლოკალური გლობალია", მაგრამ (!) ცუდი (99%) არქიტექტურის მაჩვენებელია. შეიძლება არის რამე გამონაკლისი სადაც ნაღდად საჭიროა, მაგრამ არაფერი არ მაფიქრდება ახლა...

ვოტ ტაკ )))


--------------------
Over 9000!
Svani91
Super Crazy Member


******
ჯგუფი: Moderators
წერილები: 7329
წევრი No.: 73460
რეგისტრ.: 4-November 08

გამოგზავნილია: 16 Nov 2016, 00:53  #49277782      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა
web_nts

CODE

if (templates[engine]) {
       if (templates[engine][name]) {
           if (engine === 'ejs') {
               response = ejs.render(templates[engine][name], data);
           } else if (engine === 'mustache') {
               response = mustache.render(templates[engine][name], data);
           }
       }
   }


ეს template layer გასაგებია და მომეწონა, მაგას გამოვიყენებ აწი. ვიუ ენჯინის ვარიაცია ან საერთოდ შეცვლა რო დაგჭირდეს, მარტივად მოხდება წესით. რატო უნდა დამჭირდეს არ ვიცი მარა მაინც

მე მინდოდა რო ყოველ როუტში, ესე არ გამეორებულიყო headerData

CODE

var data = {
       title: 'ejsCustom',
       headerData: 'Custom Header Text!!!',
       ejsPage1: {
           content: 'Random content for ejsCustomHeader'
       }
   };


ისე კი, საჭიროა ყველა როუტში - ანუ ის სიტუაცია არაა რო ზოგან იყოს და ზოგან არა
ყველგან უნდა იყოს და სტატიკური არ უნდა იყოს ამავე დროს
და ეს Otory - ს სოლუშენმა გადაწყვიტა
აღარ ვატან არცერთ როუტში და მაქვს წვდომა პირდაპირ, template - ში

ასევე, mustache - ს ეხლა გადავხედე და დავიბენი, ორივე მომწონს smile.gif)

პს

ჩემსავით დამწყებებს, pluralsight - ის 3 თვიანი საბსქრიბშენის დათრევა არის ძალიან ადვილი MS Developer ექაუნთით და გაითვალისწინეთ wink.gif
web_nts
EVERYBODY LIES


*******
ჯგუფი: Members
წერილები: 11772
წევრი No.: 11840
რეგისტრ.: 28-July 05

გამოგზავნილია: 16 Nov 2016, 02:01  #49278190      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა
Svani91
QUOTE
ისე კი, საჭიროა ყველა როუტში - ანუ ის სიტუაცია არაა რო ზოგან იყოს და ზოგან არა
ყველგან უნდა იყოს და სტატიკური არ უნდა იყოს ამავე დროს

შეგიძლია მარტივი HTML მაგალითი დადო? აი რამე ისეთი როგორც ჩემს დადებულ ფაილშია და კონკრეტულად გვაჩვენო ჰედერში რას გულისხმობ smile.gif ვერ მივხვდი user.gif

ejs და mustache კი ორივე ერთად იმიტომ მაქვს რომ უბრალოდ ორივეზე შეგქმნოდა წარმოდგენა და შენთვითონვე რომ შეძლო მომავალში მსგავსი მოდულების შექმნა. საბოლოო ვერსიიდან რომელიც გინდა მარტო ის უნდა დატოვო და იმის მიხედვით დახვეწო ის მოდული. ეს უბრალოდ 20 წუთში დაწერილი მარტივი მაგალითი იყო მთლიანი აპლიკაცია smile.gif

Otory
გეთანხმები თითქმის ყველაფერში smile.gif app.local-ის ნაცვლად მოდულს შევქნიდი მე პირადად და რომელ ფაილშიც დამჭირდებოდა იმაში დავაინქლუდებდი user.gif

აი მაგალითად გვაქვს მარტივი კონფიგი სადაც ვინახავთ რაღაც API იუზერს და გასაღებს.

შენი სოლუშენია რომ შეინახო ასე:
CODE
app.locals.config = { user: 'admini55', key: 'u6Fsjs7Tvev' };

მე შევქმნიდი ფაილს config.js და გავაკეთებდი მოდულს
CODE
module.exports = { user: 'admini55', key: 'u6Fsjs7Tvev' };

და ყველა საჭირო ფაილში დავაინქლუდებდი ამ კონფიგს
CODE
var api = require('./config');

მიჩვევის ამბავია თორემ თეორიულად არც app.locals დაღუპავს პროექტს და არც global თუ ფრთხილად იქნები. უბრალოდ ოდითგანვე თავში მაქვს გამჯდარი რომ გლობალები "ცუდია" და ყოველთვის ვცდილობ შორიდან მოვუარო smile.gif
Svani91
Super Crazy Member


******
ჯგუფი: Moderators
წერილები: 7329
წევრი No.: 73460
რეგისტრ.: 4-November 08

გამოგზავნილია: 16 Nov 2016, 02:05  #49278206      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა
web_nts

აი ეს ფრაგმენტი არის ყველა გვერდისთვის ერთი. მაგრამ შეიცავს ისეთ მონაცემებს, რომელიც რამე სორსიდან უნდა წამოვიდეს

CODE

       <div class="container-fluid top-container">
           <div class="row">
               <div class="container">
                   <div class="row">
                       <div class="social pull-left">
                           <a href="#"> <i class="fa fa-facebook" aria-hidden="true"></i></a>
                       </div>
                       <div class="top-phone pull-right">
                           <i class="fa fa-phone" aria-hidden="true"></i><span>{{custom_data1}}</span>
                       </div>
                       <div class="top-adress pull-right">
                           <i class="fa fa-building" aria-hidden="true"></i><span>{{custom_data2}}</span>
                       </div>
                   </div>
               </div>
           </div>
       </div>


custom_data1 და custom_data2
X2D3T9



*****
ჯგუფი: Members
წერილები: 2137
წევრი No.: 200362
რეგისტრ.: 31-March 15

გამოგზავნილია: 16 Nov 2016, 02:20  #49278261      · პროფილი · პირადი მიმოწერა · ჩატი
თემპლეით ენჯინათ hbs ს არ იყენებთ ექსპრესზე ? რავი მე მოსახერხებელი მეჩვენა .... ვაფშემ jade და მისი ჯანი smile.gif


--------------------
do{
Life.eat();
Life.sleep();
Life.study();
Life.behappy();
}while{ Life.stat() != end }
pixel4ever
Super Member


****
ჯგუფი: Registered
წერილები: 527
წევრი No.: 74282
რეგისტრ.: 11-November 08

გამოგზავნილია: 16 Nov 2016, 03:33  #49278374      · პროფილი · პირადი მიმოწერა · ჩატი
EJS მირჩევნია მე პირადად, ჯავასკრიპტია ფაქტიურად და უფრო ქომფორტულია. Jade-ის ხმარება დავიწყე თავიდან მაგრამ ვერანაირად ვერ შევეჩვიე სინტაქსს.
Svani91
Super Crazy Member


******
ჯგუფი: Moderators
წერილები: 7329
წევრი No.: 73460
რეგისტრ.: 4-November 08

გამოგზავნილია: 16 Nov 2016, 10:00  #49278842      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა
X2D3T9

Angular ს ვიყენებ მე და კონფლიქტი ექნება hbs ს სინტაქსთან თორე ძაან კარგი ჩანს ეგეც
Otory
Insane


*******
ჯგუფი: Members
წერილები: 16585
წევრი No.: 1007
რეგისტრ.: 9-June 02

გამოგზავნილია: 16 Nov 2016, 14:29  #49280446      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა · ვებგვერდი
web_nts
რა თქმა უნდა, სადაც მოდულად გატანა შეიძლება - მოდულად უნდა გაიტანო, მაგრამ app.locals იმას უზრუნველყოფს რომ ტემპლეიტში გადაეცემა ყოველთვის, და
CODE
var api = require('./config');
ეს ხომ მაგას ვერ წყვეტს...
X2D3T9



*****
ჯგუფი: Members
წერილები: 2137
წევრი No.: 200362
რეგისტრ.: 31-March 15

გამოგზავნილია: 16 Nov 2016, 19:55  #49282818      · პროფილი · პირადი მიმოწერა · ჩატი
სერვერი რომ არ დაეკიდოს რამე ჩეპეს შემთხვევაში და გადაუტვირთავად ჩაასწორო კოდი რომელი ბიბლიოთეკაა სანდო?
Svani91
Super Crazy Member


******
ჯგუფი: Moderators
წერილები: 7329
წევრი No.: 73460
რეგისტრ.: 4-November 08

გამოგზავნილია: 16 Nov 2016, 22:08  #49283804      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა
კარგი კურსი ვიპოვე და მივყვები

https://app.pluralsight.com/library/courses...ble-of-contents

ესე 2 კვირაში თუ შემაყვარებდა თავს, არ მეგონა biggrin.gif
* * *
X2D3T9

სერვერის დაკიდებაში რას გულისხმობ, ზუსტად ვერ მივხვდი, მაგრამ გადაუტვირთავად ჩასწორება მგონი ესაა

https://www.npmjs.com/package/nodemon

სტარტი იქნება node - ს მაგივრად nodemon app.js

თუმცა არ ვიცი ეს პროდაქშენზე რამდენად სწორია

This post has been edited by Svani91 on 16 Nov 2016, 22:12
web_nts
EVERYBODY LIES


*******
ჯგუფი: Members
წერილები: 11772
წევრი No.: 11840
რეგისტრ.: 28-July 05

გამოგზავნილია: 16 Nov 2016, 22:53  #49284227      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა
X2D3T9
QUOTE
სერვერი რომ არ დაეკიდოს რამე ჩეპეს შემთხვევაში და გადაუტვირთავად ჩაასწორო კოდი რომელი ბიბლიოთეკაა სანდო?

Svani91
QUOTE
https://www.npmjs.com/package/nodemon

yes.gif
ოღონს ეს მარტო დეველოპმენტის დროს, ხელით რომ არ მოგიწიოს რესტარტი ყოველ ცვლილებაზე.

QUOTE
თუმცა არ ვიცი ეს პროდაქშენზე რამდენად სწორია

პროდაქშენის დროს ნოდემონი შეგიძლია გამოიყენო მაგრამ გაშვებულ საიტზე რომელზეც კლიენტს წვდომა აქვს არ არის კარგი იდეა. რედაქტირება უნდა ხდებოდეს სატესტო სერვერზე და მერე ეშვებოდეს კლიენტისთვის.

პროდაქშენზე უნდა გამოიყენო https://www.npmjs.com/package/forever რომელიც უზრუნველყოფს რომ აპლიკაცია სულ მუშაობდეს, ანუ რამე ფატალური შეცდომა თუ მოხდა ან რამე მიზეზის გამო დაეკიდა აპლიკაცია, ავტომატურად დაარესტარტებს.

forever start app.js

რა თქმა უნდა ხელით რომ არ გიწევდეს ამის გაშვება, ეს ყველაფერი უნდა ჩაჯდეს ლინუქსის სერვისად სტარტაპში. ხვალ დავწერ ცენტოსზე როგორ დავამატოთ ნოდის აპლიკაცია სერვისად, მარტო ნოდითაც და ფორევერითაც.

This post has been edited by web_nts on 16 Nov 2016, 22:54
Roofus
chi


******
ჯგუფი: Members
წერილები: 5856
წევრი No.: 366
რეგისტრ.: 6-October 01

გამოგზავნილია: 17 Nov 2016, 00:44  #49285157      · პროფილი · პირადი მიმოწერა · ჩატი · ვებგვერდი
web_nts
წიგნში ეწერა ფუნქცია spawn რომელსაც შეუძლია გაუშვას executable დამოუკიდებლად თავისი არგუმენტებიანად... და stdin stdout სტრიმი აქვსო...
მოკლედ ამ spawn-ის გამოყენება შეიძლებაო მონიტორინგისთვის.
ანუ ერთი node აპლიკაციიდან მეორის კონტროლი , ამ შემთხვევაში სერვერის.
რესტარტი თუ დაუშვათ ბევრ მეხსიერებას მოიხმარს ან რაიმე კრიტიკული შეცდომაა...

მეორე აპროაჩი იყო შელ სკრიპტის დაწერა.

ხო კიდევ აქ nginx ტუტორიალში გიწერია რამოდენიმე სერვერი და წიგნში იგივე მიზნისთვის http_proxy გამოიყენება.
ანუ ეს პროქსი აკეთებს round robin-ს სერვერებზე... და მთავარი პრობლემა არის სესია.
ანუ დაუშვათ სერვერ 1-ზე გაშვებული სესია სერვერ 2-მა არ იცის...
ამის მოსაგვარებლად კიდევ memcached მოდულს იყენებენ...

პრინციპში არ მესმის ngnix-ის გამოყენების აზრი თუ http_proxy + memcached შეიძლება გაკეთება. (+იგივე ვირტუალ ჰოსტების http_proxy-თ შეიძLება)

ეს 1 წიგნი მოვრჩი... "Learning Node.js A Hands-on Guide to Building Web Applications in java[ertad]script (Marc Wandschneider)" ყველა ნუბს ურჩევ...
ეხლა დამრჩა Practical Node.js და Professional Node.js biggrin.gif

up.gif

This post has been edited by Roofus on 17 Nov 2016, 00:52


--------------------
ხელმოწერის მოსაფიქრებლად კრეატიულობა არ მყოფნის...

http://saba.longevity.ge - სულხან-საბა ორბელიანის ქართული ლექსიკონი
web_nts
EVERYBODY LIES


*******
ჯგუფი: Members
წერილები: 11772
წევრი No.: 11840
რეგისტრ.: 28-July 05

გამოგზავნილია: 17 Nov 2016, 02:14  #49285627      · პროფილი · პირადი მიმოწერა · ჩატი · ელფოსტა
QUOTE
http_proxy

http_proxy ვებ სერვერი არ არის, Nginx-ს პროქსის ფუნქციის გარდა უამრავი პლიუსი აქვს. ჰედერების, დომენების და სუბდომენების მართვა, მოთხოვნების რაოდენობის და ზომების ლიმიტირება, სტატიკურ ფაილებთან მუშაობა, უმარტივი SSL კონფიგურაცია და ასე შემდეგ. პროდუქციაში ჩაშვებულ აპლიაკაციაში კლიენტს პირველი უნდა შეხვდეს ვებ სერვერი რომელიც შემდეგ გადაანაწილებს მოთხოვნებს, უზრუნველყოფს SSL-ს და შემდეგ რა პორტზე და სერვერზეც გინდა გადაამისამარათებს smile.gif პატარა დატვირთვაზე თვითონ ნოდიც გაქაჩავს ვებ სერვერად, მაგრამ რაც უფრო იზრდება მოთხოვნა მით უფრო აცნობიერებ გამოცდილი ვებ სერვერის უპირატესობას.

ზოგადად პროქსირება, ლოად ბალანსიც და SSL-ი, პირდაპირ ნოდიდანაც შეიძლება. მეოთხმოცე პორტზე ადმინისტრატორის პრივილეგიიანი ექაუნთით გაუშვებ ერთ აპლიკაციას რომელიც შემდეგ ასინქრონული http მოთხოვნებით გადაანაწილებს სხვადასხვა პორტებზე არსებულ ნოდის აპლიკაციებზე მოთხოვნებს... მაგრამ რატომ? smile.gif ვერასოდეს ვერ მიაღწევ Nginx-ის ან Apache-ს დონის რენტაბელურობას (ფუნქციონალურობაზე რომ არაფერი ვთქვათ).

სესიებს რაც შეეხება, საერთოდ არ არის საჭირო. თუ აპლიკაცია სესიებზეა დამოკიდებული, ვერასდორს ვერ მიაღწევს ულიმიტო ზრდის შესაძლებლობას. როდესაც სერვერების რაოდენობის ავტომატიზირებულ ზრდაზე და შემცირებაზეა საუბარი, მარტო ნოდის სესიებია პრობლემა? smile.gif AES256-ით რამოდენიმეჯერ დაკრიპტული cookies + ბრაუზერის სესიები (ოღონდ არა PHP-ს გაგებით სერვერზე ფიზიკურად შენახული სესიები).. ნოდის crypto მოდულით AWS-ის ყველაზე სუსტი სერვერით, კლიენტის ნებისმირი საჭირო ინფოს 10-ჯერ დაკრიპტვას (თითოეულ ჯერზე უნიკალური რენდომ სტრინგის ინექციით) და მერე მის უკან აღდგენას ჭირდება ზუსტად 1 მილიწამი. რა საჭიროა სტანდარტული გაგებით სესია როდესაც ასეთი რამე შეგიძლია და ასე სწრაფად?

This post has been edited by web_nts on 17 Nov 2016, 02:33
Roofus
chi


******
ჯგუფი: Members
წერილები: 5856
წევრი No.: 366
რეგისტრ.: 6-October 01

გამოგზავნილია: 17 Nov 2016, 03:12  #49285786      · პროფილი · პირადი მიმოწერა · ჩატი · ვებგვერდი
web_nts
ქუქიების და ცვლადების გაგებით ვთქვი სესია...
ანუ ერთ სესიაში თუ იუზერი დალოგინდა მეორე სერვერზე ეგ არ აისახება ანუ... ვერ... თუ როგორცაა gigi.gif

ესეიგი nginx war.gif გასაგებია.

This post has been edited by Roofus on 17 Nov 2016, 03:12
0 წევრი ათვალიერებს ამ თემას (0 სტუმარი და 0 უჩინარი წევრი)
0 წევრი:
Topic Options Pages: (6) 1 2 [3] 4 5 ... ბოლო » გამოხმაურება · ახალი თემა · ახალი გამოკითხვა

 



ფორუმის სერვერების განთავსებას და ინტერნეტთან კავშირს უზრუნველყოფს: CLOUD9
[ Script Execution time: 0.0350 ]   [ 13 queries used ]   [ GZIP Disabled ]