簡體   English   中英

從json返回html標簽,而無需在express中轉換為ascii

[英]Return html tags from json without converting to ascii in express

我想將HTML標簽存儲在JSON文件中。 這個JSON文件就像是我的靜態Express應用程序的數據庫,可以存儲博客文章,文本,頁面等。

var express = require('express'),
    router  = express.Router();

exports.fsAsync = function fsAsync(callback) {
  fs.readFile(__dirname + '/../database/data.json', 'utf8', (err, data) => {
    if (err) throw callback(err);
    callback(null, JSON.parse(data));
  });
};

/* GET Contact page. */
router.get('/', function(req, res, next) {
  fsAsync(function (err, data) {
    if (err) {
      return res.render('404', {
        title: 'Error 404'
      });
    }
    var contact = data[2].contact;
    res.render('contact', {
      data: contact
    });
  });
});

JSON文件特定部分:

  {
    "contact": {
      "body": "<p>This is the Contact Page!<br />But maybe I want to store some <a href=\"#\">links</a> in my text also!</p>"
    }
  },

這將JSON中的html標記轉換為ascii:

<main class="contact">
  <article>
    &lt;p&gt;This is the Contact Page!&lt;br /&gt;But maybe I want to store some &lt;a href&#x3D;&quot;#&quot;&gt;links&lt;/a&gt; in my text also!&lt;/p&gt;
  </article>
</main><!-- main.about-me -->

有沒有辦法做到這一點?

模板引擎是express-handlebars

app.engine('hbs', exphbs({
  extname: 'hbs',
  defaultLayout: 'main',
  // Specify helpers which are only registered on this instance
  helpers: {
    // register hbs helpers in res.locals' context which provides this.locale
    __: function() { return i18n.__.apply(this, arguments); },
    __n: function() { return i18n.__n.apply(this, arguments); }
  }
}));
app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');

使用車把,您可以使用三個{{{ }}}括號獲取原始HTML輸出。

<main class="contact">
  <article>
   {{{ body }}}
  </article>
</main>

您需要告訴模板引擎它是html,在ust s過濾器中將自動進行html編碼:

<main class="contact">
  <article>
   {body|s}
  </article>
</main>

我不得不將html代碼存儲在json中。 我使用此網站來格式化html並轉義必要的字符。

http://www.freeformatter.com/javascript-escape.html

不確定這是否是您要尋找的東西,但是,加油!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM