Mündəricat:

Node.js Veb Səhifəsi 2 -ci hissə: 7 addım
Node.js Veb Səhifəsi 2 -ci hissə: 7 addım

Video: Node.js Veb Səhifəsi 2 -ci hissə: 7 addım

Video: Node.js Veb Səhifəsi 2 -ci hissə: 7 addım
Video: Python quraşdırılması və tətbiqi #kody_az 2024, Iyul
Anonim
Node.js Veb Səhifəsi 2 -ci hissə
Node.js Veb Səhifəsi 2 -ci hissə

2 -ci hissəyə xoş gəldiniz !!

Bu, Node.js veb tətbiqetməmin 2 -ci hissəsidir. Qısa bir təqdimata ehtiyacı olanları və veb səhifəsində tam bir dərs almaq istəyənləri ayırdığından bu təlimatı iki hissəyə ayırdım.

Sayt yaratmağımdan keçəcəyəm. Sizinki fərqli ola bilər, buna görə də mənimkini izləyin və istifadə olunan texnikaları öyrənin. Fərqli bir HTML şablonu seçdikdən sonra axın bir az fərqli olacaq. Bunu yadda saxla.

Addım 1: Tətbiq quruluşu

Tətbiq quruluşu
Tətbiq quruluşu

Beləliklə, saytım ekspress generatoru izləyir, amma yeşimdən çox sükan istifadə etdim. Yeşimdən xoşunuz gəlirsə, gedin! Jade, bütün mötərizələr və divlər olmadan qısa bir HTMLdir. Yutubu ziyarət etmək və bəzi HTML dərslərinə baxmaq istəyə biləcəyinizi başa düşmürsünüzsə.

HTML və sükanı daha çox sevirəm və istifadə edirəm. Sükan ilə ekspress layihə yaratmaq üçün ekspres əmrini işlədin.

express --hbs nameofmyapp

Sonra bütün orta malların quraşdırılması üçün 1-ci hissədəki addımı izləməyə davam edin.

Express çox spesifik bir tətbiq quruluşu yaradır və çox faydalı olan node.js tətbiqləri bu formanı bəzi dəyişikliklərlə izləyir.

Əlavə edilmiş fotoşəkildə fərqli qovluqları və faylları görə bilərsiniz, aşağıda bunları izah etməyə çalışıram.

zibil qabı

Bu, node.js serverinizi işə salanda ilk işləyən qovluqdur. Www faylına baxır və icra üçün bu faylı izləyir. Www faylı node.js -ə 3000 portunda bir server açmağı (bu, hər şeyə dəyişə bilər) və hadisə dinləyicisi və sair kimi başqa şeylər etməyi bildirir. Əsas odur ki, tətbiqinizin qurulduğu liman.

node_modules

Bu qovluqda orta mal adlanır. Orta məmulatları kodlaşdırmağınızı asanlaşdırmaq üçün əlavə proqram kimi izah etmək istəyirəm. Theya, istifadə etməyiniz üçün əvvəlcədən hazırlanmış funksiyaları olan digər kitabxanalardır. Bu layihə üçün istifadə etdiyim bəzi əlavə vasitələr Nodemailer, Passport, Nodemon, bycrypt və digərləri idi.

ictimai

Veb saytınız üçün bütün şəkillərinizin, CSS və javascriptlərinizin gedəcəyi yer budur. Bunlar birbaşa veb səhifələr tərəfindən istifadə olunur.

marşrutlar

Bunlar saytınız üçün marşrutları müəyyənləşdirir. Bir ana səhifə, giriş səhifəsi və s.

baxışlar

Gördüyünüz kimi, görünüşlər.hbs faylları və ya.handlebarsdır, ya da işləyəcək, sadəcə app.js faylının manipulyasiyası lazımdır. Bunlar brauzerdə göstəriləcək sükan html səhifələrinizdir. Layout əsas layout sənədinizdir və bəzən öz layout alt qovluğundadır. Əsas layout faylı digər sükan sənədlərinizə zəng edir və onları göstərir, bu koda daxil olduğumuzda daha məntiqli olacaqdır.

app.js

Bu, əsas tətbiq faylınızdır, bəzən buna server deyilir, yalnız qurulmasından asılıdır. Bu fayl server üçün bütün konfiqurasiyaya və hətta bəzi xüsusi funksiyalara malikdir. Həm də bir səhv idarəçisi olacaq.

paket.json

Bu fayl express tərəfindən yaradılıb və npm -də layihənizdə istifadə etmək istədiyiniz bütün ara proqramları bildirir. Npm install qurduqdan sonra, bu faylda çağırılan bütün orta məhsullar node_modules qovluğuna quraşdırılacaq.

Addım 2: Şablonunuzu düzün

Bütün HTML -ni sıfırdan yarada və ya şablondan istifadə edə bilərsiniz. Bu sayt üçün bir şablon istifadə etdim. İnkişaf etdirdiyim digər saytları sıfırdan kodladım. Seçim sizin ixtiyarınızdadır, bu addım şablon düzeni izah edir.

Veb tətbiqim inanılmaz CSS hazırlamaqda əla olan bir önyük şablonundan istifadə edir. Şablonları tapmaq üçün bu saytı ziyarət edin. Əvvəlki addımda qeyd edildiyi kimi, lazım olan bütün css, js və img faylları ümumi qovluğun altındadır. Bu fayllar, saytın düz mətndən və şəkillərin saytda necə istifadə edildiyindən daha yaxşı görünməsini təmin edir.

Şablonu tərtib edən sükanın şablonla işləməsini təmin etmək üçün səhifələr iki hissəyə bölünür. Birincisi, "layout" olaraq təyin olunan şeydir. Layihə, saytınızdakı hər bir veb səhifədə göstərilməsini istədiyiniz xüsusiyyətlərdir. Mənim vəziyyətimdə bu, naviqasiya çubuğuna malik başlıq və əlavə naviqasiya və ekran hissələri olan altbilgidir.

Layout faylı və digər sükan faylları görünüşlər qovluğundadır. Konsepsiyanın necə işlədiyini göstərmək üçün əvvəllər istifadə etdiyiniz ekspress generatordan daha sadə bir tərtibata keçəcəyəm, sonra kodumu görə və müqayisə edə bilərsiniz.

Layout.handlebars faylını yaradın

{{başlıq}} {{{bədən}}}

Əsl sükan sehrləri {{title}} və {{{body}}} sükanlardadır. Beləliklə, bu iki fərqli şəkildə hərəkət edən {{title}}, index.js faylından marşrutlarda ötürülən, göründüyü şablona keçdikdən sonra dəyişəndir. {{{Body}}} etiketi, marşrutunuzun js faylında göstərmə funksiyasında nə adlanırsa götürür. Bizim vəziyyətimizdə index.js bu xəttə malikdir:

res.render ('index', {title: 'Express', count: userCount});

Bu, indiyə qədər istifadə etdiyiniz şeyin, yeşim, sükan və sair şeylərin indeksi faylını çağırır, buna görə də bizim vəziyyətimizdə index.handlebars.

Express index.handlebars əmələ gətirdi

{{başlıq}}

{{Title}} xoş gəlmisiniz

İndex.handlebars faylı {{{body}}} etiketinə dəyişən kimi ötürülür və veb səhifənizdə göstərilir.

Bu, veb saytınızın statik bir hissəsinə və dəyişən bir hissəsinə sahib olmağınıza imkan verir. Başlıqları və altbilgiləri gözəl edir, çünki bütün səhifəni yenidən göstərmək lazım deyil, yeni bir səhifə yükləyərkən yalnız bəzi məlumatlar dəyişdirilir.

Addım 3: Əlaqə Formu

Əlaqə Forması
Əlaqə Forması
Əlaqə Forması
Əlaqə Forması
Əlaqə Forması
Əlaqə Forması

Əlaqə formunu veb səhifəmə daxil etdim ki, hər kəs sayt e -poçtuna sual və ya şərh yazsın.

Bu əlaqə formu, Node Mailer adlanan npm orta məhsullardan istifadə etdi.

Node Mailer qurmaq

Node-mailer qurmaq üçün aşağıdakı kodu ən yüksək səviyyəli faylınızda, bizim halda myapp-da işə salmalısınız.

sudo npm nodemailer qurun

Quraşdırıldıqdan sonra app.js faylınızda bir neçə şey qurmalısınız.

Birincisi, yalnız asılılıqdır, bu, bu ara proqramdan istifadə etməyi planlaşdırdığımızı bildirir.

var nodemailer = tələb edin ('nodemailer');

İkincisi, bizim daşıyıcımızdır, daşıyıcı poçt serverinizə qoşulmaq üçün istifadə olunur, mənim vəziyyətimdə gmail.

// Transporter gmail hesabı almaq üçün istifadə olunurdu

var transporter = nodemailer.createTransport ({service: 'gmail', auth: {type: 'OAuth2', user: '[email protected]', clientId: '139955258255-a3c6ilqu6rtocigde7cbrusicg7j00eh.apps.google': 'Q775xefdHA_BGu3ZnY9-6sP- "refreshToken: 1 / 0HfdzyzW3FmnDPqeYkv19_py6zWgMCOqI9DSZ9kQWfc, accessToken:" ya29. GlvDBGA2Z_coEKjQOnXAnBLbTB0wQmS-sARqNGC3V2UATiywNb34IhFq4d7UQvhTobE6pi83-FB2-OvMWjC-mk-EKPMYmwxFe9AOZ7mY6kurYyQ7e1Mu8m8INxg7 "}})

Fərqli bir poçt serveri ilə nodemailer istifadə edirsinizsə, sənədlər və kömək üçün bura baxın.

İnsandan insana bir neçə şey dəyişəcək: user, clientId, clientSecret. refreshToken və accessToken.

UserId istifadə etmək istədiyiniz e -poçtdur, saytımla eyni adlı yeni bir e -poçt hazırladım.

ClientId, clientSecret, refreshToken və accessToken Google hesabınız vasitəsilə tapılmalıdır.

Daha çox yardıma ehtiyacınız varsa, bu videonu buradan izləyə bilərsiniz.

Bütün bu sahələr doldurulduqdan sonra mesaj məlumatlarımızı əlavə edəcəyik.

Sonra, formamızdakı bütün sahələrin daxil edildiyini və etibarlı cavablar olduğunu təsdiq etməliyik.

// Express Validatorapp.use (expressValidator ({errorFormatter: funksiya (param, msg, dəyər) {var namespace = param.split ('.')), Root = namespace.shift (), formParam = root; while (namespace.length) {formParam + = '[' + namespace.shift () + ']';} qaytar {param: formParam, msg: msg, value: value};}}));

İndi veb səhifəmizdəki əlaqə formumuzdan məlumat almalı və mesaj göndərməliyik.

// Əlaqə göndərmə düyməsindən göndər, göndərilən formalar üçün uğur mesajı olan bir ana səhifə yaratmalısınız.appost.post ('/contact_Form', funksiya (req, res) {// Əlaqə formasından, ana səhifədən məlumat əldə edin.hbs var name = req.body.name; var email = req.body.email; var phone = req.body.phone; var message = req.body.message; var mailOptions = {// mesaj göndərərkən istifadə olunan məlumatları yaradır: ' Avtomatik E -poçt ', ünvanına:' [email protected] ', mövzu:' Veb sayt Əlaqə Formu: ' + adı, mətn:' Veb saytınızın əlaqə formasından yeni bir mesaj aldınız. / N / n ' +' Burada detallar: / n / nAd: ' + ad +' / n / nE -poçt: ' + e -poçt +' / n / nTelefon: ' + telefon +' / n / nMesaj: / n ' + mesaj} daşıyıcı.sendMail (mailOptions, funksiyası (səhv, res) {if (səhv) {console.log ('Xəta');} başqa {konsol.log ('E -poçt göndərildi');}}) res.render ('indeks'); // göstər yeni ana səhifə, bunu müvəffəqiyyət mesajı ilə necə edəcəyinizə baxın, çıxış səhifəsi kimi})

Flaş

Flash, hərəkətlər edildikdən sonra mesajları göstərmək üçün istifadə olunur. Bir forma təqdim edərkən və ya sahəyə düzgün girmədikdə bunu görə bilərsiniz.

Digər npm ara proqramlar kimi flash quraşdırın.

sudo npm connect-flash quraşdırın

var flash = tələb ('connect-flash'); // ekran mesajlarında göstərmək üçün flash funksiyasına malik idi

// Flashapp.use (flash ()) qoşun;

Veb səhifədəki mesajları itələyən və yeniləyən flaşı aktiv edin. Müvəffəqiyyət kimi şeyləri söyləyən və ya məlumatın səhv daxil edildiyi mesajlardır.

// Qlobal Vars

app.use (funksiya (req, res, next) {res.locals.success_msg = req.flash ('success_msg'); res.locals.error_msg = req.flash ('error_msg'); res.locals.error = req.flash ('səhv'); res.locals.user = req.user || null; next ();});

Bəziləri flaşla əlaqəli dəyişənlərə ehtiyac duyur.

Hazır bir əlaqə formasına keçin.

Addım 4: Giriş Səhifəsi

Giriş Səhifəsi
Giriş Səhifəsi

Bu sadəcə edə biləcəyimi görmək istədiyim və bəlkə də gələcəkdə istifadə edəcəyim bir şey idi. Kodu yalnız git deposumda olduğu kimi izah etmək istədim.

Beləliklə, bu hissə daha bir neçə npm orta məmulat istifadə edir. Aşağıdakı əmrləri istifadə edərək aşağıdakıları quraşdırın.

npm pasportu yüklə & npm pasport-yerli && npm bcryptjs quraşdır

&& bir sətirdə birdən çox əmr işləməyə imkan verir.

Giriş və İstifadəçilər

Marşrutlar qovluğunuzun altında login.js və user.js faylını yaratmalısınız. Bu, verilənlər bazamızda saxlanılacaq bir istifadəçinin yaradılmasına və istifadəçinin verilənlər bazasını yoxlayaraq daxil olmasına icazə vermək üçün istifadə ediləcək.

user.js

var express = tələb ('express'); var yönlendirici = express. Router (); var pasport = tələb edin ('pasport'); var LocalStrategy = tələb edin ('pasport-yerli'). Strategiya; var İstifadəçi = tələb ('../ modellər/istifadəçi'); // Qeydiyyat router.get ('/register', function (req, res) {res.render ('register');}); // İstifadəçi Qeydiyyat router.post ('/register', funksiyası (req, res) {var name = req.body.name; var email = req.body.email; var username = req.body.username; var password = req.body.password; var password2 = req.body.password2; // Doğrulama req.checkBody ('ad', 'Ad tələb olunur'). notEmpty (); req.checkBody ('e -poçt', 'E -poçt tələb olunur')).notEmpty (); req.checkBody ('e -poçt', 'E -poçt etibarlı deyil'). isEmail (); req.checkBody ('istifadəçi adı', 'İstifadəçi adı tələb olunur'). notEmpty (); req.checkBody (' parol ',' Şifrə lazımdır '). notEmpty (); req.checkBody (' password2 ',' Parollar uyğun gəlmir '). bərabərdir (req.body.password); var error = req.validationErrors (); if (səhvlər) {res.render ('qeydiyyatdan keçin', {səhvlər: səhvlər});} başqa {var newUser = yeni İstifadəçi ({ad: ad, e -poçt: e -poçt, istifadəçi adı: istifadəçi adı, parol: parol}); User.createUser (newUser, function (err, user) {if (err) error err; console.log (user);}); req.flash ('success_msg', 'Siz qeydiyyatdan keçdiniz və indi daxil ola bilərsiniz'); res.redirect (' /daxil ol'); } });

Bunu hissə -hissə parçalamaq

Əvvəlcə lazım olan bütün orta malları daxil edirik, sonra aşağıda izah olunan model faylımızı daxil edirik. Qeyd etiketindən yola çıxırıq və qeyd sükan mətnimizi göstəririk. Sonra vacib funksiya gəlir. Bunlar, verilənlər bazamızda yeni bir istifadəçi qeydiyyatdan keçməyimizə imkan verir. Funksiya, bütün sahələrin etibarlı olub olmadığını yoxlayır və formanın daxil edilməsini tələb edir. Sonra səhvləri yoxlayır və heç bir səhv baş vermirsə verilən məlumatlarla yeni bir istifadəçi yaradır. Daha sonra giriş səhifəsinə gedən marşrutlar yenidən daxil olmağa imkan verir.

giriş.js

var express = tələb edin ('ifadə');

var yönlendirici = express. Router (); var pasport = tələb ('pasport'); var LocalStrategy = tələb edin ('pasport-yerli'). Strategiya; var User = tələb ('../ modellər/istifadəçi'); /* İstifadəçilərin siyahısını alın. */// Ana səhifə router.get ('/', funksiyası (req, res) {res.render ('giriş');}); pasport.use (yeni LocalStrategy (funksiya (istifadəçi adı, şifrə, tamamlandı)) {User.getUserByUsername (istifadəçi adı, funksiya (səhv, istifadəçi)) {if (səhv) atma səhv; if (! istifadəçi) {qaytarılma tamamlandı (null, yalan, { mesaj: 'Naməlum İstifadəçi'});} User.comparePassword (parol, user.password, funksiya (err, isMatch) {if (err) atmaq səhv; if (isMatch) {qaytarılma tamamlandı (null, istifadəçi);} başqa { qaytarma tamamlandı (sıfır, yalan, {mesaj: 'Yanlış parol'});}});});})); passport.serializeUser (funksiya (istifadəçi, bitmiş) {tamamlandı (null, user.id);}); passport.deserializeUser (funksiya (id, bitmiş) {User.getUserById (id, funksiya (səhv, istifadəçi) {tamamlandı (səhv, istifadəçi);});}); router.post ('/login', passport.authenticate ('local', {successRedirect: '/', failRedirect: '/login', failFlash: true}), funksiya (req, res) {res.redirect ('/ tablosuna ');}); router.get ('/logout', function (req, res) {req.logout (); req.flash ('success_msg', 'Çıxdınız'); res.redirect ('/ana səhifə');});

module.exports = yönləndirici;

Əvvəlcə lazım olan bütün orta malları daxil edirik, sonra aşağıda izah olunan model faylımızı daxil edirik. Giriş etiketindən yola çıxırıq və giriş sükan mətnimizi göstəririk. Daha sonra daxil edilmiş istifadəçi adını və şifrəni almaq və məlumat bazamızda yoxlamaq üçün bəzi pasport funksiyalarından istifadə edirik. Şifrəli bir şifrə istifadə edəcəyik ki, bu da moruq pi üzərində girişi bir az yavaşlaşdıra bilər. Bunu daha sonra izah edəcəyəm. İstifadəçi adını və şifrəni təsdiqlədikdən sonra, bunu indeks sənədimizdə qurduğumuz zaman tablosunu göstərəcək ana səhifəyə yönləndirilirsiniz. Buradan hesabdan çıxma qabiliyyətini də əlavə edirik.

Daha əvvəl qeyd etdiyim kimi, verilənlər bazasını yoxlamaq üçün bir model də yaratmalıyıq.

Bu, model adlanan əsas tətbiq qovluğunuzun altında bir qovluq yaratmaqla edilir. Bu qovluqda user.js faylı da lazımdır.

model/user.js

var mongoose = tələb ('mongoose');

var bcrypt = tələb edin ('bcryptjs'); // İstifadəçi Şeması var UserSchema = mongoose. Schema ({istifadəçi adı: {type: String, index: true}, parol: {type: String}, e -poçt: {type: String}, ad: {type: String}}); var User = module.exports = mongoose.model ('İstifadəçi', UserSchema);

module.exports.createUser = funksiya (yeni istifadəçi, geri zəng) {

bcrypt.genSalt (10, funksiya (səhv, duz) {bcrypt.hash (newUser.password, duz, funksiya (səhv, hash) {newUser.password = hash; newUser.save (callback);});}); } module.exports.getUserByUsername = funksiya (istifadəçi adı, geri zəng) {var sorğu = {istifadəçi adı: istifadəçi adı}; User.findOne (sorğu, geri zəng); } module.exports.getUserById = funksiyası (id, geri çağırma) {User.findById (id, geri zəng); } module.exports.comparePassword = funksiya (namizədPassword, hash, callback) {bcrypt.compare (namizədPassword, hash, funksiya (səhv, isMatch) {if (səhv) atmaq səhv; geri zəng (null, isMatch);}); }

Bu model istifadəçi parametrlərimizin necə görünəcəyini və onlara necə daxil olacağımızı göstərir. Şifrələrimizi şifrələyəcəyimizdən əvvəl qeyd etdim. Bu, heç kimin şifrəsinin pozulması halında verilənlər bazasında saxlanılmaması üçündür. Parollar orta mallar bcrypt istifadə edərək hashing olunur.

Addım 5: Trafik sayğacı

Trafik sayğacı
Trafik sayğacı

Veb səhifəmi neçə unikal istifadəçinin ziyarət etdiyini görmək və "vurulan" sayını saymaq istədim. Bunun bir çox yolu var, necə getdiyimi izah edəcəyəm.

Səhifəmi neçə istifadəçinin ziyarət etdiyini və hər unikal ziyarətçinin neçə dəfə ziyarət etdiyini izləmək üçün mongodb kolleksiyasından istifadə edir.

Artıq bir mongoDB qurmaqdan bəhs etdiyimiz üçün bir daha keçməyəcəyəm.

Kompilyasiya etmək üçün verilənlər bazanıza iki kolleksiya əlavə etməyiniz lazım ola bilər. Bunu etmək üçün ya bir UI istifadə edərkən RoboMongo quraşdıra bilərsiniz, ancaq mənim kimi başsız moruq pi istifadə edirsinizsə, aşağıdakı əmrləri əylənəcəksiniz.

Mongo qabığı

Bir db redaktə etmək, məlumat əldə etmək və ya kolleksiya yaratmaq üçün başsız bir bölmədə mongo qabığına ehtiyacınız olacaq.

Qaç

monqo

Bu qabığı açacaq.

Kolleksiya əlavə edin

Mənim vəziyyətimdə verilənlər bazasına loginapp deyilir, istədiyinizə ad verə bilərsiniz.

nameofyourdb istifadə edin

Saytımızı ziyarət edən istifadəçilərin bütün ip ünvanlarını saxlamaq üçün bir kolleksiyaya ehtiyacımız var.

db.creatCollection ("ip")

Sonra saytımıza bənzərsiz hitləri saymaq üçün bir kolleksiya yaradırıq. Bu, id ilə sıfırlanır və 0 -dan başlayır.

db.createCollection ("say", {id: "sayğac vur", say: 0})

IP ünvanlarını izləyin

Bunu etmək üçün ana səhifəmizi ziyarət etdikdə istifadəçiləri Ip -ə çəkəcəyik, sayımızı artıracağıq və sonra müqayisə etmək üçün saxlayacağıq.

Mongoose sxemlərimizi saxlamaq üçün bəzi modellər yaratmalı və homepage.js sənədimizə bir kod əlavə etməliyik.

Count.js və ip.js yaradırıq və onları modellər qovluğumuzda saxlayırıq.

İp.js faylı, sadəcə ip ünvanımız üçün bir sxemdir

var mongoose = tələb ('mongoose'); // mongo üçün paket işləyicisi

// Sayt Şeması var IpSchema = mongoose. Schema ({ip: {type: String,}, count: {type: Number,}}); var Ip = module.exports = mongoose.model ('Ip', IpSchema);

hit.js ana səhifəmiz tərəfindən hit izləməyə başlamaq üçün çağırılacaq. Bu aşağıdakı kimi edilir.

//Homepagerouter.get('/ ', funksiyası (req, res) {publicIp.v4 (). Sonra (ip => {Public_ip = ip; console.log ("ipv4:"+ Public_ip); // =>') 46.5.21.123 '}); publicIp.v6 (). Sonra (ip => {console.log ("ipv6" + ip); Public_ip = ip; // =>' fe80:: 200: f8ff: fe21: 67cf ') });

Count.getCount (toplama, ipc, Public_ip, funksiya (say) {

}); count = db.collection ('count'). findOne ({id: "hit counter"}, funksiya (səhv, count) {userCount = count.count; res.render ('ana səhifə', {count: userCount}); }); });

Bu, kimsə ana səhifəmizə hər dəfə daxil olduqda olur, bu halda theinternet.onthewifi.com/homepage.

İstifadəçinin IP4 və ya ip6 IP -ni yoxlayır və sonra da count.js faylımızda saxlanılan bir funksiya olan count.get.collection -a göndərdiyi yerdə həmin dəyəri saxlayır.

İstifadəçinin özünəməxsusluğunu yoxladıqdan sonra hesab dəyərini sükan dəyişən kimi ana səhifəyə qaytarır və göndərir.

Count.js faylı aşağıdakı kimidir.

//count.jsvar mongo = tələb ('mongodb'); // verilənlər bazasını dəstəkləyir var mongoose = tələb ('mongoose'); // mongo mongoose.connect üçün paket işləyicisi ('mongodb: // localhost/loginapp'); var db = mongoose.connection; var Ip = tələb ('../ modellər/ip'); // Count Schema var CountSchema = mongoose. Schema ({id: {type: String,}, count: {type: Number,}}); var Count = module.exports = mongoose.model ('Count', CountSchema); module.exports.getCount = funksiya (count, ipc, Public_ip, callback) {// say testdir, geri çağırma funksiyası ipc.findOne ({ip: Public_ip}, funksiya (səhv, iptest) {əgər (! iptest) // əlavə et verilənlər bazasında deyilsə yeni bir ip və saytı yeniləyin {var new_ip = new Ip ({ip: Public_ip, count: 1}); db.collection ('ip'). save (new_ip); // yeni ip əlavə edin verilənlər bazası count.update (// hit sayacını yeniləyin {id: "hit counter"}, {$ inc: {count: 1}})} başqa // xüsusi ip sayğacını yeniləyin, kimin ən çox ziyarət etdiyini görmək üçün {ipc.update ({ip: Public_ip}, {$ inc: {count: 1}}}}})); }

Bu sayma sxemini və.getCount funksiyamızı yaradır.. GetCount funksiyası DB -ni bir istifadəçi ipi üçün yoxlayır və taparsa, funksiya həmin sayğacı yox, həmin istifadəçinin sayını artırır. Ancaq istifadəçilərin ipi tapılmasa, istifadəçilərinin ipləri ilə yeni bir toplama obyekti yaradacaq və hit sayğacını 1 artıracaq.

Daha sonra geri qaytarılır və veb səhifədə göstərilir.

Orada bir ip izləmə hit sayğacınız var.

Addım 6: Blog

Blog
Blog

Hal -hazırda proqram təminatı, ağıllı evlər və Polaroidlər haqqında maraqlarım üzərində mərkəzləşdirilmiş bir blog hazırlamağa çalışıram. Beləliklə bir blog bölməsi yaratdım. Blog statik html səhifələrindən və sükan çərçivəsindən istifadə edir. Blog yazmağı asanlaşdırmaq üçün daha yaxşı texnologiyaları araşdırdıqdan sonra hugo istifadə edərək veb saytımı yenidən dizayn etdim. Hugo statik bir html generatorudur. Aşağıdakı dərslikdə bu barədə daha çox danışacağam.

Addım 7: Bitdi

Orada mənim moruq pi -də yerli olaraq yerləşdirilən node.js veb saytımda dərindən bir dərs keçəcəksiniz. Suallarınız və ya şərhləriniz varsa bunları aşağıda yazın.

Ümid edirəm ki, bu, başqalarına kömək edəcək.

Hugo istifadə edərək bu sayta fərqli bir yanaşma üçün, statik bir veb səhifə generatoru digər dərsimə baxın (tezliklə).

Tövsiyə: