1.0.0 • Published 8 years ago

express-use v1.0.0

Weekly downloads
2
License
ISC
Repository
github
Last release
8 years ago

Express router based on file system

project
│  app.js
│  package.json
│  package-lock.json
│  webpack.config.js
├─app
│  ├─base
│  │      app-start.js
│  │      req-start.js
│  ├─config
│  ├─route
│  │  │  index.js               => app.use('/')
│  │  │  proxy.js               => app.use('/proxy')
│  │  │  user.js                => app.use('/user')
│  │  ├─site
│  │  │      about.us.js        => app.get('/site/about.us')
│  │  │      contact-us.get.js  => app.get('/site/contact-us')
│  │  └─user
│  │         login.get.js       => app.get('/user/login')
│  │         login.post.js      => app.post('/user/login')
│  └─view
├─dist
├─node_modules
└─static

express-use install

npm i express-use --save-dev

express-use usage

// express
const express = require('express');

// express app instance
const app = express();

// route dir, see project tree
const routeRoot = __dirname + '/route';

// midware before handle http request
// > app.use(baseUrl, midwareList, router);
const midwareList = [];

// ExpressUse
const expressUse = require('express-use');

// load route recursively and synchronously
expressUse.load(app, routeRoot, midwareList);

route file example

// route/user.js
'use strict';

module.exports = (req, res, next) => {
    console.log('route/user.js');
    next();
};

// ──────────────────────────────────────────────────
// │ const router = express.Router();               │
// │ router.use('/', route/user.js);                │
// │ app.use('/user', router);                      │
// ──────────────────────────────────────────────────

// route/user/login.get.js
'use strict';

module.exports = (req, res) => {
    console.log('route/user/login.get.js');
    res.css('user-login.css');
    res.js('user-login.js');
    res.render('user/login', {title: 'Login'});
};

// res.css, res.js, res.render are custom methods

// ──────────────────────────────────────────────────
// │ router.get('/login', route/user/login.get.js); │
// ──────────────────────────────────────────────────

access /user/login will print

route/user.js
route/user/login.get.js

route/user.js is unnecessary.

route/user/login.get.js is required.

route map : path vs file

app.use('/')                   route/index.js)
app.get('/')                   route/index.get.js)
app.use('/proxy')              route/proxy.js)                 // default method use in route root dir
app.get('/site')               route/site/index.js)            // default method get in route sub dir
app.get('/site/about.us',      route/site/about.us.get.js)     // use get when method is unsupported
app.get('/site/contact-us',    route/user/contact-us.js)
app.get('/user/login',         route/user/login.get.js)
app.post('/user/login',        route/user/login.post.js)

app.get('/admin/user/create',  route/admin/user/create.js)
app.post('/admin/user/create', route/admin/user/update.post.js)

app.get('/news/:id',           route/news/#id.get.js)
app.get(regular expression)    unsupported

--------------------------------------------------------

more methods
see http://www.expressjs.com.cn/4x/api.html#app.METHOD

The recommended file name contains the http request method.

1.0.0

8 years ago