Как я могу отобразить HTML-файл, который будет динамически создан на странице? - PullRequest
0 голосов
/ 24 декабря 2018

Я использую Node.JS и EJS (если это имеет значение), и мне интересно, как я могу визуализировать динамически созданный HTML-файл на странице.Например, у меня есть папка views, которая содержит все файлы на моем веб-сайте, и там также есть папка User1, которая принадлежит текущему вошедшему в систему пользователю, и в этой папке User1 находится созданный им HTML-файл.до.И когда он просматривает свою панель управления, в iFrame (или, тем не менее) он будет отображать файл в папке User1.

Если это поможет, я могу отправить содержимое файла в виде переменной с моего внутреннего интерфейса на передний планконец, но это просто необработанный HTML-код.

1 Ответ

0 голосов
/ 24 декабря 2018

Как я понимаю, вы хотите объединить разные страницы.Вам необходимо разработать функцию, которая считывает различные файлы, объединяет их вместе и отправляет ответ клиенту.Вам необходимо определить тип контента для «text / html».

Примеры функций: Описание: 1. Читать главную страницу 2. Читать верхний колонтитул 3. Читать нижний колонтитул 4. Объединять часть страницы 5. Отправить в ответ.

// Main Object
_index = {};

// This object return content of the page
_index.get = function(data, callback) {
    const templateData = {};
    templateData['head.title'] = 'Page Title';
    templateData['head.description'] = 'Description';
    templateData['body.title'] = 'Body Title';
    templateData['body.class'] = 'css-class';

    // Read the main page contant.
    _index.getTemplate('index', templateData, (err, str) => {
        if (!err && str) {
            // Read rest of the page contant and put them together.
            _index.addUniversalTemplate(str, templateData, (err, str) => {
                if ((!err, str)) {
                    callback(200, str, 'html');
                } else {
                    callback(500, undefined, 'html');
                }
            });
        } else {
            callback(500, undefined, 'html');
        }
    });
// callback(undefined, undefined, 'html');
};


_index.getTemplate = (templateName, data, callback) => {
  templateName =
    typeof templateName == 'string' && templateName.length > 0
      ? templateName
      : false;
  if (templateName) {
    const templateDir = path.join(__dirname, './../template/');
    fs.readFile(templateDir + templateName + '.html', 'utf8', (err, str) => {
      if (!err && str && str.length > 0) {
        // Do interpolation on the data
        let finalString = _index.interpolate(str, data);
        callback(false, finalString);
      } else {
        callback('No Template could be found.');
      }
    });
  } else {
    callback('A valid template name was not specified.');
  }
};


// Add the universal header and footer to a string and pass provided data object to the header and footer for interpolation.
_index.addUniversalTemplate = function(str, data, callback) {
  str = typeof str == 'string' && str.length > 0 ? str : '';
  data = typeof data == 'object' && data !== null ? data : {};
  // Get header
  _index.getTemplate('_header', data, (err, headerString) => {
    if (!err && headerString) {
      _index.getTemplate('_footer', data, (err, footerTemplate) => {
        if (!err && footerTemplate) {
          let fullString = headerString + str + footerTemplate;
          callback(false, fullString);
        } else {
          callback('Could not find the footer template');
        }
      });
    } else {
      callback('Could not find the header template.');
    }
  });
};
...