Я пытаюсь вырваться из ада обучающих программ и создать что-то, чтобы облегчить себе жизнь (ирония), это калькулятор часов.
Я не буду go слишком много заниматься функциональностью, но в основном это просто приложение, в котором хранятся все мои месячные часы, которые я могу рассчитать в конце месяца, нажав кнопку.
Однако я застрял, я новичок в этом (особенно бэкэнд), и я могу Я не нашел способа получить доступ к DOM и, насколько я понимаю, это нормально, учитывая его серверный код.
Однако мне просто нужно знать, как вы захватываете элементы DOM и назначаете их переменным, если эта функциональность не существует на сервере ? Есть ли альтернатива ...
document.querySelector('...')
?
Я установил JSDOM, однако, насколько я понимаю, вы можете передавать только фрагменты кода, а не доступ ко всей странице? Я могу ошибаться ...
Может кто-нибудь, пожалуйста, помогите мне получить более четкое представление о том, что мне нужно понимать / делать?
Вот мое приложение. js код, go легко :)
const express = require('express'),
app = express(),
bodyParser = require('body-parser'),
mongoose = require('mongoose'),
jsdom = require("jsdom"),
{ JSDOM } = jsdom,
dom = new JSDOM('localhost:3000/');
// ----------------------------------------//
const date = new Date(),
day = date.getDate(),
month = date.toLocaleString('default', { month: 'long' }),
table = dom.window.document.querySelector('table'),
totalShiftHours = dom.window.document.querySelectorAll('.totalShiftHours');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
app.set('view engine', 'ejs');
app.listen(3000, () => console.log("I'm listening"));
mongoose.connect('mongodb://localhost:27017/hours_calculator', { useNewUrlParser: true, useUnifiedTopology: true });
const shiftSchema = new mongoose.Schema({
date: Number,
startTime: Number,
finishTime: Number,
lunchTime: Number,
});
const Shift = mongoose.model('Shift', shiftSchema);
app.get('/', (req, res) => {
Shift.find({}, (err, allShifts) => {
if (err) console.log(`There's an error: ${err}`)
else res.render('index', {
shifts: allShifts,
day: day,
month: month,
table: table,
totalShiftHours: totalShiftHours
})
})
});
app.post('/', (req, res) => {
const startTime = Number(req.body.startTime),
finishTime = Number(req.body.endTime),
lunchTime = Number(req.body.lunchTime),
newShift = {
date: day,
startTime: startTime,
finishTime: finishTime,
lunchTime: lunchTime
};
Shift.create(newShift, (err, newShift) => {
if (err) console.log(`Somethings wrong, ${err}`);
else res.redirect('/')
})
});