idomview-loader

0.2.0 • Public • Published

superviews.js loader for webpack

Options

argstr (string) (default=undefined)

same as superviews.js

mode (string) (default=cjs)

same as superviews.js

### astring (object) (default={})

same as Astring

Webpack 2 with ES 2015 Module Exports

export@MDN
export@ECMAScript 2015 Language Specification

Using superviews.js with mode:'es6', will convert template to ES2015 Module.

template

<template name="NAME" args="ARGS"></template>

result

import {patch, elementOpen, elementClose, text, skip, currentElement} from "incremental-dom"
 
var __target
                                                                                
export function NAME (ARGS) {
                                                                   
}

Its not export default function. So, you should use as a ES2015 Module, not as a function.

import { NAME as render } from 'superviews-loader?mode=es6!./template.html';
render(ARGS);

with babel-loader

src/root.html

<template name="render" args="itemlist">
    <div each="item, item.Id in itemlist" style="{...item.style}">
    </div>
</template>

src/index.js

import {render} from './root.html';
 
render([
    { Id:0, style:{ position:'absolute' } }
]);

.babelrc

{
  "presets": [
      ["es2015", { "modules": false }]
    ],
  "plugins": [
      "transform-object-rest-spread"
    ],
}

webpack.config.js

var path = require('path');
var root = path.resolve(__dirname, '.')
module.exports = {
  context: root,
  entry: './src/index.js',
  output: {
    path: path.join(root, 'dist'),
    filename: 'index.js',
    publicPath: './',
  },
  target: 'web',
  module: {
    rules: [
      {
        test: /\.html$/,
        use: [
          'babel-loader',
          {
            loader: 'superviews-loader',
            options: {
              mode: 'es6'
            }
          }
        ]
      }
    ]
  },
  devtool: 'source-map'
};

Tips

webpack.config.js

var webpack = require('webpack');
module.exports = {
...
  plugins: [
    // because 'dist/incremental-dom-cjs.js' has a sourcemap reference, IE debugger will ignore your source.
    new webpack.NormalModuleReplacementPlugin(/^incremental-dom$/i, 'incremental-dom/index.js')
  ]

Package Sidebar

Install

npm i idomview-loader

Weekly Downloads

1

Version

0.2.0

License

MIT

Last publish

Collaborators

  • blikblum