Skip to content
xiangshouding edited this page Jul 8, 2014 · 25 revisions

Welcome to the yog wiki!

介绍

yog 是基于kraken-js的node后端框架,其集成了bigpipefis静态资源管理等功能,结合基于fis的前端解决方案yogurt提高前后端开发效率。

快速上手

想直接看效果,可以下载demo查看fex-team/yog-app

  • 创建App目录
  • server.js
  • 创建一个controller
  • 创建一个页面模板
  • 运行

创建App目录

一般yog的一个app需要controllersviewspublicmodelsconfig等几个目录。

下面创建它们;

# 创建配置文件,config.json可以配置中间件,views等信息
$ mkdir config
$ echo '{}' > config/config.json
# 创建controllers文件夹,此文件夹下的文件,yog启动的时候会自动load
$ mkdir controllers
# 创建模板目录views
$ mkdir views
# 创建静态资源目录
$ mkdir public
# App入口文件
$ touch server.js
$ tree
.
├── config
│   └── config.json
├── controller
├── public
├── server.js
└── views

3 directories, 1 file

server.js

server.js是项目的入口文件,这个文件里面需要调用yog,创建一个App并初始化,监听一个端口。

把以下代码放到server.js里面

var yog = require('yog'),
    app = require('express')(),
    port = process.env.PORT || 8000;


app.use(yog()); //启用yog

app.listen(port, function (err) {
    console.log('[%s] Listening on http://localhost:%d', app.settings.env, port);
});

这样整个入口文件已经写好,运行它就可以启动一个yog应用了。

可以从代码看出,使用yog非常简单,由于keraken-js基于express,yog也是,只需要需要使用中间件的方式启用yog即可。

app.use(yog());

就这样你再也不用关心需要不需要usesession中间件等问题,这些在yog中都准备好了,只需要使用即可。

对于router的一些改变,一般写express需要app.getapp.post来指定路由。如果不做拆解可能就写在server.jskeraken-js比较好的解决了这个问题,它把router放到了controller里面。这样,多人开发页面的时候就不需要到同一个路由配置处进行更改,各个controller关心各自的routeryog也继承了这个特性。

以下说明如何写一个controller

创建一个controller

  • 创建文件controllers/index.js
  • 书写controllers逻辑

controller都需要exports出一个函数,参数是router实例。

module.exports = function (router) {
    router.get('/', function (req, res) {
        res.end('hello world');
    });
};

当程序启动,访问http://127.0.0.1/ 时就会在页面输出

hello world

创建一个页面模板

每个app都需要页面模板,yog默认选用的模板引擎是swigswig以高效、精悍、扩展方便著称。

  • 创建文件views/index.tpl

    <!doctype html>
    <html>
        <head>
            <meta charset="utf8" />
            <title> This is a test </title>
        </head>
        <body>
            Hello World!
        </body>
    </html>
  • 使用index.tpl

    //vi controllers/index.js
    module.exports = function (router) {
        router.get('/', function (req, res) {
            res.render('index');
        });
    };

运行

运行之前需要安装yog,为了管理方便,可以在app里面创建package.json,用npm进行管理项目中用到的组件。

package.json

{
  "name": "myapp",
  "version": "0.0.1",
  "description": "myapp",
  "main": "server.js",
  "dependencies": {
    "yog": "~0.0.7"
  }
}

然后

$ npm install

安装app的依赖,这时候yog就会被安装到app/node_modules

最后,运行server.js

$ node server.js

跟FIS结合使用

没错,上面的这些特性除了yog定制了目录结构,基本都是kraken-js的特性。有人就会问,那为啥还整个yog,就是为了跟FIS结合使用。

FIS极大的提升了前端开发效率和运行效率。而且可以在其基础上比较简单的做一些高级特技,比如bigpipe

好吧,其实 yog支持bigpipeFIS静态资源管理这两个特性。更由于node可以并行输出性能一下就上去了(试试就知道)。

跟FIS结合使用的详细文档可以参见fex-team/yogurt

Clone this wiki locally