A highly extensible nodejs framework
npm install exseed



A highly extensible nodejs framework
- Highly Extensible
- Easy to Use
- Full Stack
- ORM Integrated
- ES6/ES7 Syntax
- Isomorphic
| Item | Choice |
|------------|--------|
| Build Tool | Webpack |
| Automation | Gulp |
| Backend | Node, Express(>=4.0.0) |
| ORM | Waterline |
| Frontend | React, Redux/Alt, React-Router |
| Testing | Mocha |
| CI | Travis CI |
| | Exseed | Express | Koa | Sails | Hapi |
| ------------- | ------ | ------- | ------ | ------ | ------ |
| Extensibility | ★★★★★ | ★★★★★ | ★★★★☆ | ★★★★☆ | ★★★★☆ |
| Threshold | ★★★☆☆ | ★★☆☆☆ | ★★★☆☆ | ★★★★☆ | ★★☆☆☆ |
| Build Speed | ★★★★★ | ★☆☆☆☆ | ★☆☆☆☆ | ★★★★☆ | ★☆☆☆☆ |
| Full Stack | ✔ | | | ✔ | |
| ORM | ✔ | | | ✔ | |
| Modern Syntax | ✔ | | ✔ | | |
| Isomorphic | ✔ | | | | |
1. Install CLI
```
$ npm install -g exseed-cli
2. Clone the boilerplate project
3. Install dependencies
``
$ cd exseed-boilerplate
$ npm install
4. Run it
``
$ sd build --watch
$ sd init
$ sd serve
1. File Structure
``
-
----- settings.js
----- exseed.core/
----- todoapp/
--------- settings.js
--------- models.js
--------- routes.js
--------- flux/
------------- boot.js
------------- routes.js
------------- views/pages/MainPage.js
-----
-----
-----
2. Update installed apps
Tell exseed what apps you want to use
`js
// settings.js
export default {
installedApps: [
'./exseed.core',
// other apps
'./todoapp',
],
// other settings
};
`
3. The server side
`js
// todoapp/settings.js
export default {
name: 'todo',
};
`
`js
// todoapp/models.js
export const todolist = {
identity: 'todolist',
attributes: {
content: {
type: 'string',
required: true,
},
},
};
`
`js
// todoapp/routes.js
import { models } from 'exseed';
export default function routes({ app }) {
app.get('/api/todolist', (req, res) => {
models.todolist
.find()
.then((todolist) => {
res.json(todolist);
});
});
app.post('/api/todolist', (req, res) => {
models.todolist
.create(req.body.todo)
.then((todo) => {
res.json(todo);
});
});
}
`
4. The client side
All react related files are inside todoapp/flux folder
`js
// todoapp/flux/boot.js
import React from 'react';
import { render } from 'react-dom';
import { Router, browserHistory } from 'react-router';
import routes from './routes';
render(
{routes}
, document.getElementById('exseed_root'));
`
`js
// todoapp/flux/routes.js
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import settings from '../settings';
import MainPage from './views/pages/MainPage';
export default (
);
`
`js
// todoapp/flux/views/pages/MainPage.js
import React from 'react';
import BaseLayout
from '../../../../exseed.core/flux/views/layouts/BaseLayout';
export default class MainPage extends React.Component {
...
render() {
const scripts = [
'https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js',
'/todo/js/bundle.js',
];
return (
scripts={scripts}>
See the complete todo app