diff --git a/examples/single-vue-to-js-example/README.md b/examples/single-vue-to-js-example/README.md
new file mode 100644
index 0000000..c3f02eb
--- /dev/null
+++ b/examples/single-vue-to-js-example/README.md
@@ -0,0 +1,38 @@
+This example is a template using webpack and weexLoader to convert single vue file to js file.
+
+If you want to convert vue file to js file, please follow the below steps.
+
+### Usage
+
+1. execute `npm install` in terminal
+
+2. copy the vue file to current directory
+
+3. update the content of `webpack.config.js`
+
+   ```js
+   entry: {
+       '<output-filename-without-js-extension>': '<input-file-path-with-filename>?entry=true' 
+     },
+     output: {
+       path: path.resolve(__dirname, '<output-path>')
+   }
+   ```
+
+   for example, the below config convert `App.vue` to `e2e-landing.js` in current directory.
+
+   ```javascript
+   entry: {
+    	// you should keep ?entry=true and you should give ./
+   	'e2e-landing': './App.vue?entry=true'
+   },
+   output: {
+   	path: path.resolve(__dirname, './')
+   }
+   ```
+
+4. execute `npm run build:weex` in terminal.
+
+5. Done! 
+
+The output file is what you wanted.
\ No newline at end of file
diff --git a/examples/single-vue-to-js-example/build/build-weex.js b/examples/single-vue-to-js-example/build/build-weex.js
new file mode 100644
index 0000000..d239546
--- /dev/null
+++ b/examples/single-vue-to-js-example/build/build-weex.js
@@ -0,0 +1,21 @@
+var webpack = require('webpack');
+var chalk = require('chalk');
+var webpackConfig = require('./webpack.weex.prod.conf');
+
+webpack(webpackConfig,function (err, stats) {
+    if (err) {
+        throw err
+    }
+    process.stdout.write(stats.toString({
+      colors: true,
+      modules: false,
+      children: false,
+      chunks: false,
+      chunkModules: false
+    }) + '\n\n')
+
+    console.log(chalk.cyan('  Build complete.\n'))
+    console.log(chalk.yellow(
+      '  Tip: weex bundle.js \n'
+    ))
+});
diff --git a/examples/single-vue-to-js-example/build/webpack.weex.prod.conf.js b/examples/single-vue-to-js-example/build/webpack.weex.prod.conf.js
new file mode 100644
index 0000000..7b52188
--- /dev/null
+++ b/examples/single-vue-to-js-example/build/webpack.weex.prod.conf.js
@@ -0,0 +1,31 @@
+var webpack = require('webpack');
+var baseWebpackConfig = require('../webpack.config.js');
+var  merge = require('webpack-merge');
+
+var webacpkConfig = require('../config');
+var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
+if (!process.env.NODE_ENV) {
+  process.env.NODE_ENV = JSON.parse(webacpkConfig.weexBuild.env.NODE_ENV)
+}
+var env = process.env.NODE_ENV;
+
+if (env === 'production'){
+  baseWebpackConfig.output.filename = '[name].js';
+}
+
+module.exports = merge(baseWebpackConfig,{
+  plugins: [
+    new webpack.DefinePlugin({
+      'process.env': JSON.stringify(env)
+    }),
+    new webpack.optimize.UglifyJsPlugin({
+      compress: {
+        warnings: false
+      }
+    }),
+    new webpack.BannerPlugin({
+     raw: true ,
+     banner: '// { "framework": "Vue" }\n'
+    })
+  ]
+});
diff --git a/examples/single-vue-to-js-example/config/dev.env.js b/examples/single-vue-to-js-example/config/dev.env.js
new file mode 100644
index 0000000..efead7c
--- /dev/null
+++ b/examples/single-vue-to-js-example/config/dev.env.js
@@ -0,0 +1,6 @@
+var merge = require('webpack-merge')
+var prodEnv = require('./prod.env')
+
+module.exports = merge(prodEnv, {
+  NODE_ENV: '"development"'
+})
diff --git a/examples/single-vue-to-js-example/config/index.js b/examples/single-vue-to-js-example/config/index.js
new file mode 100644
index 0000000..e93f074
--- /dev/null
+++ b/examples/single-vue-to-js-example/config/index.js
@@ -0,0 +1,47 @@
+// see http://vuejs-templates.github.io/webpack for documentation.
+var path = require('path')
+
+module.exports = {
+  build: {
+    env: require('./prod.env'),
+    index: path.resolve(__dirname, '../dist/index.html'),
+    assetsRoot: path.resolve(__dirname, '../dist'),
+    assetsSubDirectory: 'static',
+    assetsPublicPath: '/',
+    productionSourceMap: true,
+    // Gzip off by default as many popular static hosts such as
+    // Surge or Netlify already gzip all static assets for you.
+    // Before setting to `true`, make sure to:
+    // npm install --save-dev compression-webpack-plugin
+    productionGzip: false,
+    productionGzipExtensions: ['js', 'css'],
+    // Run the build command with an extra argument to
+    // View the bundle analyzer report after build finishes:
+    // `npm run build --report`
+    // Set to `true` or `false` to always turn it on or off
+    bundleAnalyzerReport: process.env.npm_config_report
+  },
+  dev: {
+    env: require('./dev.env'),
+    port: 8080,
+    autoOpenBrowser: true,
+    assetsSubDirectory: 'static',
+    assetsPublicPath: '/',
+    proxyTable: {},
+    // CSS Sourcemaps off by default because relative paths are "buggy"
+    // with this option, according to the CSS-Loader README
+    // (https://github.com/webpack/css-loader#sourcemaps)
+    // In our experience, they generally work as expected,
+    // just be aware of this issue when enabling this option.
+    cssSourceMap: false
+  },
+  weexDev: {
+    env: require('./dev.env'),
+    port: 8089,
+    assetsSubDirectory: 'dist',
+    assetsPublicPath: '/'
+  },
+  weexBuild: {
+    env: require('./prod.env')
+  }
+}
diff --git a/examples/single-vue-to-js-example/config/prod.env.js b/examples/single-vue-to-js-example/config/prod.env.js
new file mode 100644
index 0000000..773d263
--- /dev/null
+++ b/examples/single-vue-to-js-example/config/prod.env.js
@@ -0,0 +1,3 @@
+module.exports = {
+  NODE_ENV: '"production"'
+}
diff --git a/examples/single-vue-to-js-example/package.json b/examples/single-vue-to-js-example/package.json
new file mode 100644
index 0000000..0076425
--- /dev/null
+++ b/examples/single-vue-to-js-example/package.json
@@ -0,0 +1,20 @@
+{
+  "name": "vuetojs",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "build:weex": "npm run release:weex",
+    "release:weex": "node build/build-weex.js"
+  },
+  "author": "renmin",
+  "license": "ISC",
+  "dependencies": {
+    "babel-loader": "^8.0.6",
+    "weex-loader": "^0.7.12",
+    "webpack": "^2.2.1",
+    "friendly-errors-webpack-plugin": "^1.1.3",
+    "webpack-merge": "^2.6.1",
+    "chalk": "^1.1.3"
+  }
+}
diff --git a/examples/single-vue-to-js-example/webpack.config.js b/examples/single-vue-to-js-example/webpack.config.js
new file mode 100644
index 0000000..2ac57da
--- /dev/null
+++ b/examples/single-vue-to-js-example/webpack.config.js
@@ -0,0 +1,32 @@
+var webpack = require('webpack');
+var path = require('path');
+
+function resolve (dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+var config = {
+
+  entry: {
+      'e2e-landing': './App.vue?entry=true'
+  },
+  output: {
+    path: path.resolve(__dirname, './')
+  },
+  module: {
+    rules: [
+      {
+        test: /\.vue(\?[^?]+)?$/,
+        loaders: ['weex-loader'],
+        exclude: /node_modules/
+      },
+      {
+        test: /\.js$/,
+        loaders: ['babel-loader'],
+        exclude: /node_modules/
+      }
+    ]
+  }
+};
+
+module.exports = config;
