Turinys:

„Node.js“tinklalapis 2 dalis: 7 veiksmai
„Node.js“tinklalapis 2 dalis: 7 veiksmai

Video: „Node.js“tinklalapis 2 dalis: 7 veiksmai

Video: „Node.js“tinklalapis 2 dalis: 7 veiksmai
Video: CS50 2013 - Week 8 2024, Lapkritis
Anonim
„Node.js“tinklalapio 2 dalis
„Node.js“tinklalapio 2 dalis

Sveiki atvykę į 2 DALĮ !!

Tai yra mano svetainės „Node.js“programos vadovo 2 dalis. Aš suskirstiau šią pamoką į dvi dalis, nes ji atskiria tuos, kuriems reikia tik trumpo įvado, ir tuos, kurie nori išsamios pamokos tinklalapyje.

Aš ketinu sukurti savo svetainę. Jūsų gali skirtis, todėl sekite mano ir išmokite naudojamų metodų. Kai pasirinksite kitą HTML šabloną, srautas bus šiek tiek kitoks. Turėkite tai omenyje.

1 veiksmas: programos struktūra

Programos struktūra
Programos struktūra

Taigi mano svetainė seka greitąjį generatorių, tačiau aš naudoju vairą, o ne nefritą. Jei tau patinka nefritas, eik! „Jade“yra trumpas rankinis HTML be visų skliaustų ir „div“. Jei nesuprantate, kad galbūt norėsite apsilankyti „YouTube“ir pažiūrėti keletą HTML vadovėlių.

Man labiau patinka ir man patogiau naudoti HTML ir vairą, todėl būtent tai ir naudojau. Norėdami sukurti greitąjį projektą su vairu, paleiskite komandą „express“.

išreikšti -„hbs myofp“

Tada ir toliau atlikite 1 dalyje nurodytą žingsnį, kad įdiegtumėte visą vidurinę įrangą.

„Express“sukuria labai specifinę programų struktūrą ir labai naudingą, kai dauguma „node.js“programų laikosi šios formos su tam tikrais variantais.

Pridedamoje nuotraukoje galite pamatyti skirtingus aplankus ir failus, toliau bandau paaiškinti visa tai.

šiukšliadėžė

Tai aplankas, kuris paleidžiamas pirmiausia, kai node.js paleidžia jūsų serverį. Jis žiūri į www failą ir seka šį failą vykdymui. Www failas nurodo „node.js“paleisti serverį prie 3000 prievado (tai gali pasikeisti į beveik viską) ir atlikti kai kuriuos kitus veiksmus, pvz., Įvykių klausytoją ir pan. Svarbiausias dalykas yra prievadas, kuriame nustatyta jūsų programa.

mazgas_moduliai

Šiame aplanke yra tai, kas vadinama vidutine. Vidurinė įranga Man patinka paaiškinti kaip papildomą programinę įrangą, kad būtų lengviau koduoti. Iš esmės tai yra kitos bibliotekos su funkcijomis, iš anksto sukurtomis jums naudoti. Šiam projektui naudoju papildomą vidutinę įrangą-„Nodemailer“, „Passport“, „Nodemon“, „bycrypt“ir kt.

viešas

Čia bus rodomi visi jūsų svetainės vaizdai, CSS ir „JavaScript“. Juos tiesiogiai naudoja tinklalapiai.

maršrutus

Tai nustato jūsų svetainės maršrutus. Pavyzdžiui, pagrindinis puslapis, prisijungimo puslapis ir kt.

Peržiūrėjo

Kaip matote, rodiniai yra.hbs failai arba.handlebars, arba jie veiks, tereikia šiek tiek manipuliuoti failu app.js. Tai jūsų vairo html puslapiai, kurie bus rodomi naršyklėje. Išdėstymas yra jūsų pagrindinis maketo failas ir kartais yra jo išdėstymo antriniame aplanke. Pagrindinis išdėstymo failas iškviečia kitus jūsų vairo failus ir juos rodo, tai bus prasmingiau, kai pasinersime į kodą.

app.js

Tai yra jūsų pagrindinis programos failas, kartais tai vadinama serveriu, tiesiog priklauso nuo sąrankos. Šiame faile yra visa serverio konfigūracija ir net kai kurios specialios funkcijos. Tai taip pat bus klaidų tvarkytojas.

package.json

Šis failas sukurtas naudojant „express“ir npm nurodo visą tarpinę programinę įrangą, kurią norite naudoti savo projekte. Kai paleisite „npm install“, visa šiame faile iškviesta vidutinė įranga bus įdiegta aplanke „node_modules“.

2 žingsnis: išdėstykite savo šabloną

Galite sukurti visą HTML nuo nulio arba naudoti šabloną. Aš naudoju šabloną šiai svetainei. Kitos svetainės, kurioms padėjau sukurti, užkoduodavau nuo nulio. Pasirinkimas yra jūsų, šis žingsnis paaiškina šablono išdėstymą.

Mano žiniatinklio programoje naudojamas įkrovos šablonas, kuris puikiai sukuria nuostabų CSS. Norėdami rasti šablonus, apsilankykite šioje svetainėje. Kaip minėta ankstesniame žingsnyje, visi reikalingi css, js ir img failai yra viešame aplanke. Šie failai leidžia svetainei atrodyti geriau nei paprastas tekstas ir vaizdai, naudojami svetainėje.

Kad šablono šablono stilius veiktų su šablonu Puslapiai yra padalinti į dvi dalis. Pirmasis yra tai, kas vadinama „išdėstymu“. Išdėstymas yra savybės, kurias norite rodyti kiekviename savo svetainės tinklalapyje. Mano atveju tai yra antraštė, kurioje yra naršymo juosta, ir poraštė, kurioje yra papildomų naršymo ir rodymo elementų.

Išdėstymo failas ir kiti rankenos failai yra rodinių aplanke. Aš peržiūrėsiu paprastesnį išdėstymą iš greitojo generatoriaus, kurį naudojote anksčiau, kad parodytumėte, kaip veikia koncepcija, tada galite pamatyti mano kodą ir juos palyginti.

Express sukurtas layout.handlebars failas

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

Tikroji vairo magija slypi vairuose {{title}} ir {{{body}}}. Taigi šie du veiksmai veikia skirtingai {{title}} yra kintamasis, kuris perduodamas iš failo index.js keliais, kai jis perduodamas šablonui. Žyma {{{body}}} perima tai, kas vadinama jūsų maršruto js failo atvaizdavimo funkcijoje. Mūsų atveju index.js turi šią eilutę:

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

Tai vadinama „indekso“rinkmena apie tai, kas kada nors naudoja jūsų variklį, nefritą, vairą ir pan., Taigi mūsų atveju index.handlebars.

„Express“sukurtas indeksas. rankenos

{{title}}

Sveiki, tai - {{title}}

„Index.handlebars“failas kaip kintamasis perduodamas žymei {{{body}}} ir rodomas jūsų tinklalapyje.

Tai leidžia jums turėti statinę svetainės dalį ir kintamą dalį. Dėl to antraštės ir poraštės yra gražios, nes nereikia iš naujo pateikti viso puslapio, kai įkeliamas naujas puslapis, keičiama tik tam tikra informacija.

3 žingsnis: kontaktinė forma

Kontaktinė forma
Kontaktinė forma
Kontaktinė forma
Kontaktinė forma
Kontaktinė forma
Kontaktinė forma

Į savo tinklalapį įtraukiau kontaktinę formą, kad kiekvienas galėtų išsiųsti el. Laišką mano svetainės el. Paštu su klausimais ar komentarais.

Šioje kontaktinėje formoje buvo naudojama „npm“vidutinė įranga, vadinama „Node Mailer“.

„Node Mailer“nustatymas

Norėdami įdiegti „node-mailer“, jums tereikia paleisti žemiau esantį kodą aukščiausio lygio faile, mūsų atveju, „myapp“.

sudo npm įdiegti nodemailer

Įdiegę turėsite nustatyti kelis dalykus savo faile app.js.

Pirmasis yra tik priklausomybė, tai nurodo mazgui, kad planuojame naudoti šią tarpinę programinę įrangą.

var nodemailer = reikalauti ('nodemailer');

Antrasis yra mūsų transporteris, transporteris naudojamas prisijungti prie jūsų pašto serverio, mano atveju - „Gmail“.

// Transporteris naudojamas „Gmail“paskyrai gauti

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

jei naudojate „nodemailer“su kitu pašto serveriu, ieškokite čia dokumentų ir pagalbos.

Keletas dalykų keisis nuo žmogaus iki asmens: user, clientId, clientSecret. refreshToken ir accessToken.

Jūsų userId yra el. Pašto adresas, kurį norite naudoti, sukūriau naują, pavadintą taip pat, kaip mano svetainė.

„ClientId“, „clientSecret“, „refreshToken“ir „accessToken“reikia rasti naudojant „Google“paskyrą.

Jei jums reikia daugiau pagalbos, galite žiūrėti šį vaizdo įrašą čia.

Kai visi šie laukai bus užpildyti, mes pridėsime savo pranešimo informaciją.

Toliau turime patvirtinti, kad visi mūsų formos laukai buvo įvesti ir yra teisingi atsakymai.

// Express Validatorapp.use (expressValidator ({errorFormatter: funkcija (param, msg, value) {var namespace = param.split ('.'), Root = namespace.shift (), formParam = root; while (vardų erdvė.length) {formParam + = '[' + namespace.shift () + ']';} return {param: formParam, msg: msg, value: value};}}));

Dabar turime gauti informaciją iš mūsų tinklalapyje esančios kontaktinės formos ir išsiųsti pranešimą.

// Skelbti iš kontakto pateikimo mygtuko, reikia sukurti pagrindinį puslapį su sėkmingu pranešimu pateiktai formsapp.post ('/contact_Form', function (req, res) {// Gaukite informacijos iš kontaktinės formos, iš homepage.hbs var name = req.body.name; var email = req.body.email; var phone = req.body.phone; var message = req.body.message; var mailOptions = {// sukuria informaciją, naudojamą siunčiant pranešimą iš: ' Automatinis el. Paštas “, adresu:„ [email protected] “, tema:„ Svetainės kontaktinė forma: “+ vardas, tekstas:„ Gavote naują pranešimą iš savo svetainės kontaktinės formos. / N / n ' +' Čia yra išsami informacija: / n / nPavadinimas: ' + vardas +' / n / nE -paštas: ' + el. paštas +' / n / nTelefonas: ' + telefonas +' / n / nPranešimas: / n ' + pranešimas} transporter.sendMail (mailOptions, function (err, res) {if (err) {console.log ('Klaida');} else {console.log ('El. laiškas išsiųstas');}}) res.render ('index'); // render naujas pagrindinis puslapis, panagrinėkite, kaip tai padaryti su sėkmės pranešimu, pvz., atsijungimo puslapis})

Blykstė

„Flash“naudojama pranešimams rodyti atlikus veiksmus. Tai galite pamatyti pateikę formą arba netinkamai įvedę lauką.

Įdiekite „Flash“kaip ir kitas „npm“tarpines programas.

sudo npm įdiegti „connect-flash“

var blykstė = reikalauti ('connect-flash'); // turėjo „Flash“funkciją, kuri būtų rodoma ekrano pranešimuose

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

Įgalinti „Flash“, kuri stumia ir atnaujina žinutes tinklalapyje. Tai pranešimai, kuriuose sakoma, kad sėkmė arba informacija buvo įvesta neteisingai.

// Global Vars

app.use (funkcija (req, res, kitas) {res.locals.success_msg = req.flash ('success_msg'); res.locals.error_msg = req.flash ('error_msg'); res.locals.error = req.flash ('klaida'); res.locals.user = req.user || null; next ();});

Kai kuriems reikia kintamųjų, susijusių su blykste.

Čia eina sudaryta kontaktinė forma.

4 žingsnis: prisijungimo puslapis

Prisijungimo puslapis
Prisijungimo puslapis

Tai buvo tik kažkas, ką norėjau pamatyti, ar galėčiau tai padaryti, ir galbūt panaudosiu tai ateityje. Aš tik norėjau paaiškinti kodą tokį, koks jis yra mano „git“saugykloje.

Taigi ši dalis naudoja dar keletą npm vidurinės įrangos. Įdiekite toliau nurodytas komandas naudodami toliau pateiktas komandas.

npm įdiegti pasą && npm įdiegti pasą-vietinį && npm įdiegti bcryptjs

&& leidžia paleisti kelias komandas vienoje eilutėje.

Prisijungimas ir vartotojai

Po savo maršrutų aplanku turėsite sukurti failą login.js ir user.js. Tai bus naudojama norint sukurti vartotoją, kuris bus saugomas mūsų duomenų bazėje, ir leisti vartotojui prisijungti tikrinant duomenų bazę.

user.js

var express = reikalauti ('express'); var router = express. Router (); var pasas = reikalauti ('pasas'); var LocalStrategy = reikalauti ('pasas-vietinis'). Strategija; var Vartotojas = reikalauti ('../ modeliai/vartotojas'); // Registruoti maršrutizatorių.get ('/register', function (req, res) {res.render ('register');}); // Registruotis vartotojui router.post ('/register', function (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; // Patvirtinimas req.checkBody ('vardas', 'Vardas privalomas'). notEmpty (); req.checkBody ('el. paštas', 'El. pašto adresas būtinas')).notEmpty (); req.checkBody („el. paštas“, „El. pašto adresas negalioja“). isEmail (); req.checkBody („naudotojo vardas“, „Būtinas vartotojo vardas“). notEmpty (); req.checkBody (' slaptažodis “,„ Reikalingas slaptažodis “). notEmpty (); req.checkBody („ password2 “,„ Slaptažodžiai nesutampa “). lygus (req.body.password); var klaidos = req.validationErrors (); if (klaidos) {res.render ('register', {klaidos: klaidos});}} {var newUser = naujas vartotojas ({name: name, email: email, username: username, password: password}); User.createUser (newUser, function (klaida, vartotojas) {if (klaida) išmesti klaidą; console.log (vartotojas);}); req.flash ('success_msg', 'Jūs užsiregistravote ir dabar galite prisijungti'); res.redirect (' /Prisijungti'); } });

Sugriauti tai po gabalą

Pirmiausia įtraukiame visą reikalingą vidurinę įrangą, tada įtraukiame savo modelio failą, kuris paaiškinamas toliau. Mes nukreipiame maršrutą iš registro žymos ir rodome registro vairo tekstą. Tada ateina svarbi funkcija. Tai leidžia mūsų duomenų bazėje užregistruoti naują vartotoją. Funkcija patikrina, ar visi laukai yra teisingi ir įtraukti į formą, jei ne, tai paprašys. Tada ji patikrina, ar nėra klaidų, o jei klaidų neįvyksta, sukuria naują vartotoją su pateikta informacija. Tada jis nukreipia į prisijungimo puslapį, leidžiantį jums prisijungti.

login.js

var express = reikalauti ('express');

var router = express. Router (); var pasas = reikalauti ('pasas'); var LocalStrategy = reikalauti ('pasas-vietinis'). Strategija; var Vartotojas = reikalauti ('../ modeliai/vartotojas'); /* GET vartotojų sąrašą. */// Pagrindinis puslapis router.get ('/', function (req, res) {res.render ('login');}); pass.use (new LocalStrategy (funkcija (naudotojo vardas, slaptažodis, padaryta) {User.getUserByUsername (naudotojo vardas, funkcija (klaida, vartotojas) {if (err) thro err; if (! user) {return done (null, false, { pranešimas: 'Nežinomas vartotojas'});} User.comparePassword (slaptažodis, user.password, funkcija (err, isMatch) {if (err) mesti klaidą; if (isMatch) {return done (null, user);} else { grąžinimas atliktas (null, false, {message: 'Neteisingas slaptažodis'});}});}};})); pass.serializeUser (funkcija (naudotojas, padaryta) {padaryta (null, user.id);}); pass.deserializeUser (funkcija (id, padaryta) {User.getUserById (id, funkcija (klaida, vartotojas) {padaryta (klaida, naudotojas);});}); router.post ('/login', pass.authenticate ('local', {successRedirect: '/', failedRedirect: '/login', failFlash: true}), funkcija (req, res) {res.redirect ('/ prietaisų skydelis ');}); router.get ('/logout', function (req, res) {req.logout (); req.flash ('success_msg', 'Jūs atsijungę'); res.redirect ('/homepage');});

module.exports = maršrutizatorius;

Pirmiausia įtraukiame visą reikalingą vidurinę įrangą, tada įtraukiame savo modelio failą, kuris paaiškinamas toliau. Mes nukreipiame maršrutą iš prisijungimo žymos ir rodome prisijungimo prie vairo tekstą. Tada mes naudojame kai kurias paso funkcijas, kad paimtume įvestą vartotojo vardą ir slaptažodį ir patikrintume juos pagal mūsų duomenų bazę. Mes taip pat naudosime užšifruotą slaptažodį, kuris gali šiek tiek sulėtinti prisijungimą prie aviečių pi. Toliau tai paaiškinu plačiau. Patvirtinus vartotojo vardą ir slaptažodį, būsite nukreipti į pagrindinį puslapį, kuriame bus rodomas prietaisų skydelis, kai tai nustatysime savo indekso faile. Čia taip pat pridedame galimybę atsijungti.

Kaip jau minėjau, mes taip pat turėsime sukurti modelį, kad patikrintume duomenų bazę.

Tai daroma sukuriant aplanką po pagrindiniu programos aplanku, vadinamu modeliais. Šiame aplanke taip pat reikia failo user.js.

modelis/user.js

var mongoose = reikalauti ('mongoose');

var bcrypt = reikalauti ('bcryptjs'); // Vartotojo schema var UserSchema = mongoose. Schema ({naudotojo vardas: {tipas: eilutė, indeksas: tiesa}, slaptažodis: {tipas: eilutė}, el. Paštas: {tipas: eilutė}, vardas: {tipas: eilutė}}); var Vartotojas = module.exports = mongoose.model ('Vartotojas', UserSchema);

module.exports.createUser = funkcija (naujas vartotojas, atšaukimas) {

bcrypt.genSalt (10, funkcija (klaida, druska) {bcrypt.hash (newUser.password, druska, funkcija (klaida, maiša) {newUser.password = maiša; newUser.save (atgalinis skambutis);});}); } module.exports.getUserByUsername = funkcija (vartotojo vardas, atšaukimas) {var query = {username: username}; User.findOne (užklausa, atgalinis skambutis); } module.exports.getUserById = function (id, callback) {User.findById (id, callback); } module.exports.comparePassword = funkcija (kandidato slaptažodis, maiša, atšaukimas) {bcrypt.compare (kandidato slaptažodis, maiša, funkcija (err, isMatch) {if (klaida) mesti klaidą; atgalinis skambutis (null, isMatch);}); }

Šis modelis apibūdina, kaip atrodys mūsų vartotojo parametrai, ir kaip mes juos pasieksime. Anksčiau minėjau, kad šifruosime savo slaptažodžius. tai daroma tam, kad pažeidimo atveju duomenų bazėje nebūtų saugomas nė vieno slaptažodis. Slaptažodžiai yra maišomi naudojant vidutinės įrangos bcrypt.

5 veiksmas: eismo skaitiklis

Eismo skaitiklis
Eismo skaitiklis

Norėjau pamatyti, kiek unikalių vartotojų aplankė mano tinklalapį, ir suskaičiuoti „įvykių“skaičių. Yra daug būdų tai padaryti, aš paaiškinsiu, kaip aš tai padariau.

Tam naudojama „mongodb“kolekcija, skirta stebėti, kiek vartotojų apsilankė mano puslapyje ir kiek kartų apsilankė kiekvienas unikalus lankytojas.

Kadangi jau kalbėjome apie „mongoDB“nustatymą, daugiau to nekartosiu.

Norėdami kompiliuoti, prie savo duomenų bazės gali tekti pridėti dvi kolekcijas. Norėdami tai padaryti, galite įdiegti „RoboMongo“, jei naudojate vartotojo sąsają, tačiau jei naudojate avietę „be galvos“, tokią kaip aš, jums patiks šios komandos.

Mongo apvalkalas

Norėdami redaguoti db, gauti informacijos ar sukurti kolekciją, jums reikės mongo apvalkalo ant įrenginio be galvos.

Bėgti

mongo

Tai atvers apvalkalą.

Pridėti kolekciją

Mano atveju duomenų bazė vadinama loginapp, ją galite pavadinti kaip norite.

naudokite savo vardo vardą

Mums reikia kolekcijos, kad išsaugotume visus mūsų svetainę lankančių vartotojų IP adresus.

db.creatCollection ("ip")

Toliau sukuriame kolekciją, kad suskaičiuotume unikalius mūsų svetainės hitus. Tai inicijuojama su ID ir skaičiavimas prasideda nuo 0.

db.createCollection ("count", {id: "hit counter", count: 0})

Stebėkite IP adresus

Norėdami tai padaryti, mes pritrauksime vartotojų IP, kai jie lankysis mūsų pagrindiniame puslapyje, padidinsime skaičių ir išsaugosime juos, kad vėliau juos palygintume.

Turime sukurti kai kuriuos modelius, kad galėtume saugoti savo mangusų schemas, ir pridėti kodą prie mūsų homepage.js failo.

Mes sukuriame count.js ir ip.js ir saugome juos savo modelių aplanke.

„Ip.js“failas yra tik mūsų ip adreso schema

var mongoose = reikalauti ('mongoose'); // paketų tvarkytojas mongo

// Skaičiuoti schemą var IpSchema = mongoose. Schema ({ip: {type: String,}, count: {type: Number,}}); var Ip = module.exports = mongoose.model ('Ip', IpSchema);

Pagrindinis puslapis paskambins „count.js“ir pradės įvykių stebėjimą. Tai daroma taip, kaip nurodyta toliau.

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

Count.getCount (collection, ipc, Public_ip, function (count) {

}); count = db.collection ('count'). findOne ({id: "hit counter"}), funkcija (klaida, skaičius) {userCount = count.count; res.render ('homepage', {count: userCount}); }); });

Tai atsitinka kiekvieną kartą, kai kas nors eina į mūsų pagrindinį puslapį, šiuo atveju theinternet.onthewifi.com/homepage.

Jis tikrina vartotojo IP, „ip4“arba „ip6“, ir tada išsaugo tą vertę ten, kur ji siunčia ją į count.get.collection, kuri yra funkcija, saugoma mūsų count.js faile.

Patikrinęs vartotojo unikalumą, jis grąžina ir paskelbia skaičiaus reikšmę pagrindiniame puslapyje kaip vairo kintamasis.

„Count.js“failas yra toks.

//count.jsvar mongo = reikalauti ('mongodb'); // palaiko duomenų bazę var mongoose = need ('mongoose'); // paketų tvarkytojas, skirtas mongo mongoose.connect ('mongodb: // localhost/loginapp'); var db = mangusas.jungtis; var Ip = reikalauti ('../ models/ip'); // Skaičiuoti schemą var CountSchema = mongoose. Schema ({id: {type: String,}, count: {type: Number,}}); var Count = module.exports = mongoose.model ('Count', CountSchema); module.exports.getCount = funkcija (skaičius, ipc, Public_ip, callback) {// skaičius yra testas, atgalinio ryšio funkcija ipc.findOne ({ip: Public_ip}, function (klaida, iptest) {if (! iptest) // pridėti naują IP, jei jo nėra duomenų bazėje, ir atnaujinti skaitiklį {var new_ip = new Ip ({ip: Public_ip, count: 1}); db.collection ('ip'). save (new_ip); // pridėti naują IP duomenų bazės count.update (// atnaujinti įvykių skaitiklį {id: "hit counter"}, {$ inc: {count: 1}})} else // atnaujinti konkretų IP skaitiklį, kad pamatytumėte, kas dažniausiai lankosi {ipc.update ({ip: Public_ip}, {$ inc: {count: 1}})}}); }

Taip sukuriama skaičiavimo schema ir mūsų.getCount funkcija. Funkcija.getCount patikrina, ar DB yra vartotojo IP, ir jei ji ją randa, funkcija padidina to vartotojo skaičių, o ne įvykių skaitiklį. Tačiau jei vartotojų IP nerastas, jis sukurs naują kolekcijos objektą su naudotojų IP ir padidins įvykių skaitiklį 1.

Tada jis grąžinamas ir rodomas tinklalapyje.

Čia yra IP stebėjimo smūgių skaitiklis.

6 žingsnis: tinklaraštis

Tinklaraštis
Tinklaraštis

Šiuo metu bandau sukurti dienoraštį, kuris būtų sutelktas į mano interesus apie programinę įrangą, išmaniuosius namus ir „Polaroids“. Taigi sukūriau tinklaraščio skiltį. Tinklaraštyje naudojami statiniai html puslapiai ir vairo sistema. Po to, kai pažvelgiau į geresnes technologijas, kurios palengvintų tinklaraščių rašymą, nuo tada pertvarkiau savo svetainę naudodamas „hugo“. „Hugo“yra statinis html generatorius. Daugiau apie tai kalbu žemiau pamokoje.

7 žingsnis: Baigta

Čia rasite išsamią pamoką mano „node.js“svetainėje, esančioje vietoje mano aviečių pi. Jei turite klausimų ar komentarų, palikite juos žemiau.

Tikiuosi, kad tai padės kitiems.

Jei norite kitokio požiūrio į šią svetainę naudodami „hugo“, statinį tinklalapio generatorių, žr. Kitą mano vadovėlį (netrukus).

Rekomenduojamas: