1.node基础模块的使用
Buffer:二进制数据处理模块
Events:事件模块
fs:文件系统模块
Net:网络模块
Http:http模块
nodejs 查询手册 https://nodejs.org/api/
2.第三方模块&中间件
body-parser:解析post请求数据
cookies:读/写cookie
swig:模板解析引擎
mongoose:操作mongodb数据
3.node程序入口文件实例
//程序入口文件
//加载express模块
const express = require("express");
//加载模板模块,处理前后端的页面
const swig = require("swig");
//加载数据库模块
const mongoose = require("mongoose");
//加载解析模块
const bodyParser = require("body-parser");
//加载cookies模块
const Cookies = require("cookies");
//引入User
const User = require("./models/User.js");
//创建应用,这个应用有app应用 http.createServer();
var app = express();
/*
配置中间件
定义当前所使用模板引擎(页面要用什么模板语言来渲染) render
swig.renderFile
第一个参数:模板引擎的名称,同时也是模板文件的后缀
第二和参数:用于哪种方式进行模板内容的解析
*/
app.engine("html", swig.renderFile);
/*
设置模板文件的存放目录
第一个参数 必须是views
第一个参数 目录
*/
app.set("views", "./views");
/*
注册所使用的模板引擎
第一个参数 必须是 view engine
第二个参数 app.engine 第一个参数一样
*/
app.set("view engine", "html");
/*
【注】在开发阶段,取消模板缓存
*/
swig.setDefaults({ cache: false });
/*
app.get() app.post() 精准匹配
app.use() 只要经过这个路由就触发
*/
//设置静态资源的加载路径
app.use("/public", express.static(__dirname + "/public"));
//body-parser设置
app.use(bodyParser.urlencoded({ extended: true }));
/*
设置cookies
next() 是用于,接着执行后续的代码,如果遇到异步操作,我们可以通过next完成异步操作串行。
*/
app.use(function (req, res, next) {
//后续所有的页面上都可以通过 req.cookies调用cookie
req.cookies = new Cookies(req, res);
/*
每一次加载页面的时候,都会先来加载app.js,在这里判断用户是否已经登录
再将数据,分发到各个页面
*/
req.userInfo = {};
if (req.cookies.get("userInfo")) {
try {
req.userInfo = JSON.parse(req.cookies.get("userInfo"));
//获取当前登录用户的用户类型,是否是管理员
User.findById(req.userInfo._id).then(function (userInfo) {
req.userInfo.isAdmin = Boolean(userInfo.isAdmin);
next();
})
} catch (error) {
console.log(error);
next();
}
} else {
next();
}
})
//监听跳转路径
app.use("/", require("./routers/main"));
app.use("/api", require("./routers/api"));
app.use("/admin", require("./routers/admin"));
//链接数据库
mongoose.connect("mongodb://127.0.0.1:27017", function (err) {
if (err) {
console.log("数据库链接失败:" + err);
} else {
console.log("数据库链接成功");
//监听端口号
app.listen("8888");
console.log("listen to http://localhost:8888");
}
})