NodeJS構(gòu)建一個(gè)markdown頁(yè)面

1藕帜、為項(xiàng)目添加markdown-js依賴图谷,加入markdown解析能力:

express 并不直接支持markdown語(yǔ)法主之,需要為項(xiàng)目添加markdown-js模塊的依賴.
這里我們要修改package.json文件酵幕,添加相關(guān)依賴:


原package.json文件

{
  "name": "blog",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.15.2",
    "cookie-parser": "~1.4.3",
    "debug": "~2.2.0",
    "ejs": "~2.5.2",
    "express": "~4.14.0",
    "morgan": "~1.7.0",
    "serve-favicon": "~2.3.0"
  }
}

修改成:


{
 "name": "blog",
 "version": "0.0.0",
 "private": true,
 "scripts": {
   "start": "node ./bin/www"
 },
 "dependencies": {
   "body-parser": "~1.15.2",
   "cookie-parser": "~1.4.3",
   "debug": "~2.2.0",
   "ejs": "~2.5.2",
   "express": "~4.14.0",
   "morgan": "~1.7.0",
   "serve-favicon": "~2.3.0",
   "markdown-js": ">= 0.0.1"
 }
}

在最下面加入:"markdown-js": ">= 0.0.1"

name: 指定我們app的名稱,
dependesies: nodejs中定義依賴庫(kù),這里添加了對(duì)markdown-js的依賴缓艳,
private: 制定是否將程序發(fā)布到npm全局倉(cāng)庫(kù)中

使用npm安裝依賴:

$ npm install

安裝成功后,在 ./node_modules 目錄下會(huì)多出一個(gè) mardown-js 目錄

2校摩、讓Express支持Markdown:

打開index.js開始編寫node.js代碼, 在沒(méi)寫任何代碼前的index.js大致如下:

var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
 res.render('index', { title: 'Express' });
});

router.get('/fendo', function (req, res) {
 res.send('hello,world!');
});

module.exports = router;

第一行導(dǎo)入 express 模塊阶淘, 可以理解成java中的import [packagename]衙吩。一會(huì)需要用這個(gè)語(yǔ)法來(lái)導(dǎo)入markdown-js模塊模塊

在里面加入:

var markdown = require('markdown-js');

首先我們?cè)O(shè)計(jì)一個(gè)url

在index.js添加如下代碼:

router.get('/markdown', function(req, res) {  
    //markdown.markHtml(); 是將markdown格式的字符轉(zhuǎn)換成Html
    var html = markdown.makeHtml("[fendo](http://blog.csdn.net/u011781521?viewmode=contents \"Click\") ");  
    res.send(html)  
    res.end();  
})

訪問(wèn):http://localhost:3000/markdown點(diǎn)擊fendo就進(jìn)入了我的博客。

3舶治、讓Express渲染markdown文件

在app.js中引入

var fs = require('fs');
var markdown = require('markdown-js');

然后給Express注冊(cè)Markdown渲染器

app.engine('md', function(path, options, fn){  
  fs.readFile(path, 'utf8', function(err, str){  
    if (err) return fn(err);  
    str = markdown.parse(str).toString();  
    fn(null, str);  
  });  
});  

完整的代碼:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var users = require('./routes/users');


var fs = require('fs');
var markdown = require('markdown-js');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/users', users);



// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

app.engine('md', function(path, options, fn){  
  fs.readFile(path, 'utf8', function(err, str){  
    if (err) return fn(err);  
    str = markdown.parse(str).toString();  
    fn(null, str);  
  });  
});  

module.exports = app;

修改 "/markdown" url的處理程序

router.get('/markdown', function(req, res) {  
   res.render('index.md',{layout:false});
})  

在views/目錄下創(chuàng)建一個(gè) index.md 文件
內(nèi)容如下

his is a demo page
===================
[fendo](http://blog.csdn.net/u011781521?viewmode=contents \"Click\")

重新運(yùn)行項(xiàng)目: npm start

訪問(wèn) http://localhost:3000/markdown

已經(jīng)成功構(gòu)建了第一個(gè)markdown頁(yè)面分井。

參考:
http://www.2cto.com/kf/201612/573963.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市霉猛,隨后出現(xiàn)的幾起案子尺锚,更是在濱河造成了極大的恐慌,老刑警劉巖惜浅,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘫辩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡坛悉,警方通過(guò)查閱死者的電腦和手機(jī)伐厌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)裸影,“玉大人挣轨,你說(shuō)我怎么就攤上這事⌒桑” “怎么了卷扮?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)均践。 經(jīng)常有香客問(wèn)我晤锹,道長(zhǎng),這世上最難降的妖魔是什么彤委? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任鞭铆,我火速辦了婚禮,結(jié)果婚禮上焦影,老公的妹妹穿的比我還像新娘车遂。我一直安慰自己封断,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布艰额。 她就那樣靜靜地躺著澄港,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柄沮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天废岂,我揣著相機(jī)與錄音祖搓,去河邊找鬼。 笑死湖苞,一個(gè)胖子當(dāng)著我的面吹牛拯欧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播财骨,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼镐作,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了隆箩?” 一聲冷哼從身側(cè)響起该贾,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捌臊,沒(méi)想到半個(gè)月后杨蛋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡理澎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年逞力,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糠爬。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寇荧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出执隧,到底是詐尸還是另有隱情揩抡,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布殴玛,位于F島的核電站捅膘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏滚粟。R本人自食惡果不足惜寻仗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凡壤。 院中可真熱鬧署尤,春花似錦耙替、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至箕别,卻和暖如春铜幽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背串稀。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工除抛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人母截。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓到忽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親清寇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喘漏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容