- Fixes #817 - Support dynamic root elements
- Marko no longer attaches
id
attributes to elements for purposes of keyed matching- Keyed elements are maintained in an internal, per-component lookup
- Keys are now assigned to all custom tags and HTML elements at compile-time to improve reliability and performance of DOM diffing
- Optimized internal bookkeeping required during rendering a UI component tree (no more UI component stack)
- DOM diffing/patching changes:
- Significant performance improvements
- morphdom is now UI component-aware
- fix undefined reference error in Component.js
- Increase mocha timeout to avoid CI build's failing (#821)
- Add ability to update globals by setting new input.
- [docs] Remove uneeded command from installation docs
- [docs] Update installing.md
- Add better interop for importing modules with default exports (#803)
- Fixes #778 - Fix Marko compiler generating incorrect path for requires on Windows.
- [docs] Update installing.md
- Fixes #796 - Fix events for event targets that are SVGElementInstance types in IE11.
- Used shortcut for escapeAtTags;
- Added
escapeAtTags
options in order to render<@tags>
as they are; - simplify a condition judgement in components-jquery
- Fixes #790 - Class tag should not allow nested body content.
- Update
compile/index.js
test description - Update handleRootNodes.js (#747)
- [docs] Fix reference to lifecycle section in docs.
- Fixes #784 - Fix compiled preserve-attrs path.
- [testing] Fix express tests (#779)
- [docs] Update webpack.md
- Updated description in
package.json
- update bindComponentVar to use dynamic location
- updating location of bindComponent helper
- [testing] Fix key suffix test assertions.
- Address key suffix feedback. Additional tests.
- [morphdom] Removed bad and unhelpful optimization to avoid infinite loops
- [morphdom] Ensure
onBeforeNodeDiscarded
is only called once by looking to see if the node is still attached. - [morphdom] Infinite loop fix in morphdom
- Fixes #761 - component.elId() does not work on the server
- Fixes #755 - Allow diffing of HTML, head, and body. (#756)
- [docs] Updated component docs
- [docs] Use relative link for image
- [testing] User default npm version for each Node.js version
- Fixes #749 #690 - Do not rely on root node having an ID on rerender and properly handle style root nodes.
- Put package (
browser.json
) deps before others and parent deps before child deps (#750) - [docs] Fix typo in redux.md
- [docs] Add redux document to structure.json
- [docs] Add doc describing how to use Redux with Marko.
- Fix duplicate body variable
- Fixes #739 - Should not attempt to check instanceof of type Map if it does not exist in the browser.
- Added build scripts
- Fixes issue with renderToString not rendering text nodes
- Fixes #721 - Add a Code of Conduct
- Fixes #655 - Implement renderToString in the browser.
- Fixes #695 - Always ignore unrecognized tags for XML files when using the compiler.
- Fixes #705 - Throw error when the root HTML element is a component and has a dynamic id attribute.
- [testing] Additional test for root node with dynamic id of a component with a component.js file.
- Fixes #728 - Do not use module keyword because webpack compiles it to a custom object.
- Fixes #719 - Support Express 4 and Express 5.
- fixes #658 by removing empty style blocks (#715)
- fixes #688 - add reference to browser.json in meta dependencies
- [docs] Fix broken link
- [docs] Fix Marko syntax in docs causing compilation errors on the website.
- [docs] Change pixels to percent in doc images.
- [testing] Purge express cache so that express tests both use correct module versions.
- Revert "Fixes #705 - Throw error when the root HTML element has a dynamic id …"
- [testing] Only run Node 4, 6, & 8 in travis
- [docs] Clean up why-is-marko-fast.md
- [docs] Clean up marko-vs-react.md
- Add silent option to browser-refresh and hot-reload
- Check id attribute for Literal. Update error message to include error page.
- Fixes #705 - Throw error when the root HTML element has a dynamic id attribute.
- [docs] Clean up components.md
- [docs] Fix typo in webpack.md
- [testing] give extra time for test timing out in travis
- [testing] run tests on node 8
- [testing] ignore test-dist from coverage
- Fixes #693 - [SSR] Improved handling of top-level UI components with renderBody func
- Switching to using
prepublish
with npm@5
- Use parent module to require express patch (#701)
- [docs] Reference app should point to "marko-lasso" because "ui-components-playground" does not contain lasso
- [docs] Add articles section to docs.
- Build fixes related to compiler
- Improve no-update-if condition check
- Compatibility improvements for Try Online
- Code size reduction
- Introduced src/ and dist/ folders for optimized production builds
- Fixes #695 - Default to ignoring unrecognized tags for XML files.
- Add basic test for ensuring that res.marko returns a promise.
- enable res.marko can catch a error safe
- [compiler] Added more control over how attributes are targeted to props
- Don't add root markers to tags that don't produce output
- [docs] Added docs for Marko + Huncwot integration
- [AST] Added
node.removeChildren()
- Extend marko globals with defaults
- Fixes #673 - Circular dependency is causing problems with Webpack
- Changes related to #670 - Globals must be serialized earlier to allow early mount of UI components in
- [docs] Improved docs for SSR
- Fixes for #670 - Add support for serialized globals and retain globals on re-render
- Bug: Fixes #661 - Component initialization code may end up in the wrong place
- Bug: Fixes #668 - Declarative event listeners are now allowed on the
<include>
tag
- Bug: Fixes #650 - The tag "await" does not support attribute "unless"
- Improvements to legacy state
- Bug: Fixes #654 - Bug: components implementing a
key
attribute break in Marko v4 - Improvements to legacy compatibility layer
- Improved support for UI components implemented using native JavaScript class in a separate file
- Improved how legacy layout tags are handled by Marko v4
- Bug: Fixes #653 - Event handlers are no longer bound in edge case
- Bug: Fixes #649 - New line always added to
textarea
and other elements for single line/delimited HTML blocks
- Bug: Fixes #648 - Style attribute object and lengths not handled properly
- Bug: Fixed #644 - Attribute not rendered by Marko is not preserved if component first rendered on the server
- [Performance] Escaping is not needed for the
data-marko
attribute
- Bug: Fixed #629 - VDOM: Rendering unescaped HTML produces non-functioning HTML input controls
- Bug: Fixed #634 - writeInitComponentsCode is not a function
- Enhancement: Added support to allow improved precompiling of templates
- Enhancement: Fixed #636 - Add error when macro with duplicate name is found
- Performance: Optimized diffing/patching to avoid indexing entire tree to find keyed elements
- Performance: Optimized how event handlers are attached to VDOM nodes (separated from attributes)
- Bug: Fixed losing cursor position in Edge (see morphdom PR #100 by @zastavnitskiy)
- Bug: Ignore
xmlns
attributes when virtualizing real DOM nodes (needed when inserting an HTML string when rendering to a VDOM)
- Bug: Fixed #623 - Uncaught TypeError:
toEl.$__hasAttribute
is not a function - Bug: Fixed #619 - Deprecated
constructor()
for UI component classes
- Added
"use strict";
to restore Node.js compatibility for Node.js v4 and v5
- Bug: Fixes #611 - Component IDs are not being assigned correctly when intermediate non-component is rendered
- Performance: SVG namespaced elements are now resolved determined at compile-time
- Performance: Merged in
morphdom
and optimized for Marko - Performance: Optimized diffing/patching of elements with only simple attributes in the following set:
class
,id
andstyle
- Bug: Fixes #612 - Compile error when class method has empty
return
- Bug: Fixes #604 -
no-update
attributes error when first rendered on the server - Bug: Fixes #608 - Component losing
renderBody
input on a particular redraw - Enhancement: Fixes #606 - named single-file component doesn't work
- Marko v4! Release Announcement
- Fixed [#478](TagLookup fails when merging taglibs) - TagLookup fails when merging taglibs
- Fixes #465
- Added warnings for using render methods when you want string output (Pull Request #450 by @mlrawlings)
- Fixes #382 - Local variable for tag should have prefix or suffix to avoid conflict
- Fixes #381 -
$global
broken when usingtemplate.stream()
- Internal change:
AsyncWriter
→AsyncStream
- (no changes)
- Update to
async-writer@2
- Silently ignore errors when parsing tag definition code inlined in JavaScript
- Fixed #318 - Use compiler options passed to require hook to configure marko globally
require('marko/node-require').install({
compilerOptions: {
writeToDisk: false
}
});
- Fixed #370 - HTML characters in loop separator string should not be escaped
- Introduced the
<include-html(path)>
tag for including static HTML:
<include-html('./foo.html')>
- Fixed #44 - Webpack compatibility fixes. Also see marko-loader (A marko loader for webpack)
- Fixed #357 - Deprecate
empty
/notEmpty
in Marko v3
- Fixed #355 -
status-var
/separator
options not handled when looping over properties - Fixed #354 - regular expressions used in attribute values are not being handled correctly
- Fixed #353 -
body-only-if
attribute does not work with custom tags (only HTML tags)
- Upgraded to
raptor-util@^2
- Fixed #327 - alt attribute with empty string should be allowed (Pull Request #350 by @mlrawlings)
- Fixed #348 - exclude all
*.orig
and other files from published npm package
- Fixed #231 - Allow <assign count++>
- Fixed #345 - Whitespace preservation now applies to all deeply nested text nodes
- Fixed #344 - Introduced defineRenderer for Marko
- Docs: Added docs for excluding directories from taglib discovery (@mlrawlings)
- Docs: Added docs for component autodiscovery (@mlrawlings)
- Docs: Added docs for passing a data object to a custom tag
- Fixed #342 -
await:finish
event not emitted for async fragments with client reorder and that complete synchronously
- Fixed #329 - Add autodiscover of components/ directory (Pull Request #338 by @mlrawlings)
- Fixed #339 - Tag transformers are not being applied to tags with a dynamic tag name (fixes #146 for Marko Components)
- Fixed #332 and #333 - Correct values for
literalUndefined
andliteralFalse
in the Builder API @bkuri - Fixed #336 - Upgraded to latest version of
minimatch
- Fixed #328 - Improve error reporting when taglib/tag definition fails to load
- Additional change to disable escaping for dynamic
Text
nodes added to body of<script>
tag to fix issue #326
- Improved escaping within the
<script>
tag to fix issue #322. Special HTML characters will no longer be escaped within the context of the<script>
tag since browsers do not decode HTML entities within the<script>
tag. Instead, only the ending</script>
tag sequence is escaped using JavaScript string escaping sequences.
- Made change to make configuration a true singleton shared across all instances of
marko
loaded at runtime (commit)
- Improved support for hot reloading by automatically disabling
assumeUpToDate
if hot reload is enabled. (Pull Request #320 by @ianvonholt)
- Fixed a bug that was causing transforms to be run on detached nodes. This was manifesting itself in the
<async-fragment>
to<await>
transform if anif()
attribute was present (or other core attributes that end up wrapping the tag it is defined on).
- Introduced a new and simpler
<await>
tag that should be used instead of the now deprecated<async-fragment>
tag (see deprecation details below) (Pull Request #312 by @mlrawlings)
- Deprecated the
<async-fragment var="<var>" data-provider=<data-provider>>
tag in favor of the<await(<var> from <data-provider>)>
tag:
OLD:
<async-fragment var="userInfo" data-provider=data.userInfoPromise>
Hello ${userInfo.name}!
</async-fragment>
NEW:
<await(userInfo from data.userInfoPromise)>
Hello ${userInfo.name}!
</await>
The <await>
tag supports all of the attributes of the previous <async-fragment>
tag except for var
and data-provider
:
<await(userInfo from data.userInfoPromise) name="userInfo" timeout=10000 client-reorder>
Hello ${userInfo.name}!
</await>
Finally, the nested tags for providing content for the placeholder, error and timeout messages have been renamed accordingly:
<await(userInfo from data.userInfoPromise) client-reorder>
<await-placeholder>
This is alternate content while the async fragment is loading.
</await-placeholder>
<await-timeout>
A timeout has occurred!
</await-timeout>
<await-error>
A error has occurred!
</await-error>
Hello ${userInfo.name}!
</await>
- Fixes #316 - Autocomplete for tags is not updated when tag files updated despite clearing cache. This improves the autocomplete-marko plugin for Atom.
- Fixes #314 - Remove hyphens from include props
- Deprecated:
- Properties passed in using the
<include>
tag should not be access using hyphens.
- Properties passed in using the
For example, given the following template:
<include("./include-target.marko") first-name='Jane'/>
The first-name
data should be accessed using the firstName
property:
var firstName = input.firstName;
// NOT: var firstName = input['first-name'];
- Added functionality to exclude specific directory or package from taglib finder (Pull Request #309 by @oxala)
- Fixed [marko-js#307] - Marko concise syntax, with multiple class names (Pull Request #308 by @mlrawlings)
- Added support for an "enum" attribute value
- Async fragment improvements (Pull Request #305 by @mlrawlings)
- Adds additional event info (finished/timedout) to the data emitted from tags.
- Ensures that renderBody() is not called again if the fragment has already finished (timed out).
- Fixes
npm run test-async
- Removes a redundant
async-fragment
timeout related test
- Updated autocomplete information
- Fixes #304 - async-fragment-tag-transformer.js being loaded by PhantomJS
- Updated taglibs with additional information to support tooling
- Added Michael Rawlings as a maintainer
- Fixes #303 -
addStaticVar
is not generating unique variable names correctly
- Improved validation for macros (@mlrawlings, PR #300)
- Added code coverage reporting (@mlrawlings, PR #301)
- Improved error reporting in cases when code generation fails (@mlrawlings)
- Additional tweaks for #298 - Always emit correct events for async fragments
- Fixes #298 - Always emit correct events for async fragments
- Updated docs
- Include async fragment name in the
asyncFragmentFinish
events (@kprakasam)
- Fixes #286 - Add res.marko(templateData) for use with Express (@mlrawlings)
- Fixes #288 - Provide API for discovering custom tags and attributes for autocomplete/tooling purposes
- Documentation improvements
- Fixes #280 - Switch from jsonminify to strip-json-comments
- Updated docs for Koa and Hapi
- Additional tests for Node.js v6
- Fixes #274 - marko-compiler-options tag is not properly ended when using raw parsing (for prettyprint)
- Fixes #268 - this.write is not a function for empty ArrayExpression
- Fixes #262 - node-require module removes
.marko
extension from filenames in compiled code
- Fixes #267 - Shorthand CSS class name cannot be combined with object/array class names
- Fixed #266 - Hot reloading fails if original template is deleted
- Fixed error reporting when using
compiler.parseRaw()
- Added test for #262
- Improved whitespace removal for text nodes directly below the root
- Fixes #254 - Allow preserve whitespace to be enabled at the global level
- Fixes #240 - Always trim start and end of template (even if preserveWhitespace is true)
- Fixes #260 - Circular custom tags causes infinite recursion when writeToDisk is set to false
- Minor internal cleanup
- Don't wrap exception in
parseJavaScript
if error object was not created by Esprima
- Fixes #257 - Placeholders don't render for out-of-order async fragments
- Fixes #256 - Convert attributes to title case if no attributes are declared for a custom tag
- Use
<noscript>
for out-of-order async fragment placeholders
- Store
tagDef
withHtmlElement
node (needed for pretty printing)
- Docs: Fixed minor issues in docs
- Reintroduced support for the
MARKO_CLEAN
environment variable:MARK_CLEAN=true node server.js
- Fixes circular dependency issue between runtime/index.js and hot-reload/index.js
- Fixes circular dependency issue between runtime/index.js and hot-reload/index.js
- Fixes #203 - Incorrect behavior when attrs is used on a standard HTML tag with a tag def
- Fixes #202 - Pass along options to compiler when loading a template
- Added support for automatically discovering taglibs from installed packages that are scoped. (PR #183 by @tropperstyle)
- Fixes circular dependency issue between
hot-reload/index.js
andruntime/index.js
- Fixes #167 - Nested tags only work one level deep
- docs: don't exclude docs in .npmignore
- Fixes #161 - Nested tags with no body content are not handled correctly
- Fixes #140 - Also de-dupe cached taglibs in finder
- Make loading template from String template source easier:
var template = marko.load(
templatePath,
'Hello $!{data.name}!');
NOTE: Loading directly from source only works on the server
- Use shorter relative paths in error messages
- Fixes #150 - Provide option to prevent writing compiled templates to disk. Example usage:
require('marko/compiler').defaultOptions.writeToDisk = false;
NOTE: If you disable writing compiled templates to disk then it will be a little harder to debug errors in templates on the server since the stack trace will refer to a file that has not been written to disk.
For a more complete list of compiler options please see: http://markojs.com/docs/marko/javascript-api/#defaultoptions
- Fixes #140 - De-dupe taglibs by module name
- Documentation: Miscellaneous changes
- Fixed a typo for
rendererFunc
in helpers.js
(commit: 0205a47f04911f34ca4d458970d710f81a143987)
- New language feature:
unless
support added
- Automatically enable hot-reload and browser-refresh if launched using browser-refresh
- Documentation: Miscellaneous changes
- Fixes #137 - adds support for dynamic HTML tag names
- Improvement: Better resolving of tag renderer
- Compiler: Fix to make compiler work in the browser
- Fixes #135 Allow "attrs" attribute on custom tags
- Improved handling of imports
- Better handling of loading taglibs with circular dependencies
- Handle circular taglib imports
- Fixes #131 - Recursively handle taglib imports
- Added a
.npmignore
file - Fixed licensing header in source
- Documentation: improved docs for input.renderBody()
- Documentation: Miscellaneous changes
- Fixes #122 Don't allow invalid attributes when using shorthand
- Fixes #122 Typo in hasAttributes
- Fixes #127 - Make sure all possible input files are accounted for when checking if a compiled template is up-to-date
- Use
browser.json
files instead ofoptimizer.json
files - Documentation: Improved docs for async taglib
- Documentation: Added empty() and notEmpty() helpers to the readme
- Added Martin Aberer as a maintainer
- Documentation: Miscellaneous changes
- New logo!
- Fixes #118 Better error when parsing JSON file for tag
- Testing: More test cases related to empty attributes
- Documentation: Clarification for the Node.js require extension
- Documentation: doc reference for
getLength()
of loopstatus-var
- Documentation: Added reference to sublime-marko under the tools section.
- Fixes #109 - Allow
compiler.createNode('div')
- Fixes #108 - Improve how the
MARKO_CLEAN
env variable is handled
- Minor documentation changes
- Allow
.html
extension for layouts (Fix for marko-js-archive/marko-layout#2)
- Make require('marko/node-require').install() a noop in the browser
- Improvement: Allow
template-data
to be combined with other attributes on the<include>
tag - Documentation: Fixes #98 - docs for
<include template-data="...">
- Fixes #96 - Allow relative, dynamic include paths
- Internal change: Additional test cases added for using promises with async fragments
- Fixes #73 - Prevent same taglib from being loaded multiple times
- Fixes #88 - Assign global data to the correct out
- Fixes #27 - IE conditional comments (e.g.,
<!--[if lt IE 9]><div><![endif]-->
) are automatically preserved. Previously, all HTML comments were stripped out when loading a template. For example: - Added support for
<compiler-options comments="preserve"/>
to enable comments to preserved in a template. For example:
<compiler-options comments="preserve"/>
Hello
<!--This comment should be preserved-->
World
Output:
Hello
<!--This comment should be preserved-->
World
- Performance improvements
'use strict';
- Optimized render code paths
- Code cleanup
- Compatibility fixes for Node.js 0.12
- Bad:
fs.readFile(path, 'utf8')
- Good:
fs.readFile(path, {encoding: 'utf8'})
- Bad:
- Fixes #78 - Custom Node.js require extension for Marko template files. Example usage:
// Install the Node.js require extension in your application's main script (server-side only)
require('marko/node-require').install();
// Now you can require `*.marko` files just like any other JavaScript module
var template = require('./hello.marko');
var html = template.renderSync({ name: 'Frank' });
- Compiled templates now export a loaded Template instance. In the previous version of marko, compiled templates exported a function that could be used to create a loaded Template instance.
- Fixes edge case: More precise regular expression for decoding HTML entities
- Internal: Fixes #75 Always assign the tag property to custom tag nodes
- Improvement to allow taglibs to be imported from other taglibs (commit)
- Added support for short-hand tags and attributes
Old marko-taglib.json
:
{
"tags": {
"my-hello": {
"renderer": "./hello-renderer",
"attributes": {
"name": "string"
}
}
}
}
Short-hand marko-taglib.json
:
{
"<my-hello>": {
"renderer": "./hello-renderer",
"@name": "string"
}
}
- Fixes #61 Simplify parent/child relationships
Marko now supports custom tags in the following format: <parent_tag.nested_tag>
Example usage:
<ui-tabs orientation="horizontal">
<ui-tabs.tab title="Home">
Content for Home
</ui-tabs.tab>
<ui-tabs.tab title="Profile">
Content for Profile
</ui-tabs.tab>
<ui-tabs.tab title="Messages">
Content for Messages
</ui-tabs.tab>
</ui-tabs>
ui-tabs/marko-tag.json
{
"@orientation": "string",
"@tabs <tab>[]": {
"@title": "string"
}
}
ui-tabs/renderer.js
var template = require('marko').load(require.resolve('./template.marko'));
exports.renderer = function(input, out) {
var tabs = input.tabs;
// Tabs will be in the following form:
// [
// {
// title: 'Home',
// renderBody: function(out) { ... }
// },
// {
// title: 'Profile',
// renderBody: function(out) { ... }
// },
// {
// title: 'Messages',
// renderBody: function(out) { ... }
// }
// ]
console.log(tabs.length); // Output: 3
template.render({
tabs: tabs
}, out);
};
ui-tabs/template.marko
<div class="tabs">
<ul class="nav nav-tabs">
<li class="tab" for="tab in data.tabs">
<a href="#${tab.title}">
${tab.title}
</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane" for="tab in data.tabs">
<invoke function="tab.renderBody(out)"/>
</div>
</div>
</div>
Fixes #66 - Allow circular dependencies when loading templates
- Testing framework changes
- Fixes #65 - Generated variable name is an empty string in some cases
- Fixes #53 Merge c-input with attr props
Fixes #60 Don't replace special operators for body functions
- Fixes #58 Added support for MARKO_CLEAN env variable (force recompile of all loaded templates). Example usage:
MARKO_CLEAN=true node run.js
- Code formatting: add spaces in var code
- Fixes #51 Allow body content to be mapped to a String input property
- Fixes #52 Remove JavaScript comments from JSON taglib files before parsing
- Fixes #50 Initialize the loader after the runtime is fully initialized
- Fixes #50 Ensure that all instances of marko have hot-reload and browser-refresh enabled
- Allowing complex var names (i.e. LHS) for the
<assign>
tag.
- Minor change: Slight improvement to code to resolve tag handler
- Minor change: Improve how renderer is resolved
- Fixes #48 name in marko-tag.json should override default name given during discovery
- Fixes #47 - Added support for "taglib-imports"
- Fixes #31 - Add support for providing prefix when scanning for tags
- Allow "code" to be a function that lazily evaluates to a code string during code generation
- Added method for custom node compilers to get access to the
escapeXml
function at runtime
- Fixes #39 - Added missing return when using hot-reload
- Fixed bad publish
- Better merging of tags when loading and merging taglibs
- Changes to avoid problems associated with the same taglib being found multiple times in the search path
renderBody
function is only added if tag has children
- Fixed #36 - Don't use
invokeBody()
in the cache taglib
- ❗ Fixed #36 - Deprecated - When using
<include>
with body content, nested body content is now passed in asString
property namedbody
. Old behavior: nested content would be passed in as aFunction
property namedinvokeBody
that would return theString
value of the nested content.invokeBody()
has been deprecated.
- Fixed #36 - Don't use
invokeBody()
in test code and the HTML comments tag
- ❗ Fixed #36 - Deprecated
input.invokeBody()
in favor ofinput.renderBody(out)
- Fixed #37 - Duplicate input property for custom tag renderers
- Fixed #35 - Added support for
<compiler-options>
. Example:
<compiler-options whitespace="preserve" />
A
B
C
- Dynamic attributes for scanned tags without a tag will have dashes removed by default.
- ❗ When using
tags-dir
to discover tags that do not have amarko-tag.json
, the previous behavior was to allow all attributes and to use the actual attribute name as the input property name. For example, when using<hello first-name="John">
, first name would need to be read in asinput['first-name']
. This was changed such that the first name property should now be read in asinput.firstName
(dashes removed and converted to camel case)
- ❗ When using
- Changes to allow UI component to be put into a single JS file:
- Updated taglib directory scanner to use
index.js
if found. New search order:renderer.js
(userenderer.js
if it exists)index.js
(useindex.js
if it exists and assume it exports arenderer
orrender
property)template.marko
(use the template as the renderer if norenderer.js
orindex.js
)
- ❗ Changes to the taglib directory scanner could break existing code. Specifically, if a UI component directory had an
index.js
file and atemplate.marko
file then in inmarko@<2
thetemplate.marko
file would have been selected as the renderer. In[email protected]
, theindex.js
will be selected as the tag renderer.
- Updated taglib directory scanner to use
- ❗ Removed support for mapping a tag renderer to a module with a
process
method - Removed sub-module
marko/renderer
that exports raptor-renderer
- Added back code to allow the new marko runtime to load templates compiled by an earlier compiler that used
module.exports
- Fixed #32. Switched from
module.exports = function create(__helpers) { ... }
toexports.create = function(__helpers) { ... }
to avoid circular dependency problems
- Added support for adding "static" code to the top of a compiled template (helpful for initializing variables or running code once).
- Added sub-module
marko/renderer
that exports raptor-renderer
- Changes to avoid unoptimized code in V8
- Handle case where template was loaded before hot-reload was enabled
- Added support for
$global
inrenderSync