- [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.