NodeJS搭建博客系统(二)构建一个markdown页面
来源:互联网 发布:交通仿真软件怎么用 编辑:程序博客网 时间:2024/05/17 22:21
express 并不直接支持markdown语法,需要为项目添加markdown-js模块的依赖.
这里我们要修改package.json文件,添加相关依赖:
原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中定义依赖库,这里添加了对markdown-js的依赖,
private: 制定是否将程序发布到npm全局仓库中
使用npm安装依赖:
$ npm install
安装成功后,在 ./node_modules 目录下会多出一个 mardown-js 目录
2. 让Express支持Markdown:
打开index.js开始编写node.js代码, 在没写任何代码前的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;
第一行导入 express 模块, 可以理解成java中的 import [packagename]。一会需要用这个语法来导入markdown-js模块模块
在里面加入:
var markdown = require('markdown-js');
首先我们设计一个url
URL地址
描述/markdown
当用户从浏览器访问这个页面的时候,输出一个指向JavaEye的超链接:
markdown 字符串:
Markdown代码
[fendo](http://blog.csdn.net/u011781521?viewmode=contents "Click")
生成的html代码:
<a href="http://blog.csdn.net/u011781521?viewmode=contents" title="Click">fendo</a>
markdown.markHtml(); 是将markdown格式的字符转换成Html
在index.js添加如下代码:
app.get('/markdown', function(req, res) { var html = markdown.makeHtml("[fendo](http://blog.csdn.net/u011781521?viewmode=contents \"Click\") "); res.send(html) res.end(); })
访问: http://localhost:3000/markdown 点击fendo就进入了我的博客。
3. 让Express渲染markdown文件
在app.js中引入
var fs = require('fs');var markdown = require('markdown-js');
然后给Express注册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 setupapp.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 handlerapp.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err);});// error handlerapp.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/目录下创建一个 index.md 文件
内容如下
his is a demo page===================[fendo](http://blog.csdn.net/u011781521?viewmode=contents \"Click\")
重新运行项目: npm start
访问 http://localhost:3000/markdown
已经成功构建了第一个markdown页面。
- NodeJS搭建博客系统(二)构建一个markdown页面
- NodeJS搭建博客系统(三)用markdown写静态博客
- NodeJS搭建博客系统(四)使用模版引擎(node+express+ejs做的一个demo)
- 利用nodejs express mysql +boostrap构建一个博客
- Nodejs,express博客搭建
- NodeJS搭建博客系统(一)基本配置与路由控制
- 邮件上网系统构建(二)服务器搭建
- 教你如何搭建一个自动化构建的博客
- Hexo在Github中搭建博客系统(5)Markdown语法
- 用NodeJS搭建一个内容管理系统(v0.0.1)
- 构建个人博客系统二(连接mysql数据库)
- SpringMVC+ibatis+MySQL+MongoDB构建博客系统(二)
- 一个前端写的php博客系统--支持markdown哦
- 使用.net core ABP和Angular模板构建博客管理系统(实现博客列表页面)
- Android系统源代码编译—[1]搭建一个构建环境
- 搭建markdown文档系统
- 用 GAE 搭建了一个个人博客系统
- 用express搭建一个简单的博客系统
- 关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
- Html5移动应用开发入门——环境搭建(IONIC)
- PullToRefresh(下拉刷新)源码浅析
- 使用RecyclerView横向滑动实现仿到位的滑动(写的不好,还有未解决的地方)
- 卸载注册表的挂接点
- NodeJS搭建博客系统(二)构建一个markdown页面
- BZOJ 1036 [ZJOI2008] 树的统计Count
- python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法
- java常用加密方式2
- 《初入linux》--第二十部分-Apache服务器的几个实用技巧
- 思路题,多路归并(K Smallest Sums,UVA 11997)
- html的超链接
- 操作系统与网络实现 之十九(甲)
- Linux 文件编码大挪移