neuronjs 2.3.1
The python middleware for neuron.js
License: MIT
Keywords: neuron.js middleware javascript loader facade

|Build Status|

python-neuronjs
===============

Python utilities and middleware for neuron.js

neuronjs analyzes the dependencies from user defined facades according
to the dependency tree, and outputs ``<script>`` tags and configurations
for `neuron.js <https://github.com/kaelzhang/neuron>`__

The dependency tree can be generated by
`neuron-package-dependency <https://github.com/kaelzhang/neuron-package-dependency>`__

Install
-------

.. code:: sh

    $ pip install neuronjs

Usage
-----

.. code:: py

    from neuronjs import Neuron

    n = Neuron(
      dependency_tree = dependency_tree,  # must defined
      resolve = resolve,
      version = version,
      cache = cache,
      debug = False)

``neuronjs`` could be used either in template file or your python
controller.

`Here <./sample/sample-jinja.html>`__ is a sample Jinja2 template file.

-  **dependency\_tree** ``dict`` the ``json.loads()``\ ed dependency
   tree
-  **resolve** ``function(id)=`` (optional) implements your own custom
   resolver. ``resolve`` accepts one parameter ``id`` which can be
   either a ``str`` of module id or a ``list`` of module ids. If a
   ``str`` is passed in, the method should returns the resolved absolute
   url of the module id. If ``id`` is a ``list``, an url of comboed
   script files should be returned.
-  **debug** ``function|bool=False`` tells neuronjs whether should
   switch on debug mode. When on debug mode, no javascript files of
   dependencies will be preloaded, and the output will not be
   compressed.
-  if ``debug`` is callable, neuronjs will use the return value of
   method ``debug``
-  if ``debug`` is a boolean value, and ``debug`` is true, the debug
   mode will be on.
-  **cache** ``dict=None`` if ``cache`` is defined, it should contains 3
   methods:
-  ``cache.has(key)`` returns ``bool``
-  ``cache.get(key)`` looks up and returns the cached value by key
-  ``cache.set(key, value)`` sets the value by key
-  **version** ``str`` only works if ``cache`` is defined. neuronjs will
   uses ``version`` to generate the key to cache the output result

module id
^^^^^^^^^

.. code:: js

    <name>@<version><path>  # for example: 'jquery@2.0.0/jquery.js'

n.facade(entry, data=None, defer=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

-  **entry** ``str`` id of the entry module
-  **data** ``dict=None`` the data of the facade, which will be passed
   to the entry module.
-  **defer** ``bool=False`` whether should defer the loading process of
   the facade. If ``True``, the script of the facade and its
   dependencies will not be loaded at the beginning of the page as much
   as possible.

Registers a facade entry with ``data``. neuronjs will

Returns ``''``\ (empty string), so you can use this method in python
template

n.combo(id...)
^^^^^^^^^^^^^^

Makes packages of ids to combine into a single file.

-  id ``str`` the module id of commonjs module or css module.

.. code:: js

    n.combo('jquery', 'underscore')
    n.combo('app-home/style.css', 'app-user/user.css')

Returns ``''``

n.css(id)
^^^^^^^^^

Registers an css module, and tell neuronjs to output it on the page.

Returns ``''``

n.src(id)
^^^^^^^^^

Returns the absolute path of the corresponding module.

--------------

    Methods below are used in base template.

n.output\_scripts()
^^^^^^^^^^^^^^^^^^^

Outputs neuron.js, neuron initial configurations and the html of script
tags.

For most cases, this method should be used in the base template file,
see `example <./sample/sample-jinja.html>`__.

Returns ``str``

n.output\_facades()
^^^^^^^^^^^^^^^^^^^

Outputs the initialization of facades.

Returns ``str``

n.output\_css()
^^^^^^^^^^^^^^^

Outputs the html of link elements of csses.

For most cases, this method should be used in the base template file,
see `example <./sample/sample-jinja.html>`__.

Returns ``str``

License
-------

MIT

.. |Build Status| image:: https://travis-ci.org/kaelzhang/python-neuronjs.svg?branch=master
   :target: https://travis-ci.org/kaelzhang/python-neuronjs