Я создаю сайт, используя Node.js и Express. Для моего механизма просмотра я использую Vash.Node.js + Добавить к модели перед визуализацией вида
В моем приложении у меня есть файл layout.vash, который я использую в качестве основного макета для своего приложения. Это выглядит примерно так:
layout.vash
<!DOCTYPE html>
<html lang="en">
<head>
<title>@model.title</title>
</head>
<body>
@html.block('content')
</body>
</html>
Я тогда мнения, которые выглядят примерно так:
view.vash
@html.extend('layout', function(model){
@html.block('content', function(model){
<h1>Hello</h1>
})
})
Точка зрения ссылается через Express с аналогичным маршрутом:
var router = require('express').Router();
router.get('/', function(req, res) {
var viewModel = {
title: 'Hello'
};
res.render('view', viewModel);
});
Мой viewModel
будет уникален для каждого вида. Однако есть некоторые свойства, которые разделяются во всех представлениях. Например, для целей разработки я хотел бы знать, является ли запрос локальным или нет. Если бы я был с помощью ASP.NET, я знаю, что я мог бы сказать:
@if (Request.IsLocal) { ... }
Однако, я не знаю, как сделать что-то подобное с узлом и Vash. Мои инстинкты говорят мне, что мне как-то нужно добавить свойство под названием isLocal
к моему model
. Однако я не уверен, что это правильная идея, или если это возможно.
Кроме того, это javascript. (почти) все возможно. – irysius
Я все еще обдумываю * как * делать что-то в JavaScript. Предположим, у меня есть файл, называемый routes.js. Этот файл имеет только это: '' 'module.exports = { пользователей: require ('./ users') }; '' 'Тогда, допустим, у меня есть файл с именем users.js, который имеет маршруты для моих пользовательских путей. Этот файл выглядит так: '' 'var router = require ('express'). Router(); router.get ('/ users', function (req, res) {var viewModel = {...}; res.render ('users/index', viewModel}); '' 'Как я могу добавить a 'appendRouteData 'в routes.js и b) вызвать appendRouteData из users.js? Спасибо! –
Вам понадобится способ введения appendRouteData в users.js. Для корректной работы может потребоваться некоторая рефакторинг. Поскольку форматирование кода комментариев отстой, я положу код в свой ответ. – irysius