最近在复习web前端的express框架,准备重新搭建一个新的,准备将流程记录一下。
1. 准备
搭建express框架的第一步,是工具的准备。
express框架是一个基于node.js的开发框架(MVC框架),前提自然是安装好node.js。在安装完node.js之后,由于我的编译器是WebStorm,还需要在settings里将node.js启用。一个工程启用一次即可。
建立工程文件夹,然后创建所需要的文件夹目录:
(由于我做的只是一个简单应用,只在本地测试交互,所以按照最少的创建文件夹了。)
之后是安装相应的模块,在这里我用的是淘宝NPM镜像。使用方式如下:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
安装完CNPM之后,安装相应的模块即可。
cnpm install swig --save
cnpm install body-parser --save
cnpm install cookies --save
cnpm install express --save
cnpm install markdown --save
cnpm install mongoose --save
2. app.js(开关)和连接MongoDB(另一个开关)
做完准备之后我们在第一级目录下创建一个js文件app.js,作为工程的开始。
首先把该引入的模块都引入了:
var express = require('express');
var swig = require(‘swig’);
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
定义app方法:
var app = express();
定义相关:
app.use(bodyParser.urlencoded({extended:true});
用来解析request中body的urlencoded字符,只支持utf-8的编码的字符,也支持自动的解析gzip和zlib。返回的对象是一个键值对,当extended为false的时候,键值对中的值就位‘String’或‘Array’形式,为true的时候,则可以为任何数据类型。
app.engine('html',swig.renderFile);
app.set('views','./views'); //第一个代表视图层,第二个代表视图路径
app.set('view engine','html'); //视图引擎 取消模板缓存数据
swig.setDefaults({cache:false});//设置swig页面不缓存
//路由转发,分别转发到main.js/admin.js/api.js
app.use("/",require("./routers/main")); //前台路由
app.use("/admin",require("./routers/admin")); //后台路由
app.use("/api",require("./routers/api")); //api路由
app.use(function(request,response,next){
next(); //中间件规范以后继续执行
});
app.use('/public',express.static(__dirname+'/public'));
var url = "mongodb://localhost:27017/’工程名‘";
mongoose.Promise = global.Promise;
mongoose.connect(url,{useNewUrlParser:true},function(err){
if(err!=null){
console.log("数据库连接失败"); //如果出现错误则在控制台报错
}
else{
console.log("数据库连接成功");
var server = app.listen(8888,function(){
console.log("服务开启"); //连接成功,开启监听
});
}
});
之后在cmd命令行写行连接MongoDB的代码。为了方便以后运行,写个批处理文件。
新建记事本文件,敲入代码:
mongod -dbpath=F:\exp\db -port=27017
F:\exp\db是我工程db文件夹的路径。27017port是MongoDB的端口。
写好之后,保存文件。将文件夹后缀改为’.bat’,设置为批处理文件,以后每次要连接MongoDB时,打开bat批处理文件即可。
当看到‘waiting for connection on port 27017’表示MongoDB已经开启。
3.路由层的基本设置
- 前台路由
- 后台路由
- api路由
在app.js文件中设置好了对路由的转发,在routers文件夹中我们创建相应的js文件。
以前台路由为例子:
//前台路由
var express = require(’express‘);
var routers = express.Router();
routers.get('/',function(request,response,next){
res.send('<h1>这是前台首页</h1>');
});
module.exports = routers;
那么当我们开启MongoDB并运行app.js,进入localhost:8888时,就会显示h1标题格式的“这是前台首页”。
在views\main内新建index.html,在前台路由设置对index.js的转发。
var express = require('express');
var routers = express.Router();
routers.get('/',function(req,res,next){
res.render('main/index');
});
module.exports = routers;
那么打开localhost:8888就会显示index.html的页面,关于index将在之后写到。
基本了解了前台路由的转发,我们把后台、api路由的基本框架写一遍。
由于内容还没写到,就先不用写。
//后台路由
var express = require('express');
var routers = express.Router();
module.exports = routers;
//api路由
var express = require('express');
var routers = express.Router();
module.exports = routers;
到此,就是路由层的基本设置。