These utilities are designed to make it easy to implement Ractive.js component loaders in different environments. If you're not building a component loader, you probably don't need to read this page - you're probably looking for the page on components for authors instead.
For more information about the component specification, visit the page on components for component loader implementers, or see here for a list of existing implementations.
npm install rcu
...or grab the UMD build or ES2015 build from jsDelivr.
Before you can use rcu.parse()
or rcu.make()
, which use Ractive.parse()
and Ractive.extend()
respectively, you need to 'initialise' rcu by giving it a reference to Ractive
.
This function converts the source
- the contents of an HTML component file - into an intermediate representation. Taking the example component, rcu.parse()
would return something like this:
{
imports: [{ href: 'foo.html', name: 'foo' }],
template: {v:1,t:[ /* template goes here... */] },
css: 'p { color: red; }',
script: /* contents of the script tag go here */,
modules: [ 'myLibrary' ]
}
This function converts an HTML file into a constructor that inherits from Ractive
. It uses rcu.parse()
internally.
name
(the name of the component), path
(corresponds to a <link>
tag's href
attribute), parentUrl
(the URL of the current file, i.e. the value of config.url
), and done
, which is a function that must be called with the resulting constructor. See here for an example of its use.loadImport
. See here for an exampleReturns a name from a path, e.g. path/to/foo.html
becomes foo
.
Resolves relativePath
against baseUrl
, e.g.
rcu.resolve( '../bar.html', 'path/to/foo.html' ) === 'path/bar.html'; // true
Generate a v3 sourcemap, with one major assumption: the contents of the component's <script>
block are copied directly into the generated code, and we only need to worry about the offset (i.e. the number of non-<script>
lines of code, representing the template etc, that exist in the generated code before the <script>
tag's contents).
rcu.parse()
<script>
lines before the <script>
contentsMIT