Navigation Menu

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reloading JsRender removes the template that was cached on the script element #263

Closed
nariman-haghighi opened this issue Jul 16, 2015 · 6 comments

Comments

@nariman-haghighi
Copy link

Hi Boris

There's a new error in Commit 64 (Post Beta) that goes away as soon as you revert back one version. It happens even with the simplest of templates (a single div with no binding expressions) on line 192 of the formatted version:

if (t === !0 ? (n = t, t = void 0) : typeof t !== wt && (t = void 0), (l = this.tag) ? (d = this, p = l._.tmpl || d.tmpl, g = g || d.view, arguments.length || (e = g)) : p = this, p) {

Please let me know if this helps.

Cheers,

@BorisMoore
Copy link
Owner

Thanks Nariman - but that is strange, I have not seen that. Can you create a jsfiddle example which shows it. And can you use the non-minified version of JsRender? Thanks very much.

@nariman-haghighi
Copy link
Author

We're not able to reproduce it in a jsfiddle yet but this is the exact line that generates the error on the non-minified version:

        if (tag = this.tag) {
            // This is a call from renderTag or tagCtx.render(...)
            tagCtx = this;
            tmpl = tag._.tmpl || tagCtx.tmpl;
            view = view || tagCtx.view;
            if (!arguments.length) {
                data = view;
            }
        } else {
            // This is a template.render(...) call
            tmpl = this;
        }

Some additional context, the call to $("...").render({}) works on the initial page load, but subsequent calls involving the same tag context generate the error above (after the document has fully loaded). The jsrender.js is lazy loaded and likely the reason why it works on initial page load but fails later on in response to user actions that trigger $("...").render({}).

Our code-base has been stable and works on all previous versions except the latest.

@BorisMoore
Copy link
Owner

OK - thanks.

In commit 63, $("...").render({}) goes through the code:

function $fastRender(data, context, noIteration) {
    var tmplElem = this.jquery && (this[0] || error('Unknown template: "' + this.selector + '"')),
        tmpl = tmplElem.getAttribute(tmplAttr);

    return fastRender.call(tmpl ? $templates[tmpl] : $templates(tmplElem), data, context, noIteration);
}

In commit 64 it goes through the code:

$.fn.render = function(data, context, noIteration) {
    var tmplElem = this.jquery && (this[0] || error('Unknown template: "' + this.selector + '"')),
        tmpl = tmplElem.getAttribute(tmplAttr);

    return renderContent.call(tmpl ? $templates[tmpl] : $templates(tmplElem), data, context, noIteration);
};

So essentially the same code. But the error you are getting might occur if tmpl ? $templates[tmpl] : $templates(tmplElem) is in fact null or undefined. In fact on the first call, tmplElem.getAttribute(tmplAttr); will return null, and the $templates(tmplElem) will therefore compile the template. On the second call, tmpl will be a string, and $templates[tmpl] should be the cached compiled template. It sounds as if on the second call the $templates[tmpl] does not in fact contain the cached template. Are you doing anything that might delete that cached template? Can you try and debug with breakpoints or console logging and try to see if there is an issue showing up in the above code? What does you lazy loading do, and does it affect this scenario somehow?

Otherwise I would need repro in some form (html files etc.) so I can debug this...

@nariman-haghighi
Copy link
Author

We've isolated the behaviour here: https://jsfiddle.net/4rpqyk0g/1/

Our solution reloaded jsrender.js in between invocations, that's what causes the change between 63 and 64. We can work around this by avoiding reload if the following is true:

typeof $.templates != "undefined" || typeof jsviews != "undefined"

@BorisMoore
Copy link
Owner

Yes, that makes sense. In version 63 and previous, JsRender detected that a copy of JsRender had already been loaded, and in that case aborted the loading of a second instance. But with commit 64 support was added for AMD script loaders - which do not play well with trying to magically avoid loading a second instance, so now if you choose to load a new instance, then the new instance will indeed be loaded as expected...

If you are not using jQuery then commit 64 provides a noConfict() method to optionally keep global references for the previous instance. But if jQuery is loaded, then the second instance will replace $.templates, $.render etc. so you will lose your previous template registration.

So you need to choose whether to load a new instance and clear the previously registered templates, or not to load.

The next update (65) will use a different approach to caching templates from script blocks, so in fact your scenario above will actually work even though a new JsRender instance will be loaded. But you will still probably not want to reload if you have registered named templates, since those registrations will be removed.

Update: The new version (65) changes behavior on reloading - and does not remove registered named templates. So that plus the new caching approach will both help your scenarios...

BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 15, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 16, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 16, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 16, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 16, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 16, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 16, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
@BorisMoore BorisMoore changed the title Uncaught TypeError: Cannot read property 'tag' of undefined Reloading JsRender removes the template that was cached on the script element Aug 17, 2015
BorisMoore added a commit to BorisMoore/jsviews.com-staging that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See #304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See #306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  #254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- #304
  ObserveAll on cyclic objects

- #306
  'data-xxxx' attribute using data-link

- #307
  #312
BorisMoore added a commit to BorisMoore/jsviews that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See #304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See #306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  #254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- #304
  ObserveAll on cyclic objects

- #306
  'data-xxxx' attribute using data-link

- #307
  #312
BorisMoore added a commit to BorisMoore/jsviews that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See #304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See #306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  #254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- #304
  ObserveAll on cyclic objects

- #306
  'data-xxxx' attribute using data-link

- #307
  #312
BorisMoore added a commit that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  #225

Bug Fixes:

- #263
  #264
  Caching of template on script elements. (Unit tests
  added)
BorisMoore added a commit that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  #225

Bug Fixes:

- #263
  #264
  Caching of template on script elements. (Unit tests
  added)
BorisMoore added a commit to BorisMoore/jsviews.com that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
@BorisMoore
Copy link
Owner

This has been fixed in commit 65

BorisMoore added a commit to BorisMoore/jsviews.com that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit to BorisMoore/jsviews that referenced this issue Aug 17, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See #304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See #306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  #254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- #304
  ObserveAll on cyclic objects

- #306
  'data-xxxx' attribute using data-link

- #307
  #312
BorisMoore added a commit that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  #225

Bug Fixes:

- #263
  #264
  Caching of template on script elements. (Unit tests
  added)
BorisMoore added a commit that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  #225

Bug Fixes:

- #263
  #264
  Caching of template on script elements. (Unit tests
  added)
BorisMoore added a commit that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  #225

Bug Fixes:

- #263
  #264
  Caching of template on script elements. (Unit tests
  added)
BorisMoore added a commit to BorisMoore/jsviews that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See #304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See #306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  #254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- #304
  ObserveAll on cyclic objects

- #306
  'data-xxxx' attribute using data-link

- #307
  #312
BorisMoore added a commit to BorisMoore/jsviews.com that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
BorisMoore added a commit that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  #225

Bug Fixes:

- #263
  #264
  Caching of template on script elements. (Unit tests
  added)
BorisMoore added a commit that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  #225

Bug Fixes:

- #263
  #264
  Caching of template on script elements. (Unit tests
  added)
BorisMoore added a commit to BorisMoore/jsviews that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See #304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See #306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  #254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- #304
  ObserveAll on cyclic objects

- #306
  'data-xxxx' attribute using data-link

- #307
  #312
BorisMoore added a commit that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  #225

Bug Fixes:

- #263
  #264
  Caching of template on script elements. (Unit tests
  added)
BorisMoore added a commit to BorisMoore/jsviews that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See #304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See #306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  #254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- #304
  ObserveAll on cyclic objects

- #306
  'data-xxxx' attribute using data-link

- #307
  #312
BorisMoore added a commit to BorisMoore/jsviews that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See #304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See #306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  #254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- #304
  ObserveAll on cyclic objects

- #306
  'data-xxxx' attribute using data-link

- #307
  #312
BorisMoore added a commit to BorisMoore/jsviews.com that referenced this issue Aug 18, 2015
BREAKING CHANGES AND IMPROVEMENTS

- The global namespace when JsRender is loaded without jQuery
  is now window.jsrender. (Previously it was window.jsviews).
  So when using JsRender without jQuery, you can write:
  var $ = jsrender; - and use the $ var it in the same way you
  would use the global $ when JsRender is loaded with jQuery:
  e.g. $.templates(...) or $.views.helpers(...) etc.

- AMD support has been improved and simplified. All AMD
  modules, including JsRender, with or without jQuery, now
  return the jQuery object (if loaded) or the analogous
  JsViews object.

- Node.js support and integration has been improved - along
  with improved CommonJS support, and Browserify integration.
  The file system APIs now use the syntax tmpl="./file/path.html".
  The Node.js version of jsrender.js is available as a separate
  file (available at //jsviews.com/download/jsrender-node.js).

  The Node.js version of JsRender provides the complete set of
  JsRender APIs and features, together with integration
  with NodeJS view-engines such as Express and Hapi, APIs
  for loading templates from the file system, etc.
  The file system APIs now use the syntax tmpl="./file/path.html".

  It also includes a built-in Browserify transform (see "Browserify
  Support: below).

  (Note: JsRender and JsViews will soon be published to NPM).

- The behavior when loading multiple instances of JsRender or
  JsViews files has been changed: When loading a new instance,
  the previous instance $.views, $.templates, etc. is no longer
  overwritten. So a component using JsRender or JsViews will not,
  when loaded, cause another already loaded component also using
  JsViews/JsRender to fail (except for collisions arising in the
  unlikely case where both happen to use the same
  template/converter/helper name).

  As part of this modified behavior, the noConflict support
  for JsRender had been removed.

NEW FEATURES

- observeAll() for cyclic objects is now supported for the
  vast majority of cases.
  See BorisMoore/jsviews#304

- Improved support for data-linking to data- attributes:
  <elem data-link="data-foo{:expr}" ...>.
  After data-linking, the value of the data-foo attribute
  will be expr.toString(), but $.data(element, "foo") and
  $(element).data("foo") will actually return the value of
  expr, even if of type object.
  See BorisMoore/jsviews#306

- Browserify Support:
  JsRender on Node.js provides a built-in Browserify
  transform - jsrender.tmplify, for including compiled JsRender
  templates from the server, as part of the client javascript
  bundle generated by Browserify.

  Usage example:

  var $jsr = require('jsrender');

  browserify(...) ... .transform($jsr.tmplify) ...
  See also http://www.jsviews.com/test/unit-tests-browserify.html

- Initial work for deployment to Bower and NPM. See
  BorisMoore/jsviews#254
  BorisMoore/jsrender#225

Bug Fixes:

- BorisMoore/jsrender#263
  BorisMoore/jsrender#264
  Caching of template on script elements. (Unit tests
  added)

- BorisMoore/jsviews#304
  ObserveAll on cyclic objects

- BorisMoore/jsviews#306
  'data-xxxx' attribute using data-link

- BorisMoore/jsviews#307
  BorisMoore/jsviews#312
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants