models: fix state namespace
This commit is contained in:
@@ -88,7 +88,6 @@ document.body.appendChild(tree)
|
||||
```
|
||||
|
||||
## Concepts
|
||||
`choo` is a complete framework. It has an answer to pretty most points
|
||||
- __user:__ 🙆
|
||||
- __DOM:__ the [Document Object Model][dom] is what is currently displayed in
|
||||
your browser
|
||||
@@ -417,6 +416,13 @@ Also imagine telling some business people you chose to rewrite something
|
||||
critical to the company using the `choo` framework.
|
||||
:steam_locomotive::train::train::train:
|
||||
|
||||
### Why is it a framework, and not a library?
|
||||
I love small libraries that do one thing well, but when working in a team,
|
||||
having an undocumented combination of packages often isn't great. `choo()` is a
|
||||
small set of packages that work well together, wrapped in an an architectural
|
||||
pattern. This means you get all the benefits of small packages, but get to be
|
||||
productive right from the start.
|
||||
|
||||
### How does choo compare to X?
|
||||
Ah, so this is where I get to rant. `choo` (_chugga-chugga-chugga-choo-choo!_)
|
||||
was built because other options didn't quite cut it for me, so instead of
|
||||
|
||||
@@ -14,7 +14,7 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
|
||||
function request (uri, send) {
|
||||
function request (uri, send, state) {
|
||||
http(uri, { json: true }, function (err, res, body) {
|
||||
if (err) return send('app:error', { payload: 'HTTP error' })
|
||||
if (res.statusCode !== 200) {
|
||||
@@ -24,7 +24,6 @@ function request (uri, send) {
|
||||
return send('app:error', { payload: message })
|
||||
}
|
||||
if (!body) {
|
||||
console.log('req made!')
|
||||
return send('app:error', { payload: 'fatal: no body received' })
|
||||
}
|
||||
send('api:set', { payload: body.message || body.title })
|
||||
|
||||
@@ -34,7 +34,7 @@ module.exports = {
|
||||
},
|
||||
effects: {
|
||||
error: function (action, state, send) {
|
||||
const timeout = state.app.errorTimeDone - Date.now()
|
||||
const timeout = state.errorTimeDone - Date.now()
|
||||
setTimeout(function () {
|
||||
send('app:error:delete')
|
||||
}, timeout)
|
||||
|
||||
@@ -6,7 +6,7 @@ const http = require('http')
|
||||
const PORT = 8080
|
||||
|
||||
const server = http.createServer(createRouter())
|
||||
server.listen(PORT, () => console.log(`listening on port ${PORT}`))
|
||||
server.listen(PORT, () => process.stdout.write(`listening on port ${PORT}\n`))
|
||||
|
||||
var index = 0
|
||||
const errors = [
|
||||
|
||||
@@ -6,7 +6,7 @@ const http = require('http')
|
||||
const PORT = 8080
|
||||
|
||||
const server = http.createServer(createRouter())
|
||||
server.listen(PORT, () => console.log(`listening on port ${PORT}`))
|
||||
server.listen(PORT, () => process.stdout.write(`listening on port ${PORT}\n`))
|
||||
|
||||
function createRouter () {
|
||||
const router = serverRouter('/404')
|
||||
|
||||
+22
-10
@@ -2,21 +2,33 @@ const serverRouter = require('server-router')
|
||||
const http = require('http')
|
||||
|
||||
const PORT = 8080
|
||||
|
||||
const client = require('./client')
|
||||
|
||||
const server = http.createServer(createRouter())
|
||||
server.listen(PORT, () => console.log(`listening on port ${PORT}`))
|
||||
// If an incoming request accepts "text/html", render the
|
||||
// appropriate HTML. Else use the API server
|
||||
const apiRouter = createRouter()
|
||||
const server = http.createServer(function (req, res) {
|
||||
if (/text\/html/.test(req.headers.accept)) handleHtml(req, res)
|
||||
else apiRouter(req, res)
|
||||
})
|
||||
server.listen(PORT, () => process.stdout.write(`listening on port ${PORT}\n`))
|
||||
|
||||
// create a new router
|
||||
// null -> fn
|
||||
function createRouter () {
|
||||
const router = serverRouter('/404')
|
||||
const apiRouter = serverRouter('/404')
|
||||
apiRouter.on('/404', (req, res) => res.end('not found'))
|
||||
apiRouter.on('/', (req, res) => {
|
||||
res.end(JSON.stringify({ routes: [ '/', '/404' ] }))
|
||||
})
|
||||
return apiRouter
|
||||
}
|
||||
|
||||
router.on('/404', (req, res) => res.end('not found'))
|
||||
router.on('/', function (req, res, params) {
|
||||
const html = client.toString('/', { message: 'hello server!' })
|
||||
// render the client to string
|
||||
// based on the requested url
|
||||
// (obj, obj) -> null
|
||||
function handleHtml (req, res) {
|
||||
const html = client.toString(req.url, { message: 'hello server!' })
|
||||
res.setHeader('Content-Type', 'text/html; charset=utf-8')
|
||||
res.end(html)
|
||||
})
|
||||
|
||||
return router
|
||||
}
|
||||
|
||||
@@ -105,17 +105,16 @@ function choo () {
|
||||
const _reducers = ns ? reducers[ns] : reducers
|
||||
if (_reducers && _reducers[action.type]) {
|
||||
if (ns) {
|
||||
const newState = reducers[ns][action.type](action, state[ns])
|
||||
const newState = _reducers[action.type](action, state[ns])
|
||||
state[ns] = xtend(state[ns], newState)
|
||||
} else {
|
||||
state = xtend(state, reducers[action.type](action, state))
|
||||
}
|
||||
} else state = xtend(state, reducers[action.type](action, state))
|
||||
reducersCalled = true
|
||||
}
|
||||
|
||||
const _effects = ns ? effects[ns] : effects
|
||||
if (_effects && _effects[action.type]) {
|
||||
_effects[action.type](action, state, send)
|
||||
if (ns) _effects[action.type](action, state[ns], send)
|
||||
else _effects[action.type](action, state, send)
|
||||
effectsCalled = true
|
||||
}
|
||||
|
||||
@@ -175,7 +174,7 @@ function appInit (opts) {
|
||||
return model
|
||||
|
||||
// create a new subscription that modifies
|
||||
// 'app:location' and push it to the subs
|
||||
// 'app:location' and push it to be loaded
|
||||
// fn -> null
|
||||
function pushLocationSub (cb) {
|
||||
model.subscriptions.push(function (send) {
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ const http = require('http')
|
||||
const PORT = 8080
|
||||
|
||||
const server = http.createServer(createRouter())
|
||||
server.listen(PORT, () => console.log(`listening on port ${PORT}`))
|
||||
server.listen(PORT, () => process.stdout.write(`listening on port ${PORT}\n`))
|
||||
|
||||
function createRouter () {
|
||||
const router = serverRouter('/404')
|
||||
|
||||
Reference in New Issue
Block a user