English | 简体中文
local-mock-middleware
A easy debug middleware for express and koa.
Note: local-mock-middleware is only the server (nodejs) part of local-mock-core, complete local-mock debugging solution needs to install local-mock-easy on the client (H5) at the same time, follow steps:
- Install local-mock-middleware on the nodejs server.
- Install local-mock-easy on the client.
Usage
Install
npm i local-mock-middleware
yarn add local-mock-middleware
Add middleware
Middleware for express
// Use express as an example
const express = require('express')
const createLockMock = require('local-mock-middleware')
const app = express()
// 1. create localMock instance
const localMock = createLockMock({
isLocalMockProxyOpen: process.env.NODE_ENV === 'dev', // ensure not to be used in production!!!
htmlPort: 3000,
})
// 2. oepn local-mock html proxy
localMock.createExpressLocalHtmlProxy(app)
app.listen(3000, function () {
console.log('express start sucessfully port 3000...')
})
Middleware for koa
const Koa = require('koa')
const createLockMock = require('local-mock-middleware')
const app = new Koa()
// 1. create localMock instance
const localMock = createLockMock({
isLocalMockProxyOpen: process.env.NODE_ENV === 'dev', // ensure not to be used in production!!!
htmlPort: 3001,
})
// 2. oepn local-mock html proxy
localMock.createKoaLocalHtmlProxy(app)
// response
app.use((ctx) => {
ctx.body = 'Hello Koa'
})
app.listen(3001, function () {
console.log('koa start sucessfully port 3001...')
})
More use
Config
localMockParamsName
, to modify the parameter name to be intercepted. eg: http://example.com?myLocalMock={entry}
ConfightmlHost
, to define custom html proxy host
ConfightmlPort
, to define custom html proxy port
ConfightmlServerPath
, to define custom html proxy path
const options = {
localMockParamsName: 'myLocalMock',
isLocalMockProxyOpen: process.env.NODE_ENV === 'dev', // ensure not to be used in production!!!
htmlHost: '127.0.0.1',
htmlPort: 3000,
htmlServerPath: '/local-mock-html',
injectHtml: (target) => {
return `<script type="text/javascript">
alert(${target})
</script>`
},
}
const localMock = createLockMock(options)
const client = app.listen(3000, function () {
// Optional Properties use to set htmlPort to client.address().port
localMock.updateExpressPort(client)
console.log('express start sucessfully ...')
})
Function API
function | desc | type |
---|---|---|
createLockMock |
localMock instance | (options) => ins |
ins.createExpressLocalHtmlProxy |
express middleware, to handle html proxy | (app) => void |
ins.updateExpressPort |
express auto update port htmlPort | (client) => void |
ins.createKoaLocalHtmlProxy |
koa middleware, to handle html proxy | (app) => void |
ins.updateKoaPort |
koa auto update port htmlPort | (client) => void |
Options API
params | desc | type | default |
---|---|---|---|
isLocalMockProxyOpen | open state (false means a empty middleware) | boolean |
false |
localMockParamsName | parameter name to be intercepted http://example.com?{localMockParamsName}={entry}
|
string |
localMock |
htmlHost | custom html proxy host | string |
"127.0.0.1" |
htmlPort | custom html proxy port | number |
8899 |
htmlServerPath | custom html proxy path | number |
/local-mock-html |
injectHtml | A function that injects html string | (target) => string |
"" |
FQA
When can I open the middleware?
Important things need to be repeated for three times.
- ensure not to be used in production!!!
- ensure not to be used in production!!!
- ensure not to be used in production!!!
What does local-mock-middleware do ?
if req.query
contains key localMock
or options.localMockParamsName
local-mock-middleware will generate and return a html includes mock function, the mock function will regard req.query[key]
as a page entry and then fetch it, then use document.write()
to rewrite current page.