- added lazy loading callback handlers
- support for xhr timeouts
- added a code of conduct
- update to backbone 1.2.1 and all it's goodness, older versions of lodash will break with this change set. lodash.mixin should allow for a fix
- add x-http-method-override to allow for the 'emulateHTTP' property in backbone.
- bug fix for require js race condition when rendering views
- lazy loading now takes fetch_options to set any of the fetchOptions, same object as in the controller
- lazy loading now takes fetch_spec to allow for multiple models / collections to be loaded for a view on the client-side, this spec is the same as a controllers fetch spec.
- Routes can specify custom headers
- Allows for a custom layout filename
- Bugfix: Case where some views were rendered twice
- Allow for custom template finder, option for the app
- allows readFromCache to be set to true / false in the fetch spec
- Pass a templateEngine to the template adapter, at the application level.
- Dependency updates
- Bug fix for Require.js Needs to statically analyze the include in shared/app.js for the router.
- Fixes / Updates to make Rendr work with require.js
- added ability to pass in template adapter instance
- move towards pulling the view layer out
- allows watchify / browserify to rebuild single files rather than the entire package
- upgrade dependencies
- express
- underscore
- rendr-handlebars
- chai
- sinon-chai
- fix a few cases where
window.$
was being accessed instead ofBackbone.$
- fix for collection store when lazy-loading a collection (two collections were in the store, now only one)
- fix for restAdapter that was putting
?
when req.query was an empty object
- upgrade to express 4.11.0
- added
errorhandler
instead of using the express.errorHandler that is deprecated
- added
- breaking dropped node 0.8 support
- breaking dropped express 3.x support
- added support for node 0.12
- removed noop definition in favor of _.noop
- breaking removed postInitialization callbacks
- fixed issue with collection where a re-fetch call will override parameters with an empty object
- v8 runtime optimizations
- fixed the way view keeps track of it's childViews
- updated all devDependencies
- updated request to use latest version - security fix
- added .jshint
- moved from
qs
toqs2
to supportq[]=1&q[]=2
parameters for arrays by default - breaking removed
match
function from the server - breaking removed
checkFresh
- changed to useexpireSeconds
for the store so the store can check instead
- parseModelAndCollection optionally parses sub-models / sub-collections
- fix for the re-rendering the view on a
refresh
event when the view is hydrated - upgrade to dev dependency for rendr-handlebars to 0.2.2
- parse collections into an instance of a collection if it isn't already
- Changed how views are attached to the document, now calls the
render
method when given the appropriate flag. - Added tests around base/view.js
- Added a
clear
method to the model and collection stores - Fixed model collection from the store, will no longer create new instances of the model
- Added the ability to pass a JSON object to
fetch_params
when lazy loading views. This way we can pass multiple parameters to those models / collections. - Upgraded
qs
dependency - Fixed query string attribute when loading collections, now will properly send data on client and server.
- Fix in the view's parse options to not override the model / collection attribute after they've been re-inflated.
- Added fix for the
parse
method to allow for sub-models / sub-collections - Upgrade to Backbone 1.1.2
- Added support for nested params in ServerRouter
- [deprecation] use
initialize
instead ofpostInitialize
- Fix serverSide redirectTo with rootPath != default.
- [breaking] Removed use of
options.emulateJSON
andoptions.data
inclientSync
- [breaking] Removed
addApiParams
fromsyncer
- Many more tests.
- [breaking] Moved
AppView
toclient/
fromshared/
. - [breaking] Added support for AMD (RequireJS), which resulted in many methods
becoming asynchronous instead of synchronous (
Fetcher
,BaseView
,ModelUtils
, etc. - [breaking] Removed global
entryPath
; no longer referencingrendr
as a global. - [breaking] Refactored server code to greatly reduce amount of boilerplate needed to set up a Rendr app. Rendr now owns its own Express app, which can be mounted on existing Express apps as a simple middleware.
- [breaking]
server/server.js
now exports a class constructor rather than a singleton. - [breaking] Removed unused
ServerRouter#stashError()
method. - [breaking]
modelUtils
object is nowModelUtils
class. - Added
DataAdapter
base class and fleshed-outRestAdapter
, which is the defaultDataAdapter
used by a Rendr server. - More flexibility with placement Rendr app files within an Express project. app, and support for multiple Rendr apps in a single Express app.
- Support passing
appAttributes
toinitApp
middleware as either object or function, which takesreq
andres
as arguments. - Added
viewing
property toBaseView
for better introspection of current view state. - Fix bug where collection params weren't properly passed to collections upon view hydration.
- Attach
req
toApp
instance on the server-side. - Switched default CommonJS packaging to Browserify from Stitch.
- Added
examples/
dir, deprecating separaterendr-app-template
project. - Fix bug where resources fetched by the
Fetcher
using spec keys other thanmodel
orcollection
would be not hydrated properly byBaseView
. - Don't intercept clicked links if 'shift' or 'meta' keys pressed.
- Make it easier to use custom
AppView
class. - Add support for RegExp routes.
- Only attempt to use
pushState
to redirect if the path matches one of the app's routes. - Trigger
action:error
event inClientRouter
if there was an error caught while running a controller's action. - Allow customizing the app's root path.
- Added better support for
options.error
callback forBackbone.sync()
in the client-side. - Automatically add
X-Forwarded-For
header inapiProxy
middleware. - Support using functions for
BaseView#id
,BaseView#className
, andBaseView#tagName
. - Support passing
options.status
toServerRouter#redirectTo()
. - Use
sanitizer
module instead of un-maintainedvalidator
module for XSS protection. - Update versions of dependencies:
underscore
,qs
,request
. - Much more unit tests.
- Added Istanbul code coverage tool.
- Increment to bump
rendr-handlebars
version.
- Support multiple layout templates.
- Use
rendr-handlebars
module instead ofhandlebars
module and utilize newtemplateAdapter
semantics (thanks @hurrymaplelad). - Fix XSS vulnerability in
ServerRouter#escapeParams()
. - Fix bug in
ServerRouter#getParams()
. - Change
viewEngine
module to be a class constructorViewEngine
. - Make sure to pass
app
instance to collections inFetcher#hydrate()
.
- Fix for allowing port in absolute model URL.
- Style tweaks for comments, binding to a context in
this.on
-type events. - Added
Fetcher.prototype.needsFetch
method, for custom model caching logic in controllers. - Fix for
syncer.checkFresh
(thanks @eleventigers). - Fix for view path on Windows (thanks @vincejl).
- README updates (thanks @jacoblwe20).
- Performance improvment by caching Express router in
ServerRouter
instead of rebuilding it between requests (@jlogsdon).
- Support specifying multiple API hosts for models & controllers (thanks @technicolorenvy!).
- Support subdirectories for views & templates, and allow omitting view path in controllers, in which case view path defaults to ":controller/:action" (thanks @technicolorenvy!).
- Use ES5 native methods instead of Underscore methods:
Array.prototype.map
,Function.prototype.bind
,Object.create
, etc. NOTE: For IE<=8 compatibility, includees5-shim
andes5-sham
from kriskowal/es5-shim as client-side dependencies in your app. - Windows-compatible
postinstall
script. - Customize Handlebars
each
helper to pass through_app
,_view
, etc. into the child context, allowing cleaner{{#each}} {{view "my_view"}} {{/each}}
semantics. - Allow passing absolute URLs for models and collections, which will bypass the API proxy in the client-side.
- In BaseView::getAttributes(), call toString() on model.id, for better support of Mongoose.
- In BaseView::getAttributes(), support custom this.model.idAttribute.
- Remove reference to
global.isServer
in BaseView; easier to standalone test. - Default
replace: false
in ClientRouter::redirectTo().
- Support
redirect
option in routes file.
- Allow accessing
this.parentView
inBaseView
during rendering.
- Converted all CoffeeScript files to JavaScript.
- No more globals for Backbone, _, Handlebars.
- Updating to [email protected] to get bundled runtime file.
- Ensuring that
ModelStore
passesapp
to models when instantiating them.
- Added
apiProxy
middleware, pulled fromrendr-app-template
.
- Breaking change: Renamed
dataAdapter.makeRequest
todataAdapter.request
.
- Removing bundled jQuery. App should provide its own.
- Allow passing
{pushState: false}
toClientRouter::redirectTo()
to do a full-page redirect.
- Fixed bug where status code of CRUD errors were not properly passed down from
syncer
.
- Fixed bug where models within collection wouldn't have
this.app
set after view hydration. - Converted
fetcher
object toFetcher
class. Prefer to access it viaapp.fetcher
.
- Breaking change: Passing real
req
as first argument todataAdapter.makeRequest
. - Fixing bug in ClientRouter when no querystring.
- Also return
@collection.meta
and@collection.params
inBaseView::getTemplateData()
. - Support passing three args to
App::fetch()
.
- ClientRouter params include querystring params, just like ServerRouter.
- Initial release.