javascript - 如何在给定的 Express 文件中分隔路线?

标签 javascript express routes

我想将我的路由与 app.js 文件分开,但它也有功能,所以我不确定如何导入内容并从 app.js 文件中分离功能,哪些需要保留,哪些不需要保留 我的 app.js 文件:

var express = require('express');

var passport=require('passport');
var passportLocal=require('passport-local').Strategy;
var path = require('path');

var cookieParser=require('cookie-parser');
var expressSession=require('express-session');
var bodyparser=require('body-parser');

var app = express();
var controlleri=require('./controllers/controller_2');
var mongoose_controller=require('./controllers/mongoose_controller');
var user_controller=require('./controllers/user_controller');
var booking_controller=require('./controllers/booking_controller');
var login_message;
var therapist_controller =require('./controllers/therapist_controller');

app.set('view engine','ejs');


app.use(bodyparser.urlencoded( {extended:false}));

app.use(bodyparser.json());
app.use(cookieParser());
app.use(expressSession({
    secret:'secret',
    resave:false,
    saveUninitialized:false
}));

app.use(passport.initialize());
app.use(passport.session());

passport.use('local',new passportLocal(function(username,password,done){

 user_controller.login(username,password,function(value) {
    if (value) {


      done(null, {
        id: username,
        type: true
      });

    } 
    else {

      done(null, null);
    }
}
);
}));

passport.use('local2',new passportLocal(function(username,password,done){
    console.log(username+password+"haha");

 therapist_controller.login(username,password,function(value) {
    if (value) {

        console.log("logged from server");
      done(null, {
        id: username,
        type: false
      });

    } 
    else {
   console.log("logged not from server");
      done(null, null);
    }
}
);
}));



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

passport.serializeUser(function(user,done){

    done(null,user)

});

passport.deserializeUser(function(user,done){
    done(null,{id:user.id,type:user.type});
});




app.get('/therapist_data',mongoose_controller.finds);

app.get('/api/booking/user',user_controller.getuser);

app.get('/api/session_data',function(req,res){
    if(req.isAuthenticated()){
        var users=JSON.stringify(req.user.name);
        console.log(users);
        res.send(req.user.name);
    }else{
        res.send(401);
    }
});

app.get('/era',controlleri.create);

app.get('/login',function(req,res){
    if(req.isAuthenticated()){
        res.redirect('/home');
    }else{
    res.render(__dirname+'/client/views/login',{
        error:""
    });
}
});

app.get('/register',function(req,res){
    res.render(__dirname+'/client/views/register',{
        error:""
    });
});

app.get('/api/booking/user/adress',user_controller.getaddress);

app.post('/register',user_controller.register);



app.post('/login',passport.authenticate('local', { successRedirect: '/home',
   failureRedirect: '/loginerror'
    }));

app.get('/loginerror',function(req,res){
    res.render(__dirname+'/client/views/login',{
        error:"Invalid username or password"
    });
});

app.post('/loginerror',passport.authenticate('local', { successRedirect: '/home',
   failureRedirect: '/loginerror'
    }));

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

    if(req.isAuthenticated() && req.user.type){
        console.log("true");
        console.log(req.user.type);
        res.render(__dirname+'/client/views/home',{
        isAuthenticated:true,
        user:req.user
    });

    }else{
        console.log("false");

        res.render(__dirname+'/client/views/home',{
        isAuthenticated:false,
        user:req.user
    });
    }




});

app.get('/therapist-select-days',function(req,res){
    res.render(__dirname+'/client/views/therapist_days_select')
});

app.get('/api/get_booked_days',therapist_controller.get_booked_days);

app.get('/logout',function(req,res){
    req.logout();
    res.redirect('/home');
});

app.post('/era',function(req,res){
    console.log("got request");
    controlleri.book(req,res);
    booking_controller.book(req,res);
    console.log("done in server.js");

});

app.post('/api/therapist/book_days',controlleri.bookDates);

app.post('/ur-book',function(req,res){

    console.log("got post request");
    controlleri.book(req,res);
    booking_controller.bookur(req,res);
    console.log(req.body);
    console.log("done in server.js");
});

app.post('/api/therapist-login',passport.authenticate('local2'),function(req,res){
     res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('okay');
});

app.post('/therapist-register',therapist_controller.register);
app.get('/api/therapist-home',function(req,res){
    if(req.user && !req.user.type){
        console.log("allowed");
        res.send(req.user);


    }else{
        console.log("not allowed");
        res.send(401);
    }
});

app.use('/js', express.static(__dirname));

app.get('*', function (req, res) {
    res.sendFile(__dirname+'/client/views/index.html');
});





app.listen(3000,function(){
  console.log("server strated");
})

// catch 404 and forward to error handler

module.exports = app;

请注意,最后一个甚至包含 Angular 路线,所以我也需要将其分开吗?

最佳答案

您可以拥有一个 routes.js 文件并在其中包含所有路由。

在 app.js 中

require('./path/to/routes')(app);

//添加登录处理程序

app.use(require('./path/to/login'));

在routes.js中

module.exports = function (app) {
    app.use('/therapist-select-days', require('./path/to/therapist-select-days'));
};

在 therapy-select-days.js 中

'use strict';

let express = require('express'),
    router  = express.Router();

router.get('/', function(req, res, next) {
  //do whatever;
});

module.exports = router;

在login.js中 添加用于登录注销的处理程序以及执行此操作所需的通行证步骤。

关于javascript - 如何在给定的 Express 文件中分隔路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35981288/

相关文章:

javascript - 为什么我的 javascript 地理编码函数返回空白结果?

javascript - 如何将参数传递给通过 Grunt 调用的 Mocha 测试

javascript - 让用户对每个主题仅投票一次,但他们可以改变主意

php - AJAX 调用的 Laravel Route 无法正常工作

ruby-on-rails - Rails - 使用 jbuilder 时的空白 json 文件

Javascript promise 不会延迟函数执行

javascript - Angular JS 下拉菜单使用 ng-click 和 ng-show 显示动态内容?

html - pug - 编译后嵌套不正确 - 包含与扩展

node.js - 如何为 express.js 服务器设置 SSL 证书?

Android显示两个地理点之间的行车路线