Mündəricat:
- Addım 1: Tətbiq quruluşu
- Addım 2: Şablonunuzu düzün
- {{başlıq}}
- Addım 3: Əlaqə Formu
- Addım 4: Giriş Səhifəsi
- Addım 5: Trafik sayğacı
- Addım 6: Blog
- Addım 7: Bitdi
Video: Node.js Veb Səhifəsi 2 -ci hissə: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
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
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ə 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
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ı
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
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ə:
Özünüzü Xüsusi, Minimalist Başlanğıc Səhifəsi Edin !: 10 Addım
Özünüzü Xüsusi, Minimalist Başlanğıc Səhifəsi Edin !: COVID-19 bir şeyə çevrildikdən sonra əsasən uzaqdan işə keçməli oldunuzmu? Eyni! Evdən kompüterlərimizlə və İnternet üzərindən işləmək, iş üçün, məktəb üçün və ya hətta əylənmək üçün bir çox veb saytı izləməli olduğumuz deməkdir
Raspberry Pi və Xüsusi Veb Səhifəsi ilə Ledin Parlaqlığının İdarə Edilməsi: 5 Addım
Raspberry Pi və Xüsusi Veb Səhifəsi ilə Ledin Parlaqlığını İdarə Etmək: Php ilə pi -də apache serveri istifadə etməklə, pi ilə eyni şəbəkəyə qoşulmuş istənilən cihazda əldə edilə bilən xüsusi veb səhifəsi olan bir kaydırıcıdan istifadə edərək bir LED -in parlaqlığını idarə etmək üçün bir yol tapdım. .Bunun bir çox yolu var
Saat və Web Səhifəsi Mətn Güncellemesi ilə ESP8266 POV Fan: 8 Addım (Şəkillərlə)
Saat və Veb Səhifə Mətn Güncellemesi olan ESP8266 POV Fan: Bu dəyişkən bir sürətdir, POV (Vizyonun Davamlılığı), Fasiləli olaraq vaxt göstərən Fan və anında yenilənə bilən iki mətn mesajıdır. həm də iki mətni dəyişməyimə imkan verən tək səhifəli bir veb serverdir
Başlayanlar üçün mötərizədən istifadə edərək sadə bir veb səhifəsi necə yaradılır: 14 addım
Başlayanlar üçün mötərizədən istifadə edərək sadə bir veb səhifəsi necə yaradılır: Giriş Aşağıdakı təlimatlar mötərizələrdən istifadə edərək veb səhifəsi hazırlamaq üçün addım -addım təlimat verir. Mötərizələr, veb inkişafına əsas diqqət yetirən bir mənbə kodu redaktorudur. Adobe Systems tərəfindən yaradılmışdır, pulsuz və açıq mənbəli bir proqramdır
ESP8266-01 Veb Səhifəsi: 6 Addım
ESP8266-01 Veb Səhifəsi: Hamıya salam. Bu gün, bu yazıda ESP8266-01 üçün bir web səhifəsi qurmağı öyrənəcəyik. Bu layihəni hazırlamaq çox sadədir və bir neçə dəqiqə çəkir. Dövrə də sadədir və kodu başa düşmək asandır. Arduino IDE -dən istifadə edəcəyik