1.0.0 • Published 8 years ago
express-use v1.0.0
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