Comparing version
@@ -325,3 +325,3 @@ "use strict"; | ||
response = errorController.get('action_' + errorAction)(response); | ||
response = errorController.get('action_' + errorAction).call(errorController, response); | ||
if (response.trace) { | ||
@@ -328,0 +328,0 @@ this._render(response.trace); |
@@ -5,3 +5,3 @@ { | ||
"description": "Powerful lightweight mvc framework for nodejs", | ||
"version": "0.1.0-beta-3", | ||
"version": "0.1.0-beta-4", | ||
"dependencies" : { | ||
@@ -8,0 +8,0 @@ "mongoose": "3.8.x", |
119
README.md
@@ -1,2 +0,119 @@ | ||
mvcjs [](https://travis-ci.org/igorzg/node-mvc) | ||
MVC JS [](https://travis-ci.org/igorzg/node-mvc) beta | ||
===== | ||
Powerful lightweight mvc framework for nodejs inspired by [Yii](http://www.yiiframework.com/) | ||
Features | ||
==== | ||
1. Fully extensible | ||
2. TDD driven | ||
3. Type checking at runtime | ||
4. Custom DI | ||
5. Component based | ||
6. Twig (swigjs) templating engine | ||
7. Dynamic routing | ||
8. Logger | ||
[Demo application](https://github.com/igorzg/mvcjs-testapp) | ||
Getting started | ||
==== | ||
npm install mvcjs | ||
index.js | ||
```javascript | ||
var di = require('mvcjs'); | ||
var framework = di.load('bootstrap'); | ||
framework.setBasePath(__dirname); | ||
framework.init('app/', 'env.json'); | ||
``` | ||
app/env.json | ||
```json | ||
{ | ||
"aliases": [ | ||
{ | ||
"key": "assetsPath", | ||
"value": "@{basePath}/assets" | ||
} | ||
], | ||
"components": [ | ||
{ | ||
"name": "core/logger", | ||
"enabled": true, | ||
"write": true, | ||
"publish": true, | ||
"console": true, | ||
"port": 9001, | ||
"file": "server.log" | ||
}, | ||
{ | ||
"name": "core/router", | ||
"errorRoute": "core/error" | ||
}, | ||
{ | ||
"name": "core/favicon", | ||
"path": "@{basePath}/favicon.ico" | ||
}, | ||
{ | ||
"name": "core/view", | ||
"themes": "@{appPath}/themes/", | ||
"views": "@{appPath}/views/", | ||
"theme": "default", | ||
"cache": true | ||
}, | ||
{ | ||
"name": "core/assets", | ||
"path": "@{basePath}/storage/", | ||
"hook": "^\\/assets" | ||
}, | ||
{ | ||
"name": "db/mongo", | ||
"connection": "mongodb://localhost/testdb" | ||
} | ||
], | ||
"config": "config-test.js", | ||
"assetsPath": "@{assetsPath}", | ||
"port": 9000 | ||
} | ||
``` | ||
app/config-test.js | ||
```javascript | ||
module.exports = function (componet, di) { | ||
"use strict"; | ||
var viewLoader, router, | ||
logger = componet.get('core/logger'), | ||
loggerModel = di.load('@{modelsPath}/logger'); | ||
viewLoader = componet.get('core/view'); | ||
viewLoader.setTheme('home'); | ||
// bind logger hook | ||
logger.addHook(loggerModel.save.bind(loggerModel)); | ||
router = componet.get('core/router'); | ||
router.add([ | ||
{ | ||
pattern: 'home/<action>', | ||
route: 'home/<action>' | ||
}, | ||
{ | ||
pattern: 'posts/<action:(create|update|delete)>', | ||
route: 'posts/<action>', | ||
method: ['GET', 'POST'] | ||
}, | ||
{ | ||
pattern: 'user/<id:(\\d+)>', | ||
route: 'user/view' | ||
} | ||
]); | ||
router.add({ | ||
pattern: '/', | ||
route: 'home/index' | ||
}); | ||
}; | ||
``` | ||
104833
2.26%120
3900%