2017-08-15 77 views
0

我正在使用vue.js来编写应用程序,并且我嘲笑dev-server.js中的localhost的登录api,现在我想将有关登录api的代码分离为独立的文件,我该怎么做?此外,还有一些关于CORS一些代码,这里是代码:如何将vue中的dev-server.js文件拆分为几个分离的文件?

var app = express() 
var bodyParser = require('body-parser') 
var multer = require('multer') 
var upload = multer() 

app.use(bodyParser.json()) 
app.use(bodyParser.urlencoded({extended: true})) 
// CORS 
var allowCrossDomain = function (req, res, next) { 
    res.header('Access-Control-Allow-Origin', 'http://localhost:8080') 
    res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE') 
    res.header('Access-Control-Allow-Headers', 'Content-Type, X-Token') 
    res.header('Access-Control-Allow-Credentials', 'true') 
    next() 
} 
app.use(allowCrossDomain) 



// mock localhost api 
var apiRoutes = express.Router() 
// login api; 
const userAccountList = ['100000', '100001', '100002', '100003'] 
apiRoutes.post('/user/login', upload.array(), function (req, res) { 
    if (userAccountList.indexOf(req.body.account) < 0){ 
    return res.json({ 
     code: 50000, 
     msg: 'the account or the password is not correct, please try again' 
    }); 
    } 
} 
app.use('/api', apiRoutes); 

回答

0

(我认为这是一个有关节点问题和表达,而不是vue.js)

虽然表达的是基本建成与中间件的Web应用程序,我认为这是一次你的逻辑分割成不同的中间件。

所以,你可以把你的登录逻辑到一个独立的.js文件像中间件:

// login.js 

const userAccountList = ['100000', '100001', '100002', '100003'] 

const loginMiddleware = function (req, res, next) { 
    if (userAccountList.indexOf(req.body.account) < 0){ 
    res.json({ 
     code: 50000, 
     msg: 'the account or the password is not correct, please try again' 
    }); 
    } 
}; 

module.exports = loginMiddleware; 

然后从你的应用程序要求它像:

// app.js 

const loginMiddleware = require('./login'); 

// ... 

apiRoutes.post('/user/login', loginMiddleware); 

下面是官方文件明确关于如何正确编写你的中间件:https://expressjs.com/en/guide/using-middleware.html

+0

顺便说一句,有一个CORS官方中间件:https://github.com/expressjs/cors。所以你不需要自己写。 –

0

也许检出一个模块捆绑像webpack。它允许您将代码拆分成可以加载在一起的不同捆绑包。