-
Notifications
You must be signed in to change notification settings - Fork 8
Home
Welcome to the yog wiki!
yog 是基于kraken-js
的node后端框架,其集成了bigpipe
,fis静态资源管理
等功能,结合基于fis
的前端解决方案yogurt
提高前后端开发效率。
想直接看效果,可以下载demo查看fex-team/yog-app
- 创建App目录
- server.js
- 创建一个controller
- 创建一个页面模板
- 运行
一般yog的一个app需要controllers
、views
、public
、models
、config
等几个目录。
下面创建它们;
# 创建配置文件,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
是项目的入口文件,这个文件里面需要调用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());
就这样你再也不用关心需要不需要use
session中间件等问题,这些在yog
中都准备好了,只需要使用即可。
对于router
的一些改变,一般写express
需要app.get
或app.post
来指定路由。如果不做拆解可能就写在server.js
。
keraken-js
比较好的解决了这个问题,它把router
放到了controller
里面。这样,多人开发页面的时候就不需要到同一个路由配置处进行更改,各个controller
关心各自的router
,yog
也继承了这个特性。
以下说明如何写一个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默认选用的模板引擎是swig
,swig
以高效、精悍、扩展方便著称。
-
创建文件
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
没错,上面的这些特性除了yog定制了目录结构,基本都是kraken-js
的特性。有人就会问,那为啥还整个yog
,就是为了跟FIS结合使用。
FIS极大的提升了前端开发效率和运行效率。而且可以在其基础上比较简单的做一些高级特技,比如bigpipe
。
好吧,其实 yog
支持bigpipe
、FIS静态资源管理
这两个特性。更由于node可以并行输出性能一下就上去了(试试就知道)。
跟FIS结合使用的详细文档可以参见fex-team/yogurt