nodejs个人网站搭建经验分享——路由规则设计(

页面导航:首页 > 网络编程 > JavaScript > nodejs个人网站搭建经验分享——路由规则设计(

nodejs个人网站搭建经验分享——路由规则设计(

来源: 作者: 时间:2016-02-03 09:20 【

寒假在某公司实习,做nodejs平台下的web开发。初次学习nodejs的我感觉这个小东西真的是潜力无穷。用nodejs来做服务器端的平台,代码量很少,却又有强大多样的模块支持。于是我打算用
寒假在某公司实习,做nodejs平台下的web开发。初次学习nodejs的我感觉这个小东西真的是潜力无穷。用nodejs来做服务器端的平台,代码量很少,却又有强大多样的模块支持。于是我打算用业余时间搭建一个个人网站。此连载文章用于与大家交流经验,分享所得。
 
本人的个人网站采用nodejs平台的express框架与MYSQL。网页前端UI使用了网上开源的bootstrap框架。
 
express版本为4.11.0。
 
网站大体由三个主要页面组成:blogs, projects, contact
 
blogs页面显示每个文章的第一段。点进文章之后的页面叫article
 
外加隐藏的login界面用于管理员的登录。
 
网站的路由初步规划是这样的:
 
‘/’与’/blogs’路径请求使用blog.ejs文件进行渲染。
 
‘/login’, ‘/project’, ‘/contact’三个路径请求分别使用login.ejs, project.ejs, contact.ejs三个文件进行渲染。
 
‘/blogs/articla/:articleNum’路径请求使用article.ejs文件进行渲染。articleNum变量代表每个博客文章的id。
 
projects页面目前还没有进行设计。
 
blogs.ejs中,用于显示每个缩略文章的代码如下:  
 
<div class='blog-container'>
    <div class='row'>
        <div class='col-lg-3'>
            <h5 class='text-center'><%= blogsArray[i]['blog_time'].toUTCString() %></h5>
            <h5 class='text-center'>Readings: <%= blogsArray[i]['blog_reading_number'] %></h5>
            <h5 class='text-center'>Author: <%= blogsArray[i]['blog_author'] %></h5>
        </div>
        <div class='col-lg-9'>
            <a href=<%= '/blogs/article/' + blogsArray[i]['blog_id'] %>><h3><%= blogsArray[i]['blog_title'] %></h3></a>
            <% var textArr = blogsArray[i]['blog_content'].split(/(?:\r\n|\r|\n)/g); %>
            <p><%= textArr[0] %></p>
            <% if (textArr.length > 1)
            { %>
                <a href=<%= '/blogs/article/' + blogsArray[i]['blog_id'] %>>Read more...</a>
            <% } %>
        </div>
    </div>
</div>
其中前面部分的三个<%=...%>代表的是模板变量,我们现不管它,我们看标签部分,href为'/blogs/article/'与blogsArray[i]['blog_id']相连组成一个新的url。在express的app.js中,关于这部分的代码如下所示:
 
app.get('/blogs/article/:blog_id', function(req, res, next)
{
    connection.query('select * from blogs where blog_id = ' + req.params.blog_id, function(err, result)
    {
        if (err)
        {
            alert('Cannot get article');
        }
        else
        {
            res.article = result;
        }
        next()
    })
})
在路由控制的index.js中我使用如下代码:
 
router.get('/blogs/article/:articleNum', function(req, res, next) { 
    res.render('article',{
        blog: 'active', 
        projects: '', 
        contact: '',
        admin: req.session.admin,
        article: res.article
    });
});
这段代码指出当获取到/blogs/article/:articleNum请求时使用article文件进行渲染,并设置article变量传递从数据库调出的文章数据。数据库的设计我会在后面详细介绍。用于存储文章的表由以下6个字段组成: 
blog_id int not null auto_increment 
blog_time datetime not null 
blog_title mediumtext not null 
blog_content longtext not null 
blog_reading_number int not null 
blog_author mediumtext not null
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<