NodeJS实战 利用Express&MongoDB搭建博客(2)前后端分离

使用模板

    后端逻辑和页面表现分离——前后端分离

    模板配置

/**
 * app.js
 * 应用程序启动文件
 */
//加载express模块
var express = require('express');
//加载模板处理模块
var swig = require('swig');


/**
 * 首页
 * req request对象
 * res response对象
 * next 函数
 *
 */
var app = express();//创建app 应用 -》NodeJS Http.createServer();
//配置应用模板
//定义当前应用使用的模板引擎。第一个参数:模板引擎的名称,同时也是模板文件的后缀;第二个参数:用于处理模板内容的方法
app.engine('html',swig.renderFile);
//设置模板存放目录,第一个参数必须是views,第二个参数是目录
app.set('views','./views');
//注册所使用的模板引擎。第一个参数为view engine;第二个参数和模板引擎一致
app.set('view engine','html');

app.get('/',function (req,res,next) {
    //res.send('

Wellcom to my blog!

'); /** * 读取views目录下的指定文件,解析并返回给客户端 * 第一个参数:表示模板的文件,相对于views目录 views/index.html * 第二个参数:传递给模板使用的数据 */ res.render('index'); }) //监听http请求 app.listen(8080);

    index.html




    
    Title


    

Wellcom to my blog!

NodeJS实战 利用Express&MongoDB搭建博客(2)前后端分离_第1张图片

    由于缓存机制,模板只加载一次,在开发过程中便于调试课设置缓存关闭。

//开发过程,取消模板缓存
swig.setDefaults({cache:false});

静态资源文件处理

app.js

//设置静态文件托管
//当用户访问的URL以/public 开始,那么直接返回 __dirname+'/public' 对应下文件
app.use('/public',express.static(__dirname+'/public'));

/views/index.html




    
    Title
    


    

Wellcom to my blog!!!

/public/main.css

body{
    background: blue;
}

NodeJS实战 利用Express&MongoDB搭建博客(2)前后端分离_第2张图片

 

整体流程

    用户发送http请求->url->解析路由->找到匹配的规则->执行指定的绑定函数,返回对应内容至用户
    /public ->静态->直接读取指定目录下的文件,返回给用户
    ->动态->处理业务逻辑,加载模板,解析模板->返回数据给用户

划分模块

    模块划分

    根据功能进行模块划分:前台模块,后台管理模块,API模块

    使用app.use()进行模块划分

    app.js

/**
 * 根据不同的功能划分模块
 */
app.use('/admin',require('./routers/admin'));

app.use('/api',require('./routers/api'));

app.use('/',require('./routers/main'));

    /routers/admin.js

var express = require('express');
var router = express.Router();

router.get('/user',function (req,res,next) {
    res.send('User');
});

module.exports = router;

NodeJS实战 利用Express&MongoDB搭建博客(2)前后端分离_第3张图片

     /routers/api.js

var express = require('express');
var router = express.Router();

router.get('/user',function (req,res,next) {
    res.send('API-User');
});

module.exports = router;

NodeJS实战 利用Express&MongoDB搭建博客(2)前后端分离_第4张图片

    /routers/main.js 

var express = require('express');
var router = express.Router();

router.get('/main',function (req,res,next) {
    res.send('HomePage');
});

module.exports = router;

NodeJS实战 利用Express&MongoDB搭建博客(2)前后端分离_第5张图片

     前台路由&模板

        main模块

        /                                       首页

        /view  内容页

        api模块

        /                                       首页

        /register                           用户注册

        /login                               用户登录

        /comment                        评论获取

        /comment/pots                评论提交

    后台路由&模板

        admin模块

         /                                      首页

        用户管理

        /user                                用户列表

        分类管理          

        /catagory                         分类列表

        /catagory/add                  分类添加

        /catagory/edit                  分类修改

        /catagory/delete              分类删除

        文章内容管理

        /article                             内容列表

        /article/add                      内容添加

        /article/edit                      内容修改

        /aticle/delete                    内容删除

        评论内容管理

        /comment                         评论列表

        /comment/delete               评论删除

功能开发顺序

    功能模块开发顺序

        用户

        栏目

        内容

        评论

    编码顺序

        通过Schema定义设计数据存储结构

        功能逻辑

        页面展示

你可能感兴趣的:(后端,JavaScript,NodeJS)