基于文件的节点js路径

时间:2014-05-30 14:34:42

标签: node.js

节点js服务器是否可以为应用程序提供基于文件的路径,就像正常处理PHP / ASP一样。

Request             Page handler
--------------------------------
/                   index.js
/index(.djs)        index.js
/about(.djs)        about.js
/about/me           about.js

这是否可行,请展示实施的示例代码。

3 个答案:

答案 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' ,这些相应路线的操作将映射到这些文件中的方法