0.2.2 • Published 9 years ago

exseed v0.2.2

Weekly downloads
20
License
MIT
Repository
github
Last release
9 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

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.15

9 years ago

0.1.14

10 years ago

0.1.13

10 years ago

0.1.12

10 years ago

0.1.11

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago