Dufing – A folder system based Node.js webserver – Falost的小窝

Dufing – A folder system based Node.js webserver

Node 神棍 177℃ 0评论

Dufing – A folder system based Node.js webserver


Dufing 是一个基于文件系统的Node.js webserver, 他可以自动根据文件结构读取router文件,同时支持第三方middleware。

项目地址

github

文档

中文文档

安装

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

如果你觉得这篇文章不错或者对你有帮助,想请我喝一杯咖啡,可以打赏
喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址