Zeta.js以内置服务

前言

Zeta.js 是一款为node打造的轻量级后端框架,引入了许多angular的概念,可让你以一种不一样于express的更有层次的方式编写后端代码。这里是Zeta的中文文档。html

概览

Zeta.js提供了一些十分常见的服务给后端web开发者们使得工做更加简单方便。在接下来的内容里,咱们将分别介绍这些内置服务。node

渲染

渲染服务既能够用于字符串也能够用于文件,目前还只支持html文本和swig模板,可是你能够十分方便地扩展这一服务由于它是使用Provder实现的。web

渲染字符串

你须要显式地使用Provider $render来实现字符串的渲染,字符串里也能够包含变量。express

jsdemo.get('/',function($scope,$render){
    $scope.end($render.text('<p></p>'),{
        msg:"hello,world"
    });
});
//demo is a module

渲染文件

咱们暴露出一个简易的函数接口供html或swig文件的渲染。json

jsdemo.get('/',function($scope){
    $scope.render('/index.swig',{
        title:'Welcome'
    })
});

Cookie

Cookie服务在章节工厂里已经提到过,而实际上它也确实是用Factory实现的。后端

提取cookie

jsvar user=$cookie.val('user');
//return a cookie named user

设置cookie

js//reset the value of cookie
$cookie.val('user',Json.stringfy({name:'bevis'}));
//initialize the cookie
$cookie.val('user','bevis',{
    path:'/',
    maxAge:1000
});
//set value of cookie & cookie 
$cookie.val('user','bevis','maxAge',10000);

//write the cookie to client
$cookie.write($scope);

//a complete example
demo.get('/',function($scope,$cookie){
    $cookie.val('user','bevis',{
        path:'/user',
        maxAge:10000
    });
    $cookie.write($scope);
    $scope.send('').end();
});

表单

咱们使用大名鼎鼎的formidable插件来处理表单提交,不管是post方法提交的json对象仍是文件上传的form-data,均可以处理。工厂$form会返回一个formidable中的IncomingForm对象,其他的你能够参照formidable的文档。数组

jsdemo.post('/',function($scope,$form){
    .....
});
//$form is a IncomingForm object of formidable

静态服务器

静态服务器功能返回与请求路径一致的静态文件若是你并无为这些路径指定处理函数。服务器

开启服务

jsdemo.config('public',__dirname+'/public');
demo.load();
demo.any('static');

举个例子,当你发起对于路径'/img/avatar.jpg'的请求时,客户端将获得文件路径为'/public/img/avatar.jpg'的图像。若是文件不存在的话,若是你设置了的话,你应该会获得一个404。对于子目录的请求也支持,同时你能够省略路径最末端的'/'字符。cookie

Index的状况

静态服务器会自动查找由请求指定的目录下名为index有特定后缀的文件,后缀能够由你设定。目前支持的后缀有html,htm及md三种。设置方法以下。框架

jsdemo.config.of('built-in').of('static-server').val('indexFile',['.html','.md']);
//allow index file with suffix as html or md
//you get /views/index.html when request for path /views

另外,后缀名的优先级同他们在配置数组里的顺序一致,以上文为例,html文件优先于md文件,两者同时存在时会返回html文件。

相关文章
相关标签/搜索