express+mogoose+socket+session+sass搭建服务器端之各种安装各种依赖看这里

express安装


npm install express-generator


express -h 查看帮助信息 如果安装过全局的可以直接用下面命令


  • 创建express项目


express -e .

npm install



创建各路由



  • 安装sass

npm i node-sass --save-dev


npm i node-sass -g    


配置package.json

scripts:{
	“build”:”node-sass sass -w -o css”
}


  • 安装session

npm install express-session

npm install session-file-store


导入

const session= require(“express-session”);
const FileStore = require(‘session-file-store’)(session);


中间件

const sessionMiddleware = session({
	store:new FileStore(),
	secret:’keyboard cat’,
	cookie:{maxAge:60000}
})

app.use(sessionMiddleware);


router.get(“/“,function(requires){
req.session.lll=lll;
})



  • 安装验证图片

npm install png-word



var PW = require("png-word");
var pw = new PW();


router.get("/vimg",function(req,res){
  var r = new R("abcdefghijklmnopqrst");

  pw.createReadStream(r.random(3)).pipe(res);
  // pw.on("parsed",function(){
  //   this.createReadStream("11132221").pipe(res);
  // })
})



  • npm install liangzeng/random-word
var R = require("random-word");

  var r = new R("abcdefghijklmnopqrst")

  pw.createReadStream(r).pipe(res);


  • 安装module

npm install module



安装mongoldb

cd bin

mkdir data

mongod —dbpath data


npm install mongoose


mac 下启动

./mongod —dbpath data




安装socket

npm i socket.io


最张产生

package.json

{
  "name": "week08-homework",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
    "build": "node-sass ./public/stylesheets/scss -w -o ./public/stylesheets/css"
  },
  "dependencies": {
    "body-parser": "~1.18.2",
    "connect-multiparty": "^2.1.0",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "ejs": "~2.5.7",
    "express": "~4.15.5",
    "express-session": "^1.15.6",
    "express-socket.io-session": "^1.3.2",
    "module": "^1.2.5",
    "mongoose": "^5.0.3",
    "morgan": "~1.9.0",
    "multer": "^1.3.0",
    "png-word": "0.0.7",
    "random-word": "github:liangzeng/random-word",
    "serve-favicon": "~2.4.5",
    "session-file-store": "^1.2.0",
    "socket.io": "^2.0.4"
  },
  "devDependencies": {
    "node-sass": "^4.7.2"
  }
}


app.js配置

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');


var index = require('./routes/index');
var users = require('./routes/users');
var product = require('./routes/product');
var message = require('./routes/message');
var article = require('./routes/article');
var config = require('./routes/config');
var chat = require('./routes/chat');

var multipart = require('connect-multiparty');

const session = require("express-session");
const FileStore = require('session-file-store')(session);
// const sessionMiddleware = session({
//   store:new FileStore(),
//   secret:'abcdefg',
//   cookie:{maxAge:300000}
// });

var expsession = require("express-session")({
  secret:'keyboard cat',
  cookie:{maxAge:800000}
});

//把 express下的session放到io下 iosession用的
var iosession = require("express-socket.io-session")(expsession);




var app = express();

//app连上了server
var server = require("http").Server(app);

//server 与 socket关联
var io = require("socket.io")(server);
server.listen(3000);
//加上端口号 同时去掉最后的exports

io.use(iosession);//加上 iosession

// let firstSocket;

io.on("connection",function(socket){

  socket.on("req",function(data,cb){
    console.log("接受到请求");
    cb();//表示响应的回调函数
  })

  socket.on("say",data=>{
    console.log(socket.handshake.session.num);
    const num = ++socket.handshake.session.num;
    socket.handshake.session.save();//socket环境下更改数据后对express下的也生效,持久化保存
    // io.emit("newsay",data +"num :"+num);
    // socket.emit("newsay",data+"(创建时间: "+ new Date()+ ")");

    io.emit("newsay",data+"    ( "+
    (new Date().getMonth()+1)+"月"+new Date().getDate()+"日"+new Date().getHours()+":"+new Date().getMinutes()
    + ")");

    // io.emit("newsay",data+"    ( "+
    // new Date().getMonth()+1
    // + ")");

  })

  // if(firstSocket){
  //   console.log("firstSocket ===socket : ",firstSocket === socket);
  // }else{
  //   firstSocket = socket;
  // }
  // socket.on("say",data=>console.log(data));
  //
  // socket.emit("welcome","欢迎你");
  // socket.emit("welcome2","hello word");
  // socket.on("question",data=>console.log(data));
});


// app.use(sessionMiddleware);





// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());

app.use(expsession);//为普通的express加上中间件 现在已经不依赖cookie

app.use(express.static(path.join(__dirname, 'public')));

// app.use(multipart({uploadDir:'./temp' }));
// app.use(multipart({uploadDir:'./temp'}));

app.use('/', index);
app.use('/users', users);
app.use('/product', product);
app.use('/message', message);
app.use('/article', article);
app.use('/config', config);
app.use('/chat', chat);
app.use("/lesson19",require("./routes/19"));

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

// module.exports = app;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值