Мазмұны:

Node.js веб -беті 2 -бөлім: 7 қадам
Node.js веб -беті 2 -бөлім: 7 қадам

Бейне: Node.js веб -беті 2 -бөлім: 7 қадам

Бейне: Node.js веб -беті 2 -бөлім: 7 қадам
Бейне: JavaScript - Полный Курс JavaScript Для Начинающих [11 ЧАСОВ] 2024, Шілде
Anonim
Node.js веб -беті 2 -бөлім
Node.js веб -беті 2 -бөлім

2 бөлімге қош келдіңіз !!

Бұл менің Node.js веб -сайтына арналған қосымшаның 2 -бөлігі. Мен бұл оқулықты екі бөлікке бөлдім, себебі ол қысқаша таныстыруды қажет ететіндер мен веб -бетте толық оқулықты алғысы келетіндерді бөледі.

Мен өз сайтымды құру арқылы өтемін. Сіздікі басқаша болуы мүмкін, сондықтан менікін орындаңыз және қолданылатын техниканы үйреніңіз. Басқа HTML шаблонын таңдағаннан кейін ағын сәл өзгеше болады. Осыны есте сақтаңыз.

1 -қадам: Қолданбаның құрылымы

Қолданба құрылымы
Қолданба құрылымы

Сонымен, менің сайтым экспресс -генератормен жүреді, бірақ мен нефрит емес, руль қолдандым. Егер сізге нефрит ұнаса, оған барыңыз! Jade - бұл барлық жақшалар мен div -ларсыз қысқа HTML. Егер сіз түсінбейтін болсаңыз, сіз YouTube -ке кіріп, кейбір HTML оқулықтарын көргіңіз келуі мүмкін.

Мен HTML мен рульдерді жақсы көремін, сондықтан мен солай қолдандым. Тұтқасы бар экспресс -жобаны құру үшін экспресс командасын орындаңыз.

экспресс -қосымшаның аты

Содан кейін барлық орта өнімдерді орнату үшін 1-бөлімдегі қадамды жалғастырыңыз.

Экспресс өте нақты қолданба құрылымын жасайды және өте пайдалы node.js қосымшалары бұл пішінді кейбір вариациямен ұстайды.

Бекітілген фотода әр түрлі қалталар мен файлдарды көруге болады, төменде мен осының бәрін түсіндіруге тырысамын.

қоқыс жәшігі

Бұл node.js сіздің серверді іске қосқанда бірінші іске қосылатын қалта. Ол www файлына қарайды және орындау үшін осы файлды қадағалайды. Www файлы node.js серверін 3000 портында іске қосуды айтады (бұл кез келген нәрсеге өзгеруі мүмкін) және оқиғаларды тыңдаушы сияқты басқа да әрекеттерді орындауға. Ең бастысы - сіздің қосымшаңыз орнатылған порт.

түйін_модульдері

Бұл қалтада орта тауарлар деп аталады. Орташа құралдар сізге кодты жеңілдету үшін қосымша бағдарламалық жасақтама ретінде түсіндіруді ұнатамын. Олар негізінен сіз үшін алдын ала жасалған басқа кітапханалар. Мен осы жоба үшін қолданған қосымша құралдар Nodemailer, Passport, Nodemon, bycrypt және басқалары болды.

қоғамдық

Бұл жерде сіздің барлық суреттеріңіз, CSS және сіздің веб -сайтыңызға арналған JavaScript болады. Олар тікелей веб -беттерде қолданылады.

маршруттар

Бұл сіздің сайтыңыздың бағыттарын анықтайды. Мысалы, басты бет, кіру беті және басқалар.

көріністер

Көріп отырғаныңыздай,.hbs файлдары немесе.handlebars көріністері жұмыс істейді, бұл тек app.js файлын өңдеуді қажет етеді. Бұл сіздің шолғышта көрсетілетін html парақтары. Орналасу - бұл сіздің негізгі орналасу файлы, кейде оның ішкі орналасу қалтасында болады. Негізгі орналасу файлы сіздің басқа рульдік файлдарға қоңырау шалады және оларды көрсетеді, бұл біз кодқа енген кезде мағыналы болады.

app.js

Бұл сіздің негізгі қолданба файлыңыз, кейде оны сервер деп атайды, тек орнатуға байланысты. Бұл файлда сервердің барлық конфигурациясы және тіпті кейбір арнайы функциялары бар. Бұл сонымен қатар қателерді өңдеуші болады.

package.json

Бұл файл экспресс арқылы жасалады және сіздің жобаңызда пайдаланғыңыз келетін барлық аралық бағдарламалық қамтамасыз етуді npm -ге хабарлайды. Npm install іске қосылғаннан кейін, осы файлда шақырылған барлық қосымша құралдар node_modules қалтасына орнатылады.

2 -қадам: Үлгіні орналастырыңыз

Сіз HTML -дің барлығын нөлден жасай аласыз немесе шаблонды пайдалана аласыз. Мен бұл сайт үшін үлгіні қолдандым. Мен көмектескен басқа сайттар мен нөлден бастап кодтадым. Таңдау сіздікі, бұл қадам шаблонның орналасуын түсіндіреді.

Менің веб -қосымшамда таңғажайып CSS жасауға тамаша жүктеу үлгісі қолданылады. Үлгілерді табу үшін осы сайтқа кіріңіз. Алдыңғы қадамда айтылғандай, барлық қажетті CSS, JS және img файлдары жалпы қалтада. Бұл файлдар сайтты қарапайым мәтін мен суреттердің сайтта қалай қолданылатынына қарағанда жақсы етеді.

Шаблон стилінің шаблонмен жұмыс істеуін қамтамасыз ету үшін беттер екі бөлікке бөлінеді. Біріншісі - бұл «орналасу» ретінде қарастырылатын нәрсе. Орналасу - бұл сіздің сайтыңыздағы әрбір веб -бетте көрсетілгіңіз келетін қасиеттер. Менің жағдайда бұл шарлау тақтасы бар үстіңгі деректеме және қосымша шарлау мен дисплей бөліктері бар төменгі деректеме.

Орналастыру файлы мен басқа да рульдік файлдар көріністер қалтасында болады. Мен тұжырымдаманың қалай жұмыс істейтінін көрсету үшін бұрын пайдаланған экспресс -генератордың қарапайым схемасын қарастырамын, содан кейін сіз менің кодты көріп, оларды салыстыра аласыз.

Layout.handlebars файлын жылдам жасаңыз

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

Шынайы рульдік сиқыр {{title}} және {{{body}}} рульдерінде. Бұл екеуінің әрекеті басқаша {{title}} - бұл index.js файлынан маршруттарда берілетін айнымалы, ол үлгіге жіберілгеннен кейін көрсетіледі. {{{Body}}} тегі маршрут js файлында көрсету функциясында аталатын нәрсені алады. Біздің жағдайда index.js келесі жолға ие:

res.render ('индекс', {тақырып: 'Экспресс', санау: userCount});

Бұл сіздің қолданыстағы, нефрит, руль және т.б. қозғалтатын «индекс» файлын шақырады, сондықтан біздің жағдайда index.handlebars.

Index.handlebars жылдам құрылған

{{title}}

{{Title}} сайтына қош келдіңіз

Index.handlebars файлы {{{body}}} тегіне айнымалы ретінде беріледі және веб -бетте көрсетіледі.

Бұл сізге веб -сайттың статикалық бөлігін және айнымалы бөлігін алуға мүмкіндік береді. Бұл үстіңгі және астыңғы деректемелерді жақсы етеді, себебі сізге бүкіл бетті қайта көрсетудің қажеті жоқ, жаңа бетті жүктегенде тек кейбір ақпарат өзгереді.

3 -қадам: байланыс формасы

Байланыс формасы
Байланыс формасы
Байланыс формасы
Байланыс формасы
Байланыс формасы
Байланыс формасы

Мен кез келген адам сұрақтар мен түсініктемелермен менің сайтымның электронды поштасына хат жібере алатындай етіп веб -парағыма байланыс формасын енгіздім.

Бұл байланыс формасы түйіндік пошта деп аталатын npm орташа құралын қолданды.

Түйіндік поштаны орнату

Түйіндік поштаны орнату үшін төмендегі кодты жоғарғы деңгейдегі файлда іске қосу қажет, біздің жағдайда myapp.

sudo npm nodemailer орнатыңыз

Орнатқаннан кейін app.js файлында бірнеше нәрсені орнату қажет болады.

Біріншісі - бұл тәуелділік, бұл түйін біз осы аралық бағдарламалық жасақтаманы қолдануды жоспарлап отырғанымызды білдіреді.

var nodemailer = талап ету ('nodemailer');

Екіншіден, біздің тасымалдаушы, тасымалдаушы сіздің пошта серверіңізге қосылу үшін пайдаланылады, менің жағдайда gmail.

// Gmail тіркелгісін алу үшін тасымалдаушы

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'}})

Егер пошталық серверде басқа пошталық поштаны пайдалансаңыз, құжаттаманы және анықтаманы осы жерден қараңыз.

Адамнан адамға бірнеше нәрсе өзгереді: user, clientId, clientSecret. refreshToken және accessToken.

Сіздің userId - бұл пайдаланғыңыз келетін электрондық пошта, мен өз сайтыммен бірдей жаңа хат жасадым.

ClientId, clientSecret, refreshToken және accessToken сіздің Google есептік жазбаңыз арқылы табылуы керек.

Егер сізге қосымша көмек қажет болса, мына бейнені мына жерден көре аласыз.

Барлық өрістер толтырылғаннан кейін біз хабарлама туралы мәліметтерді қосамыз.

Содан кейін біздің формадағы барлық өрістер енгізілгенін және жарамды жауаптар екенін тексеруіміз керек.

// Express Validatorapp.use (expressValidator ({errorFormatter: функция (парам, мсг, мән)) {var namespace = param.split ('.'), Root = namespace.shift (), formParam = root; while (namespace.length) {formParam + = '[' + namespace.shift () + ']';} қайтару {param: formParam, msg: msg, value: value};}}));

Енді біз веб -беттегі байланыс формасынан ақпарат алып, хабарлама жіберуіміз керек.

// Контактіні жіберу батырмасынан хабарлама жіберу, жіберілген formapp.post ('/contact_Form', функциясы (req, res) үшін табысты хабарламасы бар бастапқы бетті құру қажет {// Ақпаратты контакт формасынан, homepage.hbs var name = req.body.name; var email = req.body.email; var phone = req.body.phone; var message = req.body.message; var mailOptions = {// хабарламаны жіберу кезінде пайдаланылатын ақпаратты жасайды: ' Автоматты электрондық пошта ', мына мекенжайға:' [email protected] ', тақырып:' Веб -сайттың байланыс формасы: ' + аты, мәтіні:' Сіз веб -сайттың байланыс формасынан жаңа хабар алдыңыз. / N / n ' +' Мұнда толығырақ: / n / nАты: ' + аты +' / n / nЭлектрондық пошта: ' + электрондық пошта +' / n / nТелефон: ' + телефон +' / n / n Хабарлама: / n ' + хабар} тасымалдаушы.sendMail (mailOptions, функция (қате, res) {if (қате) {console.log ('Қате');} else {console.log ('Электрондық пошта жіберілді');}}) res.render ('индекс'); // көрсету жаңа бет, мұны сәттілік туралы хабармен қалай жасау керектігін қараңыз, мысалы, шығу беті})

Жарқыл

Flash әрекеттерді орындағаннан кейін хабарларды көрсету үшін қолданылады. Сіз мұны форманы жібергенде немесе өрісті дұрыс енгізбегенде көре аласыз.

Басқа npm орта бағдарламалық қамтамасыз ету сияқты флэшті орнатыңыз.

sudo npm connect-flash орнатыңыз

var flash = талап ету ('connect-flash'); // экранда хабарламаларды көрсетуге арналған флэш функциясы болды

// Flashapp.use қосылу (flash ());

Веб -беттегі хабарларды жіберетін және жаңартатын жарқылды қосыңыз. Бұл сәттілік немесе ақпарат қате енгізілгенін айтатын хабарлар.

// Global Vars

app.use (функция (req, res, next) {res.locals.success_msg = req.flash ('success_msg'); res.locals.error_msg = req.flash ('error_msg'); res.locals.error = req.flash ('қате'); res.locals.user = req.user || нөл; келесі ();});

Кейбіреулерге флэшпен байланысты айнымалылар қажет.

Сіз дайын байланыс формасына барасыз.

4 -қадам: Кіру беті

Кіру беті
Кіру беті

Бұл менің қолымнан келетінін көргім келетін нәрсе еді, мүмкін оны болашақта қолданамын. Мен кодты менің git репозиторийімде болғандықтан түсіндіргім келді.

Сонымен, бұл бөлік бірнеше npm орташа өнімдерді пайдаланады. Төмендегі пәрмендерді пайдаланып төмендегілерді орнатыңыз.

npm паспортты орнату && npm паспорт-жергілікті && npm орнату bcryptjs

&& бір жолмен бірнеше командаларды орындауға мүмкіндік береді.

Кіру және қолданушылар

Сізге маршруттар қалтасының астында login.js және user.js файлдарын жасау қажет болады. Бұл біздің дерекқорда сақталатын пайдаланушыны құруға және пайдаланушыға дерекқорды тексеру арқылы кіруге мүмкіндік беру үшін қолданылады.

user.js

var express = талап ету ('экспресс'); var маршрутизатор = express. Router (); var passport = талап етіңіз ('паспорт'); var LocalStrategy = талап етіңіз ('төлқұжат-жергілікті'). Стратегия; var User = қажет ('../ model/user'); // Тіркеу router.get ('/register', функция (req, res) {res.render ('register');}); // User user 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; // Тексеру req.checkBody ('аты', 'Аты қажет'). notEmpty (); req.checkBody ('электрондық пошта', 'Электрондық пошта қажет')).notEmpty (); req.checkBody ('электрондық пошта', 'Электрондық пошта жарамсыз'). isEmail (); req.checkBody ('пайдаланушы аты', 'Пайдаланушының аты қажет'). notEmpty (); req.checkBody (' notEmpty (); req.checkBody ('password2', 'Құпия сөздер сәйкес келмейді'). тең (req.body.password); var error = req.validationErrors (); if (қателер) {res.render ('тіркелу', {қателер: қателер});} басқа {var newUser = жаңа пайдаланушы ({аты: аты, электрондық пошта: электрондық пошта, пайдаланушы аты: пайдаланушы аты, құпия сөз: құпия сөз}); User.createUser (newUser, функция (қате, пайдаланушы) {if (қате) қате жіберу; console.log (user);}); req.flash ('success_msg', 'Сіз тіркелдіңіз және енді кіре аласыз'); res.redirect (' /кіру'); } });

Мұны бөлшектеп бөлу

Алдымен біз барлық қажетті орта өнімдерді қосамыз, содан кейін біз төменде түсіндірілген модельдік файлды қосамыз. Біз регистр тегінен бағыт алып, регистрдің рульдік мәтінін көрсетеміз. Содан кейін маңызды функция келеді. Бұл бізге жаңа пайдаланушыны дерекқорға тіркеуге мүмкіндік береді. Функция барлық өрістердің жарамдылығын және пішінге енгізілгенін тексереді, егер ол болмаса, ол оларды шақырады. Содан кейін ол қателерді тексереді, егер қате болмаса, ол берілген ақпаратпен жаңа пайдаланушыны жасайды. Содан кейін ол кіруге мүмкіндік беретін кіру бетіне қайта бағытталады.

кіру.js

var express = талап ету ('экспресс');

var router = express. Router (); var passport = талап ету ('паспорт'); var LocalStrategy = талап етіңіз ('төлқұжат-жергілікті'). Стратегия; var User = қажет ('../ model/user'); /* Пайдаланушылардың тізімін алу. */// Басты бет router.get ('/', функция (req, res) {res.render ('login');}); passport.use (жаңа LocalStrategy (функция (пайдаланушы аты, құпия сөз, жасалды)) {User.getUserByUsername (пайдаланушы аты, функция (қате, пайдаланушы)) {if (қате) қате жіберу; if (! пайдаланушы) {қайтару орындалды (null, false, { хабарлама: 'Белгісіз пайдаланушы'});} User.comparePassword (құпия сөз, user.password, функция (қате, isMatch) {if (err) қате жіберу; if (isMatch) {қайтару орындалды (нөл, пайдаланушы);} басқа { қайтару орындалды (бос, жалған, {хабарлама: 'Құпия сөз жарамсыз'});}});});})); passport.serializeUser (функция (пайдаланушы, жасалды) {жасалды (бос, user.id);}); passport.deserializeUser (функция (идентификатор, жасалды) {User.getUserById (идентификатор, функция (қате, пайдаланушы) {жасалды (қате, қолданушы);});}); router.post ('/login', passport.authenticate ('local', {successRedirect: '/', failRedirect: '/login', failFlash: true}), функция (req, res) {res.redirect ('/ бақылау тақтасы ');}); router.get ('/logout', function (req, res) {req.logout (); req.flash ('muvaffaqiyat_msg', 'Сіз жүйеден шықтыңыз'); res.redirect ('/басты бет');});

module.exports = маршрутизатор;

Алдымен біз барлық қажетті орта өнімдерді қосамыз, содан кейін біз төменде түсіндірілген модельдік файлды қосамыз. Біз кіру тегінен бағыттаймыз және кіру рульінің мәтінін көрсетеміз. Біз енгізілген пайдаланушы аты мен құпия сөзді алу және оларды біздің мәліметтер базасынан тексеру үшін кейбір төлқұжат функцияларын қолданамыз. Біз шифрланған құпия сөзді қолданамыз, ол таңқурайға кіруді сәл баяулатады. Мен бұл туралы толығырақ келесіде түсіндіремін. Пайдаланушы аты мен құпия сөзді тексергеннен кейін сіз бастапқы бетке бағытталасыз, ол бақылау тақтасын индекстік файлда орнатқанда көрсетеді. Біз мұнда жүйеден шығу мүмкіндігін қосамыз.

Жоғарыда айтқанымдай, бізге мәліметтер базасын тексеру үшін модель жасау қажет болады.

Бұл сіздің негізгі қосымшалар қалтасы астында модельдер деп аталатын қалта жасау арқылы жасалады. Бұл қалтада user.js файлы да қажет.

модель/user.js

var mongoose = қажет ('mongoose');

var bcrypt = талап етіңіз ('bcryptjs'); // Пайдаланушы схемасы var UserSchema = mongoose. Schema ({пайдаланушы аты: {түрі: Жол, индекс: шын}, құпия сөз: {түрі: Жол}, электрондық пошта: {түрі: Жол}, аты: {түрі: Жол}}); var User = module.exports = mongoose.model ('User', UserSchema);

module.exports.createUser = функция (жаңа пайдаланушы, кері байланыс) {

bcrypt.genSalt (10, функция (қате, тұз) {bcrypt.hash (newUser.password, тұз, функция (қате, хэш) {newUser.password = hash; newUser.save (callback);});}); } module.exports.getUserByUsername = функция (пайдаланушы аты, кері байланыс) {var query = {username: username}; User.findOne (сұрау, кері байланыс); } module.exports.getUserById = функция (идентификатор, кері байланыс) {User.findById (идентификатор, кері байланыс); } module.exports.comparePassword = функция (candidPassword, хэш, кері шақыру) {bcrypt.compare (кандидатПассворы, хэш, функция (қате, isMatch) {if (қате) қате жіберу; кері шақыру (бос, isMatch);}); }

Бұл модель біздің пайдаланушы параметрлерінің қалай болатынын және оларға қалай қол жеткізетінімізді көрсетеді. Мен бұған дейін парольдерді шифрлайтынымызды айттым. бұл дерекқорда ешкім бұзылған жағдайда құпия сөз сақталмайды. Құпия сөздер орта деңгейдегі bcrypt көмегімен хэштеледі.

5 -қадам: Жол қозғалысының есептегіші

Жол қозғалысының есептегіші
Жол қозғалысының есептегіші

Мен веб -бетке қанша бірегей қолданушылардың кіргенін көргім келді және «хиттердің» санын есептегім келді. Мұны істеудің көптеген жолдары бар, мен бұған қалай барғанымды түсіндіремін.

Бұл менің бетіме қанша пайдаланушы кіргенін және әрбір бірегей келуші қанша рет кіргенін бақылау үшін mongodb коллекциясын қолданады.

Біз mongoDB орнату туралы айтқандықтан, мен оны енді қайталамаймын.

Компиляция үшін дерекқорға екі жинақты қосу қажет болуы мүмкін. Мұны істеу үшін сіз UI қолданатын болсаңыз, RoboMongo -ны орната аласыз, бірақ егер сіз мен сияқты басы жоқ таңқурай пиін қолдансаңыз, сіз келесі командаларды ұнатасыз.

Mongo қабығы

ДБ өңдеу, ақпарат алу немесе жинақ жасау үшін сізге басы жоқ қондырғыдағы монго қабығы қажет болады.

Жүгіру

монго

Бұл қабықты ашады.

Жинақты қосыңыз

Менің жағдайда, мәліметтер базасы loginapp деп аталады, сіз оны қалағаныңызша атай аласыз.

nameofyourdb пайдаланыңыз

Біздің сайтқа кіретін пайдаланушылардың барлық IP -адрестерін сақтау үшін бізге жинақ қажет.

db.creatCollection («ip»)

Содан кейін біз сайтқа бірегей хиттерді санау үшін жинақ жасаймыз. Бұл идентификатормен инициализацияланады және 0 -ден басталады.

db.createCollection («санау», {идентификатор: «санауыш», санау: 0})

IP мекенжайларын қадағалау

Мұны істеу үшін біз пайдаланушыларды біздің басты бетке кірген кезде Ip тартамыз, біздің санды көбейтеміз және оларды кейін салыстыру үшін сақтаймыз.

Біз mongoose схемаларын сақтау үшін кейбір модельдер жасауымыз керек және біздің homepage.js файлына кейбір кодты қосуымыз керек.

Біз count.js және ip.js құрамыз және оларды модельдер қалтасында сақтаймыз.

IP.js файлы - бұл біздің IP мекенжайымыздың схемасы

var mongoose = қажет ('mongoose'); // mongo үшін пакет өңдегіші

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

count.js біздің басты бетте қоңырау шалуды бастау үшін шақырылады. Бұл төмендегідей орындалады.

//Homepagerouter.get('/ ', функция (req, res) {publicIp.v4 (). Содан кейін (ip => {Public_ip = ip; console.log («ipv4:»+ Public_ip); // =>') 46.5.21.123 '}); publicIp.v6 (). Содан кейін (ip => {console.log («ipv6» + ip); Public_ip = ip; // =>' fe80:: 200: f8ff: fe21: 67cf ') });

Count.getCount (жинақ, ipc, Public_ip, функция (санау) {

}); count = db.collection ('count'). findOne ({id: «hit counter»}, функция (қате, count) {userCount = count.count; res.render ('басты бет', {count: userCount}); }); });

Бұл біздің веб -сайтқа кірген сайын болады, бұл жағдайда theinternet.onthewifi.com/homepage.

Ол ip4 немесе ip6 пайдаланушының IP -мекен -жайын тексереді, содан кейін бұл мәнді count.js файлында сақталатын count.get.collection -ге жіберетін жерде сақтайды.

Пайдаланушының бірегейлігін тексергеннен кейін ол санау мәнін басты бетке рульдік айнымалы ретінде қайтарады және жібереді.

Count.js файлы келесідей.

//count.jsvar mongo = қажет ('mongodb'); // var mongoose мәліметтер базасын қолдайды = қажет ('mongoose'); // mongo mongoose.connect үшін пакет өңдегіші ('mongodb: // localhost/loginapp'); var db = mongoose.connection; var Ip = қажет ('../ model/ip'); // Count Schema var CountSchema = mongoose. Schema ({id: {type: String,}, count: {type: Number,}}); var Count = module.exports = mongoose.model ('Count', CountSchema); module.exports.getCount = функция (санау, ipc, Public_ip, кері байланыс) {// санау - бұл сынақ, кері шақыру функциясы ipc.findOne ({ip: Public_ip}, функция (қате, iptest) {if (! iptest) // қосу егер дерекқорда болмаса, жаңа IP және есептегішті жаңартыңыз {var new_ip = new Ip ({ip: Public_ip, count: 1}); db.collection ('ip'). save (new_ip); // жаңа ip қосыңыз count.update мәліметтер базасы (// жаңарту есептегіш {id: «hit counter»}, {$ inc: {count: 1}})} басқа // нақты IP есептегішті жаңартыңыз, кім көп кіретінін көру үшін {ipc.update ({ip: Public_ip}, {$ inc: {count: 1}})}}); }

Бұл санау схемасын және біздің.getCount функциясын жасайды.. GetCount функциясы DB пайдаланушылардың IP -ін тексереді және егер ол оны тапса, онда функция есептегішті емес, сол пайдаланушының санын көбейтеді. Алайда, егер IP пайдаланушылары табылмаса, ол ip пайдаланушыларымен жаңа жинау нысанын жасайды және есептегішті 1 -ге арттырады.

Содан кейін ол қайтарылады және веб -бетке шығарылады.

Онда сізде ip -tracking hit counter бар.

6 -қадам: Блог

Блог
Блог

Мен қазіргі уақытта бағдарламалық қамтамасыз ету, ақылды үйлер мен поляроидтар туралы қызығушылықтарым бойынша орталықтандырылған блог құруға тырысамын. Сондықтан мен блог бөлімін құрдым. Блог статикалық html беттерін және рульдік құрылымды қолданады. Блог жүргізуді жеңілдету үшін жақсы технологияларды қарастырғаннан кейін, мен веб -сайтты hugo көмегімен қайта құрдым. Гюго - статикалық html генераторы. Мен бұл туралы төмендегі оқулықта толығырақ айтамын.

7 -қадам: Аяқталды

Онда сіз менің таңқурай пи -де жергілікті түрде орналасқан менің node.js веб -сайтында терең оқулыққа барасыз. Егер сізде сұрақтар немесе түсініктемелер болса, оларды төменде қалдырыңыз.

Бұл басқаларға көмектеседі деп үміттенемін.

Hugo көмегімен бұл сайтқа басқаша қарау үшін, тұрақты веб -генератор менің басқа оқулығымды қараңыз (жақында).

Ұсынылған: