0.2.2 • Published 8 years ago

exseed v0.2.2

Weekly downloads
20
License
MIT
Repository
github
Last release
8 years ago

Exseed

Build Status npm version Code Climate Dependency Status

A highly extensible nodejs framework

Features

  • Highly Extensible
  • Easy to Use
  • Full Stack
  • ORM Integrated
  • ES6/ES7 Syntax
  • Isomorphic

Workflow & Implementation Details

ItemChoice
Build ToolWebpack
AutomationGulp
BackendNode, Express(>=4.0.0)
ORMWaterline
FrontendReact, Redux/Alt, React-Router
TestingMocha
CITravis CI

Compare to Other Frameworks

ExseedExpressKoaSailsHapi
Extensibility★★★★★★★★★★★★★★☆★★★★☆★★★★☆
Threshold★★★☆☆★★☆☆☆★★★☆☆★★★★☆★★☆☆☆
Build Speed★★★★★★☆☆☆☆★☆☆☆☆★★★★☆★☆☆☆☆
Full Stack
ORM
Modern Syntax
Isomorphic

Usage

  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

Example - Todo List

  1. File Structure

  1. Update installed apps

    Tell exseed what apps you want to use

    // settings.js
    
    export default {
      installedApps: [
        './exseed.core',
        // other apps
        './todoapp',
      ],
      // other settings
    };
  2. The server side

    // todoapp/settings.js
    
    export default {
      name: 'todo',
    };
    // todoapp/models.js
    
    export const todolist = {
      identity: 'todolist',
      attributes: {
        content: {
          type: 'string',
          required: true,
        },
      },
    };
    // 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);
          });
      });
    }
  3. The client side

    All react related files are inside todoapp/flux folder

    // todoapp/flux/boot.js
    
    import React from 'react';
    import { render } from 'react-dom';
    import { Router, browserHistory } from 'react-router';
    import routes from './routes';
    
    render(
      <Router history={browserHistory}>
        {routes}
      </Router>
    , document.getElementById('exseed_root'));
    // 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 (
      <Route path="/todo" component={MainPage} EXSEED_APP_NAME={settings.name} />
    );
    // 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 (
          <BaseLayout
            title="Exseed - Todo"
            scripts={scripts}>
            <h1>Todo</h1>
            <input
              type="text"
              onKeyDown={this.handleKeyDown.bind(this)}
              onChange={this.handleChange.bind(this)}
              value={this.state.content} />
            <ul>
              {this.state.todos.map(todo => (
                <li key={todo.id}>
                  {todo.content}
                </li>
              ))}
            </ul>
          </BaseLayout>
        );
      }
    };

See the complete todo app

Docs

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.15

8 years ago

0.1.14

8 years ago

0.1.13

8 years ago

0.1.12

8 years ago

0.1.11

8 years ago

0.1.10

8 years ago

0.1.9

8 years ago

0.1.8

8 years ago

0.1.7

8 years ago

0.1.6

8 years ago

0.1.5

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago