app.get('/api/v1', function middleware (req, res, next) {
// this function is middleware
req.locals.middlewareObject = { name: 'middleware', called: true }
next()
}, function otherMiddleware (req, res, next) {
// this function is middleware too
return res.json(req.locals.middlewareObject)
})
$ node -v
v7.6.0
// demo.js
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const OBJ = {
"a": [
{name: "Коля",
surname: "Петров"},
{name: "Вася",
surname: "Иванов"},
{name: "Сережа",
surname: "Смирнов"}
],
"b": [
{name: "Вова",
surname: "Михайлов"},
{name: "Никита",
surname: "Кузнецов"},
{name: "Вадим",
surname: "Панов"}
]
};
const timeout = 1000;
async function demo() {
for(let prop in OBJ) {
for(let i = 0; i < OBJ[prop].length; i++) {
console.log(`${OBJ[prop][i].name} ${OBJ[prop][i].surname}`);
await sleep(timeout);
}
}
}
demo();
Везде так принято оформление html кода непосредственно в js файле и через ' ' с +?
Но как здесь подгрузить стили?
Мне казалось, что fs должен был этим заняться,
И что означает Handler? Почему во многих языках его так называют и что это подразумевает?
Зачем ноду nginx, если мы на ноде и так пишем сервер?
server {
listen 80;
server_name api.domain.ru www.api.domain.ru;
proxy_set_header Host api.domain.ru;
location / {
rewrite ^(.*)$ https://api.domain.ru$1 permanent;
}
return 301 https://api.domain.ru$request_uri;
}
server {
listen 443 ssl http2;
server_name api.domain.ru www.api.domain.ru;
#......................
}
#################################################################
server {
listen 80;
server_name domain.ru www.domain.ru;
proxy_set_header Host domain.ru;
location / {
rewrite ^(.*)$ https://domain.ru$1 permanent;
}
return 301 https://domain.ru$request_uri;
}
server {
listen 443 ssl http2;
server_name domain.ru www.domain.ru;
#.......................
}
#!/bin/bash
# Usage:
# sudo ~/letsencrypt/addnew.sh domain.ru
set -e
DOMAIN="$1"
sudo letsencrypt certonly -a webroot --webroot-path=/var/www/html -d ${DOMAIN} -d www.${DOMAIN}
#openssl dhparam -out /etc/pki/nginx/dhparam.pem 4096
echo -e '
*********************************************************************
NGINX config add:
ssl_certificate /etc/letsencrypt/live/${DOMAIN}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${DOMAIN}/privkey.pem;
ssl_dhparam /etc/pki/nginx/dhparam.pem;
*********************************************************************
'
#!/bin/bash
# This script renews all the Let's Encrypt certificates with a validity < 30 days
# Usage:
# run command:
# sudo crontab -e
# add string
# @daily /home/vpsuser/letsencrypt/letsencrypt.cron.sh
# run command:
# chmod +x /home/vpsuser/letsencrypt/letsencrypt.cron.sh
NGINX=$(which nginx)
if ! /usr/bin/letsencrypt renew > /var/log/letsencrypt/renew.log 2>&1 ; then
echo Automated renewal failed:
cat /var/log/letsencrypt/renew.log
exit 1
fi
${NGINX} -t && service nginx restart
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.php;
server_name _;
location / {
try_files $uri $uri/ =404;
}
# For LetsEncrypt: https://letsecure.me/secure-web-deployment-with-lets-encrypt-and-nginx/
location ~ /.well-known/acme-challenge {
allow all;
}
}
User.find({
email: req.body.email,
password: User.hashPassword(req.body.password)
}, (err, user) => {
if(err) {
return res.status(400).json({error: err});
}
if(user) {
let data = JSON.parse(JSON.stringify(user, ['allow', 'fields', 'in', 'array']));
return res.status(200).json(data);
}
});