diff --git a/build/webpack.ssr.config.js b/build/webpack.ssr.config.js
new file mode 100644
index 00000000..9facd9ce
--- /dev/null
+++ b/build/webpack.ssr.config.js
@@ -0,0 +1,42 @@
+/**
+ * 本地预览
+ */
+
+var path = require('path');
+var webpack = require('webpack');
+// var ExtractTextPlugin = require('extract-text-webpack-plugin');
+var HtmlWebpackPlugin = require('html-webpack-plugin');
+var merge = require('webpack-merge');
+var webpackBaseConfig = require('./webpack.base.config.js');
+var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
+
+module.exports = merge(webpackBaseConfig, {
+ // 入口
+ entry: {
+ main: './examples/main',
+ vendors: ['vue', 'vue-router']
+ },
+ // 输出
+ output: {
+ path: path.join(__dirname, '../examples/dist'),
+ publicPath: '',
+ filename: '[name].js'
+ // chunkFilename: '[name].chunk.js'
+ },
+ resolve: {
+ alias: {
+ iview: '../../src/index',
+ // vue: 'vue/dist/vue.js'
+ vue: 'vue/dist/vue.runtime.js'
+ }
+ },
+ plugins: [
+ // new webpack.optimize.CommonsChunkPlugin({ name: 'vendors', filename: 'vendor.bundle.js' }),
+ new HtmlWebpackPlugin({
+ inject: true,
+ filename: path.join(__dirname, '../examples/dist/index.html'),
+ template: path.join(__dirname, '../examples/index.html')
+ }),
+ new FriendlyErrorsPlugin()
+ ]
+});
diff --git a/examples/entry-server.js b/examples/entry-server.js
new file mode 100644
index 00000000..a08b284d
--- /dev/null
+++ b/examples/entry-server.js
@@ -0,0 +1,15 @@
+import { createApp } from './main';
+
+export default context => {
+ return new Promise((resolve, reject) => {
+ const { app, router } = createApp();
+ router.push(context.url)
+ router.onReady(() => {
+ const matchedComponents = router.getMatchedComponents();
+ if (!matchedComponents.length) {
+ reject({ code: 404 });
+ }
+ resolve(app);
+ }, reject);
+ });
+};
\ No newline at end of file
diff --git a/examples/routers/table.vue b/examples/routers/table.vue
index 41b5c4ad..05e15c51 100644
--- a/examples/routers/table.vue
+++ b/examples/routers/table.vue
@@ -1,5 +1,7 @@
-
+