iwak-framework
A node micro-framework based on express.js
Requirements
- NPM version 3 (Recommended to use Nodejs v6 LTS)
Installation
Since this framework is published to npm, you can install this with the following command:
$ npm install --save iwak-framework
Getting Started
Because this is core of framework, you should follow this configuration tutorial to make your project running.
First of all, you need to make a project structure like this:
.
├── app
│ ├── controllers
│ │ └── // your controller files lay down here
│ ├── libraries
│ ├── middleware
│ │ └── // your middleware files lay down here
│ ├── models
│ │ ├── // your data model files
│ ├── routes.js <-- this is file where you can define HTTP routes
│ └── views
│ └── // your html files
├── config
│ ├── app.js
│ ├── database.js
│ └── http.js
├── knexfile.js
├── npm_modules // you should learn node js first if you don't know this
├── migrations
│ └── // your migration files
├── package.json // you should learn node js first if you don't know this
├── public <-- directory for public and static files
├── server.js <-- main file
└── .env
Now, let check config/app.js
file, it must contain an express configuration, i.e setting Access-Control-Allow-Origin
. As expected, it only contains express middleware like this:
+ 'use strict';+ + module.exports = function (app) {+ app.use(function(req, res, next) {+ res.header("Access-Control-Allow-Origin", "*");+ res.header("Access-Control-Allow-Headers", "X-Requested-With");+ next();+ });+ };
Then, we'll focus on the file config/database.js
. This file will be loaded by iwak-framework
with bookshelf
object, so you must write it as follows:
+ 'use strict';+ module.exports = function (bookshelf) {+ + };
And, since it will retrieve bookshelf
object, you can add plugins to it:
+ 'use strict';+ module.exports = function (bookshelf) {+ bookshelf.plugin('visibility');+ bookshelf.plugin('pagination');+ };
Now, for the file config/http.js
. It contain a http server and will be loaded by iwak-framework
with express
object:
+ 'use strict';+ const http = require('http');+ + module.exports = function (app) {+ const server = http.Server(app);+ + server.listen(env('APP_PORT', 3000), function () {+ console.info('Listening on post 3000');+ });+ };
Ok, then in the file server.js
where located in project root, we'll put this code to make the app running:
+ 'use strict';+ + const app = require('iwak-framework');+ + require('./app/routes');+ require('./config/http')(app);+ require('./config/boot');
Wait, what is app/routes?
Sorry, I didn't forget, but now I will explain to you what is it.
app/routes.js
will contain the http route code. For example, you can write:
+ 'use strict';+ + const Route = use('Route');+ + Route.group({namespace: 'api', prefix: '/api'}, (Route) => {+ + Route.get('/', 'ExampleController.index');+ + }).error('json');
Then make another directory inside the
controller
with nameapi
and createExampleController.js
inside it.
In the ExampleController.js
write as follows:
+ 'use strict';+ + const Validator = use('Validator');+ const Response = use('Response'); + class UserController {+ constructor() {+ }+ + index(req, res, next) {+ let data = {+ status: true,+ data: {+ foo: "bar"+ }+ }+ + return Response.success(res, data);+ }+ }
Finally, set the environment variable in the .env
file:
+ NODE_ENV=development+ + APP_NAME=+ APP_PORT=3000+ APP_HOST=127.0.0.1+ APP_DEBUG=true+ APP_KEY=+ + DB_CLIENT=postgresql+ DB_HOST=127.0.0.1+ DB_PORT=+ DB_DATABASE=+ DB_USERNAME=+ DB_PASSWORD=+ DB_MIN_CONNECTION=1+ DB_MAX_CONNECTION=1+ + TOKEN_SECRET=secret
Running server
$ node server.js
Done! Now you can access it via http://localhost:3000/api/example, it should return the following json: