javascript - 大晚上的问大伙个Markdown & highlight的问题
PHPz
PHPz 2017-04-10 15:36:38
[JavaScript讨论组]

最近做了一个markdown的个人博客,基于node+express的,前端模版基于ejs,开始是将原始markdown返到页面的标签里,然后用 https://github.com/chjj/marked 解析的,高亮用的highlight官网的js,在html中是这么调用的:

jsmarked.setOptions({
    renderer: new marked.Renderer(),
    gfm: true,
    tables: true,
    breaks: true,
    pedantic: false,
    sanitize: false,
    smartLists: false,
    smartypants: false,
    highlight: function (code) {
      return hljs.highlightAuto(code).value;
    }
  });


var article = $('#article').val();
$('.article').html(marked(article));

上边的代码时可行的。

现在我想直接在node里将markdown解析成html,是这么写的,

jsvar marked = require('marked'),
    hljs = require('../public/js/highlight/highlight.pack.js');

marked.setOptions({
  renderer: new marked.Renderer(),
  gfm: true,
  tables: true,
  breaks: true,
  pedantic: false,
  sanitize: false,
  smartLists: false,
  smartypants: false,
  highlight: function (code) {
    return hljs.highlightAuto(code).value;
  }
});
...

router.get('/a/:id', function (req, res) {
  Post.getOne(req.params.id, function (err, post) {
    if (err) {
      req.flash('error', err); 
      return res.redirect('/');
    }
    res.render('article', {
      title: post.title,
      curIndex: 0,
      article: marked(post.post),
      post: post,
      user: req.session.user,
      success: req.flash('success').toString(),
      error: req.flash('error').toString()
    });
  });
});

但是提示 undefined is not a function,望高人指点,谢谢

PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHP中文网

虽然 highlight 官方说 highlight 兼容 nodejs,但始终没找到相关应用的文档……

阿神

报错的是指哪个undefined,marked还是highlight,我最近也写了点类似的东西,marked+highlight是可以用的。

js"use strict";
///<reference path="../../typings/node/node.d.ts" />
var marked = require('marked');
var hljs = require('highlight.js');

var thunkify = require('thunkify-wrap');

var ArticleModel = require('../models/article');

marked.setOptions({
    renderer: new marked.Renderer(),
    gfm: true,
    tables: true,
    breaks: false,
    pedantic: false,
    sanitize: true,
    smartLists: true,
    smartypants: false,
    highlight: function (code) {
        return hljs.highlightAuto(code).value;
    }
});

exports.fetch = function *(){
    var articleId = this.params['articleId'];

    var result = yield thunkify(ArticleModel.findById,ArticleModel)(articleId);

    if (!result) {
        return this.send(null,1,"文章不存在");
    }   

    result.content = marked(result.content);

    this.send(result,0);
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号