您现在的位置:首页 >> 前端 >> 内容

node+express搭建个人博客YIDBlog(一)

时间:2016/12/17 9:31:00 点击:

  核心提示:搭建个人博客 ( YIDBlog )一. 配置路由1.将目录下的 app.js 更改如下var express = require(express);var path = require(path);...

搭建个人博客 ( YIDBlog )

一. 配置路由

1.将目录下的 app.js 更改如下

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 routes = require('./routes/index');

var app = express();

// 设置模板目录
app.set('views', path.join(__dirname, 'views'));
// 设置模板引擎为 ejs
app.set('view engine', 'ejs');

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')));

// 设置路由
routes(app);

// 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.listen(app.get('post'),function(){
    console.log("Express server listening on port: " + 3000);
});

module.exports = app;

2. 将routes下的index.js更改如下

module.exports = function(app){
  app.get('/',function(req,res,next){
      res.render('index',{
           title:'首页',
       });
 }

3. 在views中的index.ejs,代码如下:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
  </body>
</html>
node+express搭建个人博客YIDBlog(一)

这样我们就很愉快就路由给配置好了。

接下来我们来一起搭建简单的界面,这里我用到bootstrap框架:

我们先在index.js中将要展示的界面进行路由的配置:

module.exports = function(app){
  //首页
  app.get('/',function(req,res,next){
      res.render('index',{
           title:'首页',
       });
  //注册界面
  app.get('/reg',function(req,res,next){
      res.render('reg',{
           title:'注册',
       });
  //登录
 app.get('/login',function(req,res,next){
      res.render('login',{
           title:'登录',
       });
 //发表文章
 app.get('/post',function(req,res,next){
      res.render('post',{
           title:'发表文章',
       });
 }

*开始我们的界面设计了,用Ejs模板引擎的<%- include %> 来将相同的部分分离开

创建 header.ejs

创建 footer.ejs

<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title><%= title %> - Blog</title>
    <link rel="stylesheet" href="/stylesheets/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="/fonts/font-awesome/css/font-awesome.css">
    <link rel="stylesheet" href="/stylesheets/style.css">
 
    <script src="/javascripts/bootstrap.min.js"></script>
    <script src="/javascripts/jquery.min.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse" role="navigation">
    <p class="container">
        <p class="container-fluid">
            <p class="navbar-header">
                <a class="navbar-brand" href="/">YIDBlog</a>
            </p>
            <a class="navbar-brand" href="/">首页</a>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="/reg"><span class="glyphicon glyphicon-user"></span> 注册</a></li>
                <li><a href="/login"><span class="glyphicon glyphicon-log-in"></span> 登录</a></li>
            </ul>
        </p>
    </p>
</nav>
<p class="container">
    <p class="col-sm-12">
</p>
</body>
</html>

创建 首页- index.ejs

<%- include header %>
<form>
    <p class="input-group">
        <input type="text" class="form-control" placeholder="SEARCH" name="keyword">
        <span class="input-group-btn">
            <input type="submit" value="搜索" class="btn btn-default" />
        </span>
    </p>
</form>
 
<ul class="list-group">
     <li class="list-group-item">
         <h3><a href="#">学习node.js</a></h3>
         <p class="info">
             <span>作者:小蚁</span>
             <span>|</span>
             <span>日期:2016-12-14</span>
         </p>
     </li>
     <hr>
</ul>
<%- include footer %>

首页完成,显示效果如下:

node+express搭建个人博客YIDBlog(一)

创建 登录界面-login.ejs

<%- include header %>
 
<form class="form-horizontal" role="form" method="POST">
    <p class="form-group">
        <label for="firstname" class="col-sm-2 control-label">用户名</label>
        <p class="col-sm-10">
            <input type="text" class="form-control" name="username" placeholder="输入用户名">
        </p>
    </p>
    <p class="form-group">
        <label for="lastname" class="col-sm-2 control-label">密码</label>
        <p class="col-sm-10">
            <input type="password" class="form-control" name="password" placeholder="输入密码">
        </p>
    </p>
    <p class="form-group">
        <p class="col-sm-offset-2 col-sm-10">
            <input type="submit" class="btn btn-default" value="登录" />
        </p>
    </p>
</form>
<%- include footer %>

登录页面 效果如下:

node+express搭建个人博客YIDBlog(一)

创建 注册界面-reg.ejs

<%- include header %>
<form class="form-horizontal" role="form" method="POST">
    <p class="form-group">
        <label for="firstname" class="col-sm-2 control-label">用户名</label>
        <p class="col-sm-10">
            <input type="text" class="form-control" name="username" placeholder="输入用户名">
        </p>
    </p>
    <p class="form-group">
        <label for="lastname" class="col-sm-2 control-label">密码</label>
        <p class="col-sm-10">
            <input type="password" class="form-control" name="password" placeholder="输入密码">
        </p>
    </p>
    <p class="form-group">
        <label for="lastname" class="col-sm-2 control-label">重复密码</label>
        <p class="col-sm-10">
            <input type="password" class="form-control" name="password-repeat" placeholder="输入密码">
        </p>
    </p>
    <p class="form-group">
        <label for="lastname" class="col-sm-2 control-label">邮箱</label>
        <p class="col-sm-10">
            <input type="text" class="form-control" name="email" placeholder="再次输入密码">
        </p>
    </p>
    <p class="form-group">
        <p class="col-sm-offset-2 col-sm-10">
            <input type="submit" class="btn btn-default" value="完成注册" />
        </p>
    </p>
</form>
<%- include footer %>

登录页面 效果如下:

node+express搭建个人博客YIDBlog(一)

创建 发表文章界面-post.ejs

<%- include header %>
<form method="post" enctype="multipart/form-data">
    <p class="form-group">
        <label for="name">标题:</label>
        <input type="text" class="form-control" name="title" placeholder="输入标题">
    </p>
    <p class="form-group">
        <label for="name">文章</label>
        <textarea class="form-control" name="article" rows="8"></textarea>
    </p>
    <hr />
    <input type="hidden" name="pv" value=0 >
    <input type="submit" value="发表" class="btn btn-default"/>
</form>
<%- include footer %>

发表文章界面 效果如下:

node+express搭建个人博客YIDBlog(一)

Tags:NO OD DE EE 
作者:网络 来源:不详