Мне дали проект node js, и я ничего не знаю о node js. Я просмотрел различные учебные пособия и мне удалось создать HTML-страницу для регистрации и последующего входа в приложение. Я подключен к базе данных mongo, в которой хранится информация об имени пользователя и пароле (пока только одна таблица, хранятся только имя пользователя и пароль)
После того, как пользователь войдет в систему, я хочу отобразить имя пользователя на «домашней» странице, поэтому мне хотелось бы, чтобы это продолжалось, но я не слишком понимаю, как этого добиться. Я вырос в основном на C#, так что на данный момент я немного похож на рыбу, выброшенную из воды.
Я попытался добавить уровень разделения для разных классов, и мои файлы .js более или менее настроены так ...
Имя приложения
- Папка конфигурации
-database.js (inside config folder)
-passport.js (inside config folder)
- - Папка моделей
-routes.js (inside models folder)
-user.js (inside models folder)
-user.js (inside models folder)
- Папка просмотров
-Login.html (inside views folder)
-signup.html (inside views folder)
-Home.html (inside views folder)
-Index.html (inside views folder)
server.js (прямо под приложением)
Я думаю, у меня двоякий вопрос.
Во-первых, как мне связаться со страницей html с точки зрения установки значений для меток или входов и т. д. из файла (ов) .js в их различных папках.
во-вторых, как мне сообщать / совместно использовать переменные между файлами .js?
Примеры, которые мне удалось найти в Интернете, в основном касаются того, как манипулировать файлом html непосредственно из файла server.js, но, поскольку у меня есть это разделение, я не уверен, как это достигается. Любая помощь или указание на учебные пособия / примеры, которые я, возможно, пропустил, были бы действительно замечательными.






1.Я использую для этого руль
С его помощью вы можете размещать js-переменные в html (также отображать # каждую из них),
вот www рулей: https://handlebarsjs.com/
2. Для обмена переменными вы можете использовать module.exports
ПРИМЕР для 1:
получить значения из db:
router.get('/', (req, res)=>{
Recipe.find({})
.then(recipes=>{
res.render('admin/recipes', {recipes: recipes});
});
});
отобразить их в представлении:
{{#each recipes}}
<tr>
<td><img style = "height:45px;" class = "img-responsive" src = "/uploads/{{file}}" alt = ""></td>
<td>{{title}}</td>
<td>{{allowComments}}</td>
<td>{{short}}</td>
<td><a href = "/admin/recipes/edit/{{id}}" class = "btn btn-info">Edit</a></td>
<td>
<form action = "/admin/recipes/{{id}}?_method=DELETE" method = "post">
<button type = "submit" class = "btn btn-danger">Delete</button>
</form>
</td>
</tr>
{{/each}}
Если у вас возникнут вопросы о руле или о том, как его настроить - не стесняйтесь спрашивать - я сделаю все возможное, чтобы помочь вам.
ПРИМЕР для 2:
const path = require('path');
module.exports = {
uploadDir: path.join(__dirname, '../public/uploads/'),
isEmpty: function(obj){
for(let key in obj){
if (obj.hasOwnProperty(key)) {
return false;
}
}
return true;
}
};
Вы можете запросить их из другого файла следующим образом:
const{ isEmpty, uploadDir } = require('../../helpers/upload-helper');
Надеюсь, это вам поможет.
Обновлено:
Я думаю, что йой шолуд тоже проверит эту часть экспресс-документации:
https://expressjs.com/en/4x/api.html#res.render
http://expressjs.com/en/guide/using-template-engines.html
@ user7592671, я добавил ссылки, которые тоже могут помочь вам в моем ответе.
Спасибо за публикацию, занят ее рассмотрением. ожидая ответа, я все время пытался в этом разобраться и искать убедительные примеры. Я вижу много .ejs вместо html. есть ли преимущества в использовании этого. Я получаю эти головы на территории личного мнения, но меня интересует любое мнение в этом отношении, как я уже сказал, новичок в nodeJS