Node.js的模块化使用及管理
模块 | 职责 | 要求 |
---|---|---|
app.js | 1. 创建服务;2.做一些服务相关的配置,如模板引擎,body-parser 解析表单post请求体,提供静态资源服务等;3.挂载路由;4.监听端口启动服务 | |
router.js | 创建路由器,并挂载到路由之中 |
附:简单项目创建思路/框架
- 创建目录结构
– 项目目录
– public 公共资源目录(css/js/img -存放jquery. bootstrap.css/js 等)
– views 前端文件目录(静态页/模板页,模板引擎访问)
– mongoose数据库目录(分表文件)
– npm init -y 初始化包说明文件package.json
– npm install --save 安装加载第三方模块
express mongoose body-parser art-template express-art-template
第三方模块 | 作用 | 使用/配置方式 |
---|---|---|
express | express框架 | var express=require(‘express’); var app=express(); |
body-parser | 解析表单post请求 | var bodyParser=require(‘body-parser’);app.use(bodyParser.urlencoded({ extended: false }));app.use(bodyParser.json()); |
art-template/express-art-template | 模板引擎 | app.engine(‘html’,require(‘express-art-template’));app.set(‘views’,path.join(__dirname,’./views’)); |
mongoose | 数据库模型创建与发布 | var mongoose=require(‘mongoose’);var Schema=mongoose.Schema;连接;设计表结构;发布 |
blueimp-md5 | 密码md5加密处理 | var md5=require(‘blueimp-md5’); |
- 模块创建与初始化
–app.js模块(配置使用上述第三方模块及其他,见模块职责)
// app.js模块
// 1. 加载模块
var express=require('express');
var app=express();
var bodyParser=require('body-parser');
// 配置解析表单post请求体数据
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// 配置模板引擎
app.engine('html',require('express-art-template'));/* 渲染文件后缀名/格式*/
app.set('views',path.join(__dirname,'./views'));/*默认目录设置*/
// 配置静态资源服务,公开指定目录
app.use('/public',express.static(path.join(__dirname,'./public')));
app.use('/node_modules',express.static(path.join(__dirname,'./node_modules')));
// 配置挂载路由
var router=require('./router');
app.use(router); //把路由器挂载到app服务中
// 配置全局错误处理中间件,需要放在app.use(router)后面
app.use(function(err,req,res,next){
res.status(500).json({
err_code:500,
message:err.message
})
});
// 监听端口
app.listen(2100,function(){
console.log('Server is started');
})
–route.js模块(创建路由器,并挂载到路由之中,通过exports接口导出router)
var express=require('express');
//引入mongoose模块接口对象
var Stu=require('./mongoose/st');
//引入MD5加密模块
// 引入md5加密
var md5=require('blueimp-md5');
// 创建路由器并挂载
var router=express.Router();
router.get('/',function(req,res){
console.log('Success');
res.setHeader('Content-Type','text/plain;charset=utf-8');
res.end('我成功了')
});
// exports接口对象导出;
module.exports=router;
–st.js mongoose数据库模块(创建表结构并通过exports导出接口对象到router.js中)
// mongoose模块,模型创建与发布
var mongoose=require('mongoose');
var Schema=mongoose.Schema;
// 连接数据库,必须保证mongoose服务已启动,且运行mongod连接数据库
mongoose.connect('mongodb://localhost"27017/itest',{useNewUrlParser:true,useUnifiedTopology:true});
// 设计表结构
var stuSchema= new Schema({
email:{
type:String,
required:true
},
password:{
type:String,
required:true
},
gender:{
type:Number,
enum:[0,1],
default:0
},
date:{
type:Date,
default:Date.now
}
});
// 将文档结构发布为模型
module.exports=mongoose.model('Stu',stuSchema)
- 设计路由表结构
路径 | 方法 | get参数 | post参数 | 备注 |
---|---|---|---|---|
/ | GET | 渲染首页 | ||
/register | GET | 渲染注册首页 | ||
/register | POST | req.body.email;req.body.nickname;req.body.password | 处理注册请求 | |
/login | GET | 渲染登录页面 | ||
/login | POST | req.body.email;req.body.password | 处理登录请求 | |
/logout | GET | 用户退出,处理退出请求 | ||
… | … | … |
- 界面/路由设计
静态页面设计
异步响应/提交
错误码请求
session状态等