Dufing – A folder system based Node.js webserver
Dufing 是一个基于文件系统的Node.js webserver, 他可以自动根据文件结构读取router文件,同时支持第三方middleware。
项目地址
文档
安装
npm install --save dufing
快速上手
1. app.js
JavaScript
/**
* app.js
* 使用dufing只需简单的require,然后实例化即可
*/
'use strict';
let Dufing = require('dufing');
let site = new Dufing({
// 指定端口 默认端口是8124
port: 8333
});
2. root/index.js
/**
* root/index.js
* 默认情况下 root 为代码的根目录
* 访问 127.0.0.1:8333/ 系统会自动的查找 `root/index.js`
* 具体的路由规则,详见路由模块的介绍
*/
var render = function() {
// this.req 相当于请求的request
// this.res 相当于请求的response
this.res.writeHead(200, {
'Content-Type': 'text/plain'
});
this.res.end('welcome to dufing');
}
// module.exports 将需要执行的代码块抛给dufing处理
module.exports = render;
3. static/*.*
默认情况下,static为静态资源目录,所有符合规则的静态资源都会被直接读取到。
比如访问
http://hostname/test.js
系统会尝试访问 static/test.js
如果不存在返回404
4. 模版引擎 jade | hbs
jade
this.jade.render(data)
其中data为Object对象,是传递给jade文件模板的数据,该方法会自动查找当前目录下同名的.jade文件,如访问 http://hostname/resume/new 对应的动态路由文件为 /root/resume/new.js , 那么此时jade插件回去尝试寻找 /root/resume/new.jade 文件,如果有就会带着数据去编译并返回给浏览器。
hbs
this.hbs.render(filePath,{})
这里我们可以传递两个参数,(filePath、{}) 其中第一个参数 filePath 是String类型 , 指定当前视图模板文件名称,如果不指定风格目录,这里轻传递空字符串;第二个参数是Object对象,传递给hbs模版文件的数据,结构:
/**
* data 为传给.hbs文件的变量
* path 为模版风格文件所在目录,如果这里不指定目录,filePath 的参数无效,模版会查找对应的动态路由文件名,这里会走jade的方法
* layout layout的文件名称
*/
{
data: {
title: 'dufing',
body: 'welcome use dufing'
},
path:config.hbs.viewPath,
layout:'layout-default'
}
使用hbs可以注册整个模版目录,以便使用 {{> header}}
语法
可以指定模版文件的后缀名,默认为.hbs
目录注册方法
let Dufing = require('dufing');
let site = new Dufing({
// 指定端口 默认端口是8124
port: 8333
});
site.hbs.use({
viewPath : path.dirname(path.join(__dirname,'../'))+ '/view/themes/1.0',//前台视图模版
adminViewPath : path.dirname(path.join(__dirname,'../'))+ '/view/admin',//管理后台视图模版
exname : '.html'
})
分别指定目录的设计初衷,是为了让前后台模版文件分离
使用方法:
const config = require('../../system/config/config');
var renderGet = function () {
this.hbs.render('index',{
data: {
title: 'dufing',
body: 'welcome use dufing'
},
path:config.hbs.adminViewPath,
layout:'layout-default'
});
};
exports.get = renderGet;
示例
转载请注明:Falost的小窝 » Dufing – A folder system based Node.js webserver