Përmbajtje:

Faqja e internetit Node.js Pjesa 2: 7 Hapa
Faqja e internetit Node.js Pjesa 2: 7 Hapa

Video: Faqja e internetit Node.js Pjesa 2: 7 Hapa

Video: Faqja e internetit Node.js Pjesa 2: 7 Hapa
Video: Friendzy: Laravel 8 API & Nuxt - Ep.#4 Friendships 2024, Nëntor
Anonim
Faqja e internetit Node.js Pjesa 2
Faqja e internetit Node.js Pjesa 2

Mirësevini në PJESA 2 !!

Kjo është pjesa 2 e mësimit të aplikacionit tim në faqen Node.js. E ndava këtë tutorial në dy pjesë pasi ndan ata që kanë nevojë vetëm për një hyrje të shkurtër dhe ata që duan një mësim të plotë në një faqe në internet.

Unë do të kaloj nëpër krijimin e faqes sime. E juaja mund të jetë e ndryshme, prandaj ndiqni timin dhe mësoni teknikat e përdorura. Pasi të zgjidhni një model të ndryshëm HTML, rrjedha do të jetë pak më ndryshe. Mbani parasysh këtë.

Hapi 1: Struktura e aplikacionit

Struktura e aplikacionit
Struktura e aplikacionit

Pra, faqja ime ndjek gjeneratorin ekspres, megjithatë unë kam përdorur timona dhe jo lodh. Nëse ju pëlqen lodh, shkoni për të! Jade është HTML me dorë të shkurtër pa të gjitha kllapat dhe ndarjet. Nëse nuk e kuptoni që mund të dëshironi të vizitoni youtube dhe të shikoni disa mësime HTML.

Unë preferoj dhe jam më komode me HTML dhe timonet kështu që kam përdorur. Për të krijuar një projekt ekspres me timon drejtoni komandën express.

shpreh --hbs nameofmyapp

Pastaj vazhdoni të ndiqni hapin në Pjesën 1 për instalimin e të gjitha pajisjeve të mesme.

Express krijon një strukturë shumë specifike të aplikacionit dhe një shumë të dobishme aplikacionet më të node.js ndjekin këtë formë me disa ndryshime.

Në foton e bashkangjitur mund të shihni dosje dhe skedarë të ndryshëm, më poshtë përpiqem t'i shpjegoj të gjitha këto.

kosh

Ky është dosja që ekzekutohet së pari kur node.js fillon serverin tuaj. Shikon skedarin www dhe e ndjek këtë skedar për ekzekutim. Skedari www i thotë node.js të fillojë një server në portin 3000 (kjo mund të ndryshojë në pothuajse çdo gjë) dhe të bëjë disa gjëra të tjera si dëgjuesi i ngjarjeve dhe të tjera. Gjëja kryesore e rëndësishme është porti në të cilin është vendosur aplikacioni juaj.

module_nyje

Në këtë dosje është ajo që quhet ndërfaqe e mesme. Pajisjet e mesme më pëlqen të shpjegoj si softuer shtesë për t'i bërë gjërat më të lehta për ju për të koduar. Ato janë në thelb biblioteka të tjera me funksione të paracaktuara për përdorim nga ju. Disa pajisje shtesë të mesme që kam përdorur për këtë projekt ishin Nodemailer, Passport, Nodemon, bycrypt dhe të tjerë.

publike

Këtu do të shkonin të gjitha imazhet, CSS dhe javascript për faqen tuaj të internetit. Këto përdoren drejtpërdrejt nga faqet e internetit.

rrugët

Këto janë rrugë të përcaktuara për faqen tuaj. Të tilla si një faqe në internet, faqe hyrjeje dhe të tjera.

shikime

Siç mund ta shihni, pamjet janë skedarë.hbs ose.handlebars, ose do të funksionojnë, duhet vetëm një manipulim i skedarit app.js. Këto janë faqet tuaja html të timonit që do të shfaqen në shfletues. Paraqitja është skedari juaj kryesor i paraqitjes dhe ndonjëherë është në nën -dosjen e vet të paraqitjes. Skedari kryesor i paraqitjes thërret skedarët tuaj të tjerë të timonit dhe i shfaq ato, kjo do të ketë më shumë kuptim kur të zhyteni në kod.

app.js

Ky është skedari juaj kryesor i aplikacionit, ndonjëherë ky quhet server, varet vetëm nga konfigurimi. Ky skedar ka të gjithë konfigurimin për serverin dhe madje disa funksione të veçanta. Do të jetë gjithashtu një trajtues gabimesh.

paketë.json

Ky skedar është krijuar nga express dhe i tregon npm të gjithë programin e mesëm që dëshironi të përdorni në projektin tuaj. Pasi të ekzekutoni instalimin npm, të gjitha pajisjet e mesme të thirrura në këtë skedar do të instalohen në dosjen node_modules.

Hapi 2: Paraqitni modelin tuaj

Ju mund të krijoni të gjithë HTML -in tuaj nga e para ose mund të përdorni një model. Unë kam përdorur një model për këtë faqe. Faqet e tjera që kam ndihmuar të zhvillohen i kam koduar nga e para. Zgjedhja është e juaja, ky hap shpjegon paraqitjen e modelit.

Aplikacioni im në internet përdor një model bootstrap i cili është i shkëlqyeshëm për të bërë CSS të mahnitshme. Për të gjetur shabllone vizitoni këtë faqe. Siç u tha më parë në hapin e mëparshëm, të gjithë skedarët e nevojshëm css, js dhe img janë nën dosjen publike. Këto skedarë e bëjnë faqen të duket më mirë se teksti i thjeshtë dhe si përdoret imazhi në sit.

Në mënyrë që stili i modelimit të timonit të funksionojë me një shabllon, faqet ndahen në dy pjesë. E para është ajo që referohet si "paraqitja". Paraqitja është vetitë që dëshironi të shfaqen në çdo faqe në internet brenda faqes tuaj. Në rastin tim, ky është titulli, i cili ka shiritin e navigimit dhe fundin, i cili mban pjesë shtesë të navigimit dhe ekranit.

Skedari i paraqitjes dhe skedarët e tjerë të timonit gjenden në dosjen e shikimeve. Unë do të kaloj në një paraqitje më të thjeshtë nga gjeneratori ekspres që keni përdorur më herët për të treguar se si funksionon koncepti, atëherë ju mund të shihni kodin tim dhe t'i krahasoni ato.

Skedari i paraqitjes.handlebars i gjeneruar nga Express

{{title}} {{{body}}}

Magjia e vërtetë e timonëve është në timonet {{titulli}} dhe {{{trupi}}}. Pra, këta të dy veprojnë ndryshe {{title}} është një ndryshore që kalohet nga skedari index.js në rrugë, pasi kalon në shabllon shfaqet. Etiketa {{{body}}} merr atë që quhet ndonjëherë në funksionin render në skedarin tuaj të rrugës js. Në rastin tonë index.js ka këtë linjë:

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

Kjo e quan skedarin "indeks" të asaj që përdorni ndonjëherë, lodh, timon, dhe kështu me radhë, kështu që në rastin tonë index.handlebars.

Indeksi i gjeneruar nga ekspresi.dorezat

{{titulli}}

Mirë se vini në {{title}}

Skedari index.handlebars kalon si një ndryshore në etiketën {{{{body}}} dhe shfaqet në faqen tuaj të internetit.

Kjo ju lejon të keni një pjesë statike të faqes tuaj të internetit dhe një pjesë të ndryshueshme. Kjo i bën titujt dhe fushat e faqeve të këndshme pasi nuk keni nevojë të ri-paraqitni të gjithë faqen, kur ngarkoni një faqe të re, vetëm disa informacione ndryshojnë.

Hapi 3: Formulari i Kontaktit

Forma e Kontaktit
Forma e Kontaktit
Forma e Kontaktit
Forma e Kontaktit
Forma e Kontaktit
Forma e Kontaktit

Kam inkorporuar një formular kontakti në faqen time në internet në mënyrë që çdokush të mund të dërgojë email në faqen time, me pyetje ose komente.

Kjo formë kontakti përdori një pajisje npm të mesme që quhet Node Mailer.

Konfigurimi i Node Mailer

Për të instaluar node-mailer ju vetëm duhet të ekzekutoni kodin më poshtë në skedarin tuaj të nivelit të lartë, në rastin tonë, myapp.

sudo npm instaloni nodemailer

Pasi të jetë instaluar, do t'ju duhet të vendosni disa gjëra në skedarin tuaj app.js.

E para është vetëm varësia, kjo i tregon nyjës që ne planifikojmë të përdorim këtë ndërfaqe të mesme.

var nodemailer = kërkoj ('nodemailer');

E dyta është transportuesi ynë, transportuesi përdoret për t'u lidhur me serverin tuaj të postës, në rastin tim gmail.

// Transportuesi përdoret për të marrë llogari gmail

var transporter = nodemailer.createTransport ({shërbimi: 'gmail', autor: {lloji: 'OAuth2', përdoruesi: '[email protected]', clientId: '139955258255-a3c6ilqu6rtocigde7cbrusicg7j00eh.apps.googleusercontonto, klientë: "Q775xefdHA_BGu3ZnY9-6sP- ', refreshToken:' 1 / 0HfdzyzW3FmnDPqeYkv19_py6zWgMCOqI9DSZ9kQWfc ', accessToken:" ya29. GlvDBGA2Z_coEKjQOnXAnBLbTB0wQmS-sARqNGC3V2UATiywNb34IhFq4d7UQvhTobE6pi83-FB2-OvMWjC-MK-EKPMYmwxFe9AOZ7mY6kurYyQ7e1Mu8m8INxg7'}})

nëse përdorni nodemailer me një server postar tjetër, ju lutemi shikoni këtu për dokumentacion dhe ndihmë.

Disa gjëra do të ndryshojnë nga personi në person: user, clientId, clientSecret. refreshToken, dhe accessToken.

ID -ja juaj e përdoruesit është emaili në të cilin dëshironi të përdorni, unë bëra një të re të quajtur e njëjtë me faqen time.

ClientId, clientSecret, refreshToken dhe accessToken duhet të gjenden përmes llogarisë suaj të Google.

Nëse keni nevojë për më shumë ndihmë, mund ta ndiqni këtë video këtu.

Pasi të jenë plotësuar të gjitha ato fusha, ne do të shtojmë detajet e mesazhit tonë.

Tjetra ne duhet të vërtetojmë që të gjitha fushat në formën tonë janë futur dhe janë përgjigje të vlefshme.

// Express Validatorapp.use (expressValidator ({errorFormatter: funksion (param, msg, value) {var namespace = param.split ('.'), Root = namespace.shift (), formParam = rrënjë; ndërsa (namespace.length) {formParam + = '[' + namespace.shift () + ']';} return {param: formParam, msg: msg, value: value};}}));

Tani duhet të marrim informacion nga formulari ynë i kontaktit në faqen tonë në internet dhe të dërgojmë një mesazh.

// Postoni nga butoni i dorëzimit të kontaktit, duhet të krijoni një faqe në internet me mesazh suksesi për formsapp.post të dorëzuar ('/contact_Form', funksioni (nevoja, res) {// Merrni informacion nga formulari i kontaktit, nga faqja fillestare.hbs var = req.body.name; var email = req.body.email; var telefon = req.body.phone; var mesazh = req.body.message; var mailOptions = {// krijon informacion të përdorur kur dërgoni një mesazh nga: ' Email automatik ', te:' [email protected] ', subjekti:' Formulari i Kontaktit të Uebfaqes: ' + emri, teksti:' Ju keni marrë një mesazh të ri nga formulari i kontaktit të faqes suaj të internetit. / N / n ' +' Këtu janë detajet: / n / n Emri: ' + emri +' / n / nMail: ' + email +' / n / nPel: ' + telefon +' / n / nMesazh: / n ' + mesazh} transporter.sendMail (mailOptions, funksioni (err, res) {if (err) {console.log ('Error');} else {console.log ('Email Dërguar');}}) res.render ('index'); // render faqe e re, shikoni se si ta bëni këtë me mesazhin e suksesit, si faqja e daljes})

Flash

Flash përdoret për të treguar mesazhet pasi të jenë kryer veprimet. Këtë mund ta shihni kur dorëzoni një formular, ose nuk futni një fushë si duhet.

Instaloni flash ashtu si ndërfaqet e tjera npm.

sudo npm instaloni lidh-flash

var flash = kërkoj ('lidh-flash'); // kishte funksionalitet flash për të shfaqur mesazhet në ekran

// Lidh Flashapp.use (flash ());

Aktivizoni flashin i cili shtyn dhe azhurnon mesazhet në faqen në internet. Këto janë mesazhet që thonë gjëra të tilla si suksesi, ose informacioni është futur gabimisht.

// Global Vars

app.use (funksioni (req, res, tjetër) {res.locals.success_msg = req.flash ('success_msg'); res.locals.error_msg = req.flash ('error_msg'); res.locals.error = req.flash ('gabim'); res.locals.user = req.user || null; tjetër ();});

Disa kanë nevojë për ndryshore të lidhura me flashin.

Atje shkoni një formular kontakti të bërë.

Hapi 4: Faqja e Hyrjes

Faqja e hyrjes
Faqja e hyrjes

Kjo ishte vetëm diçka që doja të shihja nëse mund ta bëja dhe ndoshta do ta përdor në të ardhmen. Unë thjesht doja të shpjegoja kodin ashtu siç është në depon time të git.

Pra, kjo pjesë përdor disa pajisje të tjera npm të mesme. Instaloni sa vijon duke përdorur komandat më poshtë.

npm instaloni pasaportën && npm instaloni pasaportën-lokale && npm instaloni bcryptjs

&& ju lejon të ekzekutoni komanda të shumta me një rresht.

Hyrja dhe Përdoruesit

Ju do të duhet të krijoni një skedar login.js dhe user.js nën dosjen e rrugëve tuaja. Kjo do të përdoret për të lejuar krijimin e një përdoruesi, i cili do të ruhet në bazën tonë të të dhënave, dhe do të lejojë përdoruesin të hyjë duke kontrolluar bazën e të dhënave.

përdoruesi.js

var express = kërkojnë ('express'); var router = express. Router (); var pasaporta = kërkoj ('pasaportë'); var LocalStrategy = kërkojnë ('pasaporta-lokale'). Strategjia; var Përdoruesi = kërkon ('../ modele/përdorues'); // Regjistro router.get ('/regjistrohu', funksioni (req, res) {res.render ('regjistrohu');}); // Regjistro përdoruesin router.post ('/regjistrohu', funksioni (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; // Validimi req.checkBody ('emri', 'Emri kërkohet'). notEempty (); req.checkBody ('email', 'Email kërkohet')).notEmpty (); req.checkBody ('email', 'Email nuk është i vlefshëm'). isEmail (); req.checkBody ('username', 'User name is required'). notEempty (); req.checkBody (' fjalëkalim ',' Fjalëkalimi kërkohet '). notEempty (); req.checkBody (' password2 ',' Fjalëkalimet nuk përputhen '). është e barabartë (req.body.password); var gabime = req.validationErrors (); nëse (gabimet) {res.render ('regjistrohu', {gabimet: gabimet});} tjetër {var newUser = Përdorues i ri ({emri: emri, emaili: email, emri i përdoruesit: emri i përdoruesit, fjalëkalimi: fjalëkalimi}); User.createUser (newUser, funksioni (gaboj, përdoruesi) {nëse (gaboj) hedh gabim; console.log (përdoruesi);}); req.flash ('success_msg', 'Je i regjistruar dhe tani mund të identifikohesh'); res.redirect (' /login ');}});

Duke e copëtuar këtë pjesë për pjesë

Së pari përfshijmë të gjitha pajisjet e nevojshme të mesme, pastaj përfshijmë skedarin tonë model i cili shpjegohet më poshtë. Ne kalojmë nga etiketa e regjistrit dhe shfaqim tekstin e timonit të regjistrit. Pastaj vjen funksioni i rëndësishëm. Këto na lejojnë të regjistrojmë një përdorues të ri në bazën tonë të të dhënave. Funksioni kontrollon për t'u siguruar që të gjitha fushat janë të vlefshme dhe të përfshira në formë, nëse jo, do t'i kërkojë ato. Tjetra kontrollon për gabime, dhe nëse nuk ndodhin gabime krijon një përdorues të ri me informacionin e dhënë. Pastaj kthehet në faqen e hyrjes, duke ju lejuar të identifikoheni.

login.js

var express = kërkoj ('shpreh');

var router = express. Router (); var pasaporta = kërkojnë ('pasaportë'); var LocalStrategy = kërkojnë ('pasaporta-lokale'). Strategjia; var Përdoruesi = kërkon ('../ modele/përdorues'); /* MERR listën e përdoruesve. */// Faqja kryesore router.get ('/', funksioni (req, res) {res.render ('login');}); pasaporta.përdorimi (i ri LocalStrategy (funksioni (emri i përdoruesit, fjalëkalimi, i kryer)) {User.getUserByUsername (emri i përdoruesit, funksioni (gaboj, përdoruesi) {nëse (gaboj) hedh gabim; nëse (! përdorues) {kthimi është bërë (null, i rremë, { mesazh: 'Përdorues i panjohur'});} User.comparePassword (fjalëkalim, user.password, funksion (gaboj, isMatch) {nëse (gaboj) hedh gabim; nëse (isMatch) {kthimi është bërë (null, përdorues);} tjetër { kthimi i bërë (null, i rremë, {mesazhi: 'Fjalëkalim i pavlefshëm'});}});});})); pasaporta.serializeUser (funksioni (përdoruesi, i kryer) {bërë (null, user.id);}); pasaporta.deralizoj Përdoruesin (funksioni (id, kryer) {User.getUserById (id, funksioni (gabim, përdoruesi) {bërë (gaboj, përdoruesi);});}); router.post ('/login', pasaporta.authenticate ('local', {successRedirect: '/', failureRedirect: '/login', failureFlash: true}), funksioni (req, res) {res.redirect ('/ pult ');}); router.get ('/logout', function (req, res) {req.logout (); req.flash ('success_msg', 'You are out out'); res.redirect ('/homepage');});

module.exports = router;

Së pari përfshijmë të gjitha pajisjet e nevojshme të mesme, pastaj përfshijmë skedarin tonë model i cili shpjegohet më poshtë. Ne kalojmë nga etiketa e hyrjes dhe shfaqim tekstin e timonit të hyrjes. Ne pastaj përdorim disa funksione të pasaportës për të marrë emrin e përdoruesit dhe fjalëkalimin e futur dhe për t'i kontrolluar ato kundër bazës së të dhënave tona. Ne do të përdorim gjithashtu një fjalëkalim të koduar i cili mund ta bëjë hyrjen pak të ngadalshëm në një pi mjedër. Këtë e shpjegoj më shumë në vijim. Pasi të keni vërtetuar emrin e përdoruesit dhe fjalëkalimin, ju ridrejtoheni në faqen kryesore e cila do të shfaqë pultin kur e vendosim këtë në skedarin tonë të indeksit. Ne gjithashtu shtojmë këtu aftësinë për të dalë.

Siç e përmenda më parë, ne gjithashtu do të duhet të krijojmë një model për të kontrolluar bazën e të dhënave.

Kjo bëhet duke krijuar një dosje nën dosjen tuaj kryesore të aplikacionit të quajtur modele. Në këtë dosje nevojitet edhe një skedar user.js.

modeli/përdoruesi.js

var mongoze = kërkoj ('manguzë');

var bcrypt = kërkoj ('bcryptjs'); // Skema e Përdoruesit var UserSchema = mongoose. Schema ({emri i përdoruesit: {lloji: String, index: true}, fjalëkalimi: {type: String}, email: {type: String}, emri: {type: String}}); var User = module.exports = mongoose.model ('Përdoruesi', UserSchema);

module.exports.createUser = funksioni (përdoruesi i ri, përgjigjja) {

bcrypt.genSalt (10, funksioni (gabim, kripë) {bcrypt.hash (newUser.password, kripë, funksion (gabim, hash) {newUser.password = hash; newUser.save (callback);});}); } module.exports.getUserByUsername = funksioni (emri i përdoruesit, përgjigjja e thirrjes) {var query = {emri i përdoruesit: emri i përdoruesit}; User.findOne (pyetje, kthim në telefon); } module.exports.getUserById = funksioni (id, kthimi i thirrjes) {User.findById (id, kthimi i thirrjes); } module.exports.comparePassword = funksioni (andidPassword, hash, callback) {bcrypt.compare (andidPassword, hash, funksion (err, isMatch) {nëse (gaboj) hedh gabim; callback (null, isMatch);}); }

Ky model përshkruan se si do të duken parametrat tanë të përdoruesit, si dhe mënyrën se si do t'i qasemi atyre. Përmenda më parë se ne do të kodojmë fjalëkalimet tona. kjo ndodh në mënyrë që asnjë fjalëkalim të mos ruhet në bazën e të dhënave në rast të një shkeljeje. Fjalëkalimet janë hash duke përdorur bcrypt të mallrave të mesëm.

Hapi 5: Numëruesi i trafikut

Sporteli i Trafikut
Sporteli i Trafikut

Doja të shikoja sa përdorues unikë vizituan faqen time në internet dhe të numëronin numrin e "goditjeve". Ka shumë mënyra për ta bërë këtë, unë do të shpjegoj se si e kam bërë këtë.

Kjo përdor një koleksion mongodb për të gjetur sa përdorues kanë vizituar faqen time dhe sa herë ka vizituar secili vizitor unik.

Meqenëse ne kemi folur tashmë për ngritjen e një mongoDB nuk do ta kaloj përsëri.

Ju mund të keni nevojë të shtoni dy koleksione në bazën tuaj të të dhënave në mënyrë që të përpiloni. Për ta bërë këtë, ose mund të instaloni RoboMongo nëse përdorni një UI, megjithatë nëse përdorni një mjedër pi pa kokë si unë, do të argëtoheni me komandat e mëposhtme.

Guaska Mongo

Për të redaktuar një db, për të marrë informacion ose për të krijuar një koleksion, do t'ju duhet guaska mongo në një njësi pa kokë.

Vraponi

mongo

Kjo do të hapë guaskën.

Shtoni një koleksion

Në rastin tim, baza e të dhënave quhet loginapp, mund ta emërtoni atë që dëshironi.

përdorni emrinofyourdb

Ne kemi nevojë për një koleksion për të mbajtur të gjithë adresën tonë IP të përdoruesve që vizitojnë faqen tonë.

db.creatCollection ("ip")

Tjetra ne krijojmë një koleksion për të numëruar hitet unike në faqen tonë. Kjo inicohet me një ID dhe numërim duke filluar nga 0.

db.createCollection ("numërimi", {id: "goditësi i numërimit", numërimi: 0})

Ndiqni adresat IP

Për ta bërë këtë, ne do t'i tërheqim përdoruesit IP kur ata të vizitojnë faqen tonë kryesore, të rrisim numrin tonë dhe t'i ruajmë për t'i krahasuar më vonë.

Ne duhet të krijojmë disa modele për të ruajtur skemat tona mongoze dhe të shtojmë disa kod në skedarin tonë homepage.js.

Ne krijojmë count.js dhe ip.js dhe i ruajmë në dosjen e modeleve tona.

Skedari ip.js është vetëm një skemë për adresën tonë IP

var mongoze = kërkoj ('manguzë'); // mbajtësja e paketave për mongo

// Count Schema var IpSchema = mongoose. Schema ({ip: {type: String,}, count: {type: Number,}}); var Ip = moduli.eksportet = mongoose.model ('Ip', IpSchema);

count.js do të thirret nga faqja jonë kryesore për të filluar gjurmimin e goditjes. Kjo është bërë si më poshtë.

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

Count.getCount (koleksioni, ipc, Public_ip, funksioni (numërimi) {

}); count = db.collection ('count'). findOne ({id: "counter counter"}, funksioni (gabim, numërimi) {userCount = count.count; res.render ('homepage', {count: userCount}); }); });

Kjo ndodh sa herë që dikush shkon në faqen tonë, në këtë rast theinternet.onthewifi.com/homepage.

Ai kontrollon IP -në e përdoruesit, ip4 ose ip6, dhe më pas ruan atë vlerë aty ku e dërgon në count.get.collection i cili është një funksion i ruajtur në skedarin tonë count.js.

Pas kontrollimit të veçantisë së përdoruesit, ai kthehet dhe poston vlerën e numërimit në faqen kryesore si një ndryshore e timonit.

Skedari count.js është si më poshtë.

//count.jsvar mongo = kërkoj ('mongodb'); // mbështet bazën e të dhënave var mongoose = kërkoj ('manguzë'); // mbajtësi i paketave për mongo mongoose.connect ('mongodb: // localhost/loginapp'); var db = manguzë.lidhje; var Ip = kërkoj ('../ modelet/ip'); // Count Schema var CountSchema = mongoose. Schema ({id: {type: String,}, count: {type: Number,}}); var Count = module.exports = mongoose.model ('Count', CountSchema); module.exports.getCount = funksioni (numërimi, ipc, Public_ip, kthimi në telefon) {// numërimi është test, funksioni i kthimit të thirrjes ipc.findOne ({ip: Public_ip}, funksioni (gabim, iptest) {nëse (! iptest) // shto një ip të ri nëse jo në bazën e të dhënave, dhe numëruesin e përditësimit {var new_ip = ip i ri ({ip: Public_ip, count: 1}); db.collection ('ip'). ruani (new_ip); // shtoni ip të ri në baza e të dhënave count.update (// përditëso numrin e goditjes {id: "counter counter"}, {$ inc: {count: 1}})} tjetër // përditëso numëruesin specifik të ip, për të parë se kush viziton më shumë {ipc.update ({ip: Public_ip}, {$ inc: {count: 1}})}}); }

Kjo krijon skemën e numërimit dhe funksionin tonë.getCount. Funksioni.getCount kontrollon DB për një ip të përdoruesve dhe nëse e gjen, funksioni rrit numrin e atij përdoruesi, jo numëruesin e goditjes. Sidoqoftë, nëse përdoruesi ip nuk gjendet, ai do të krijojë një objekt të ri koleksioni me ip të përdoruesve dhe do të rrisë numëruesin e goditjes me 1.

Kjo pastaj kthehet dhe shfaqet në faqen në internet.

Aty e keni një numërues goditjeje për ndjekjen e ip.

Hapi 6: Blog

Blog
Blog

Aktualisht po përpiqem të krijoj një blog të përqendruar në interesat e mia në lidhje me softuerin, shtëpitë e zgjuara dhe Polaroids. Kështu krijova një seksion në blog. Blogu përdor faqe statike html dhe kornizën e timonëve. Pasi shikova teknologjitë më të mira për ta bërë më të lehtë blogun, që atëherë kam ridizajnuar faqen time duke përdorur hugo. Hugo është një gjenerator statik html. Unë flas më shumë për këtë në tutorialin e përmendur më poshtë.

Hapi 7: Përfundoi

Atje ju shkoni një tutorial të thelluar në faqen time në internet node.js të strehuar në vend në pi tim mjedër. Nëse keni pyetje ose komente, lërini ato më poshtë.

Shpresoj se kjo i ndihmon të tjerët atje.

Për një qasje të ndryshme ndaj kësaj faqeje duke përdorur hugo, një gjenerator statik i faqeve të internetit shihni tutorialin tim tjetër (së shpejti).

Recommended: