节点js服务器是否可以为应用程序提供基于文件的路径,就像正常处理PHP / ASP一样。
Request Page handler
--------------------------------
/ index.js
/index(.djs) index.js
/about(.djs) about.js
/about/me about.js
这是否可行,请展示实施的示例代码。
答案 0 :(得分:3)
我在这里走出困境,你的重点更多地放在基于文件的解决方案上。假设/lorem
和/lorem/ipsum
应该映射到名为lorem.js
的处理程序文件。
所以这是ExpressJS解决方案的另一个例子:
npm install express
之后创建一个包含以下代码的app.js
:
var express = require('express');
var app = express();
var fs = require('fs');
var path = require('path');
var handlerPath = path.join(path.dirname(__filename), 'handler');
var files = fs.readdirSync(handlerPath);
process.chdir(__dirname);
files.forEach(function (filepath) {
var handlerName = path.basename(filepath, path.extname(filepath));
var handler = require(path.join(handlerPath, filepath));
console.log(handlerName);
var regEx = new RegExp('^\/' + handlerName + '(\.djs){0,1}(\/.*)*$');
app.get(regEx, handler);
if (handlerName === 'index') {
app.get('/', handler);
}
});
app.listen(3000);
假设您有一个名为handler
的目录,其中至少应包含index.js
。
每个文件都应包含一个函数module.export = function (req, res) {}
,以便它返回您的特定内容。
即。的处理程序/ index.js 强>:
module.exports = function (req, res) {
res.send('index handler');
};
答案 1 :(得分:2)
是的,使用Node.JS Express Framework非常简单。 Express是节点的Web开发框架。路由将链接到这些javascript文件上公开的方法,而不是将路由直接链接到javascript(.js)文件。以下是一系列视频教程的link,它们将帮助您了解expressJS并立即开始实现您的目标
答案 2 :(得分:1)
这是使用expressJS的非常简单的实现。 先做
npm install express-3.1.0
以下是3个文件,app.js(主服务器文件),about.js和index.js。将这3个文件放在同一文件夹中并运行命令
node app.js
确保您的计算机中已安装节点。这是app.js的代码
var express = require('express')
, index = require('./index.js')//The index.js as you wanting it to be
, about = require('./about.js') //again the about.js file
, http = require('http');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.use(app.router);
});
app.get('/', index.indexPage);//calling indexPage method from index.js for /
app.get('/index',index.indexPage);//calling indexPage method from index.js for /index
app.get('/about', about.list);//calling list method from about.js for /about
app.get('/about/:id',about.thisUser);//calling thisUser method from about.js for /about
http.createServer(app).listen(app.get('port'), function(){
console.log(" Express服务器侦听端口" + app.get(' port')); });
这是index.js的代码
exports.indexPage = function(req, res){ //exposing the indexPAge method
res.end('This is the index PAge');
};
以下是about.js的代码
exports.list = function(req, res){ /*exposing the list method to be able to be called from another file */
res.end('Enter about the specific user');
};
exports.thisUser = function(req,res){
res.end("You want to know about the user:" + req.params.id);
};
现在转到您的浏览器并访问路线' 127.0.0.1:3000 /' ,' 127.0.0.1:3000 / index',127.0.0.1:3000 / about',127.0.0.1:3000 / about / me' ,这些相应路线的操作将映射到这些文件中的方法