├── .gitignore ├── bin ├── step06 ├── step04 ├── step02 ├── step01 ├── step08 ├── step11 ├── step12 ├── step07 ├── step03 └── step09 ├── style.css ├── images └── image.jpeg ├── .babelrc ├── dist ├── 5951fc2b025d1fb7f4aa912568913605.jpeg ├── main.0e0dd6733f9464056656.css └── main.0e0dd6733f9464056656.js ├── main.js ├── index.html ├── README.md ├── index.ejs ├── index_prod.html ├── title.vue ├── button.vue ├── app.vue ├── package.json ├── webpack.prod.config.js └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /bin/step06: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | webpack --progress --hide-modules -------------------------------------------------------------------------------- /bin/step04: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | #运行webpack-dev-server 3 | npm run dev 4 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | #app{ 2 | font-size:24px; 3 | color: #f50; 4 | } 5 | -------------------------------------------------------------------------------- /images/image.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchunlin/webpack_tutorial/HEAD/images/image.jpeg -------------------------------------------------------------------------------- /bin/step02: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | #安装vue 3 | npm install vue --save --registry=https://registry.npm.taobao.org 4 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false 5 | } -------------------------------------------------------------------------------- /bin/step01: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | #安装webpack 3 | npm install webpack@3.11.0 --save-dev --registry=https://registry.npm.taobao.org 4 | -------------------------------------------------------------------------------- /bin/step08: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | npm install extract-text-webpack-plugin@3.0.2 --save-dev --registry=https://registry.npm.taobao.org 3 | -------------------------------------------------------------------------------- /dist/5951fc2b025d1fb7f4aa912568913605.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchunlin/webpack_tutorial/HEAD/dist/5951fc2b025d1fb7f4aa912568913605.jpeg -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './app.vue'; 3 | 4 | new Vue({ 5 | el: '#app', 6 | render: h => h(App) //es6箭头函数 7 | }); -------------------------------------------------------------------------------- /bin/step11: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | npm install --save-dev url-loader --registry=https://registry.npm.taobao.org 3 | npm install --save-dev file-loader --registry=https://registry.npm.taobao.org -------------------------------------------------------------------------------- /bin/step12: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | npm install --save-dev webpack-merge --registry=https://registry.npm.taobao.org 3 | npm install --save-dev html-webpack-plugin --registry=https://registry.npm.taobao.org 4 | -------------------------------------------------------------------------------- /bin/step07: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | npm install css-loader@0.28.11 --save-dev --registry=https://registry.npm.taobao.org 3 | npm install style-loader@0.21.0 --save-dev --registry=https://registry.npm.taobao.org 4 | -------------------------------------------------------------------------------- /dist/main.0e0dd6733f9464056656.css: -------------------------------------------------------------------------------- 1 | 2 | div[data-v-44be8f10]{ 3 | color: #f60; 4 | font-size: 24px; 5 | } 6 | 7 | h1 a[data-v-7598ea07]{ 8 | color: #3399ff; 9 | font-size: 24px; 10 | } 11 | -------------------------------------------------------------------------------- /bin/step03: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | #安装webpack-dev-server和webpack-cli 3 | npm install webpack-dev-server@2.11.1 --save-dev --registry=https://registry.npm.taobao.org 4 | npm install webpack-cli@2.1.3 --save-dev --registry=https://registry.npm.taobao.org 5 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Webpack App 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 来源: 2 | - [Vue.js 实战之工程篇](https://segmentfault.com/l/1500000009448189),使用和此教程一致的范例 3 | - 每一步一个提交,可以看git历史来学习和本地验证测试 4 | 5 | 内容: 6 | - 从无到有建立一个webpack项目 7 | - 安装 webpack 及相关的一系列 npm 模块和工具 8 | - 使用 webpack-dev-server 作为调试服务器 9 | - 最简单的 webpack 项目 10 | - webpack build 11 | - 编译css 12 | - 使用 ExtractTextPlugin 合并 css 13 | - vue单文件组件的支持 14 | - 对于图片文件的编译支持 15 | - 生产环境方式的build 16 | -------------------------------------------------------------------------------- /index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Webpack App 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /index_prod.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Webpack App 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /title.vue: -------------------------------------------------------------------------------- 1 | 6 | 15 | 21 | -------------------------------------------------------------------------------- /button.vue: -------------------------------------------------------------------------------- 1 | 6 | 28 | -------------------------------------------------------------------------------- /app.vue: -------------------------------------------------------------------------------- 1 | 11 | 31 | 37 | -------------------------------------------------------------------------------- /bin/step09: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | npm install --save-dev vue-loader@13.3.0 --registry=https://registry.npm.taobao.org 3 | npm install --save-dev vue-style-loader --registry=https://registry.npm.taobao.org 4 | npm install --save-dev vue-template-loader --registry=https://registry.npm.taobao.org 5 | npm install --save-dev vue-hot-reload-api --registry=https://registry.npm.taobao.org 6 | npm install --save-dev vue-template-compiler --registry=https://registry.npm.taobao.org 7 | npm install --save-dev babel --registry=https://registry.npm.taobao.org 8 | npm install --save-dev babel-loader --registry=https://registry.npm.taobao.org 9 | npm install --save-dev babel-core --registry=https://registry.npm.taobao.org 10 | npm install --save-dev babel-plugin-transform-runtime --registry=https://registry.npm.taobao.org 11 | npm install --save-dev babel-preset-es2015 --registry=https://registry.npm.taobao.org 12 | npm install --save-dev babel-runtime --registry=https://registry.npm.taobao.org 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "scripts": { 4 | "dev": "webpack-dev-server --open --config webpack.config.js", 5 | "build": "webpack --progress --hide-modules --config webpack.prod.config.js" 6 | }, 7 | "devDependencies": { 8 | "babel": "^6.23.0", 9 | "babel-core": "^6.26.3", 10 | "babel-loader": "^7.1.4", 11 | "babel-plugin-transform-runtime": "^6.23.0", 12 | "babel-preset-es2015": "^6.24.1", 13 | "babel-runtime": "^6.26.0", 14 | "css-loader": "^3.5.0", 15 | "extract-text-webpack-plugin": "^3.0.2", 16 | "file-loader": "^1.1.11", 17 | "html-webpack-plugin": "^3.2.0", 18 | "style-loader": "^0.21.0", 19 | "url-loader": "^1.0.1", 20 | "vue-hot-reload-api": "^2.3.0", 21 | "vue-loader": "^13.3.0", 22 | "vue-style-loader": "^4.1.0", 23 | "vue-template-compiler": "^2.5.16", 24 | "vue-template-loader": "^0.4.1", 25 | "webpack": "^4.42.1", 26 | "webpack-cli": "^3.3.11", 27 | "webpack-dev-server": "^2.11.1", 28 | "webpack-merge": "^4.1.3" 29 | }, 30 | "dependencies": { 31 | "vue": "^2.5.16" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /webpack.prod.config.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 3 | const ExtractTextPlugin = require('extract-text-webpack-plugin'); 4 | const merge = require('webpack-merge'); 5 | const webpackBaseConfig = require('./webpack.config') 6 | 7 | webpackBaseConfig.plugins = []; 8 | 9 | module.exports = merge(webpackBaseConfig, { 10 | output: { 11 | publicPath: '/dist/', 12 | filename: '[name].[hash].js' 13 | }, 14 | plugins: [ 15 | new ExtractTextPlugin({ 16 | filename: '[name].[hash].css', 17 | allChunks: true 18 | }), 19 | new webpack.DefinePlugin({ 20 | 'process.env': { 21 | NODE_ENV: '"production"' 22 | } 23 | }), 24 | new webpack.optimize.UglifyJsPlugin({ 25 | compress: { 26 | warnings: false 27 | } 28 | }), 29 | new HtmlWebpackPlugin({ 30 | filename: '../index_prod.html', 31 | template: './index.ejs', 32 | inject: false 33 | }) 34 | ] 35 | }) -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | const ExtractTextPlugin = require('extract-text-webpack-plugin'); 4 | 5 | const config = { 6 | entry : { 7 | main : "./main" 8 | }, 9 | output : { 10 | path : path.join(__dirname,'./dist'), 11 | publicPath : '/dist/', 12 | filename : "main.js" 13 | }, 14 | module:{ 15 | rules: [ 16 | { 17 | test:/\.vue$/, 18 | loader: 'vue-loader', 19 | options: { 20 | loaders: { 21 | css: ExtractTextPlugin.extract({ 22 | use: 'css-loader', 23 | fallback: 'vue-style-loader' 24 | }) 25 | } 26 | } 27 | }, 28 | { 29 | test: /\.js$/, 30 | loader: 'babel-loader', 31 | exclude: /node_modules/ 32 | }, 33 | { 34 | test: /\.css$/, 35 | use: ExtractTextPlugin.extract({ 36 | use: 'css-loader', 37 | fallback: 'style-loader' 38 | }) 39 | }, 40 | { 41 | test: /\.(gif|jpeg|jpg|png|woff|svg|eot|ttf)\??.*$/, 42 | loader: 'url-loader?limit=1024' 43 | } 44 | ] 45 | }, 46 | plugins: [ 47 | new ExtractTextPlugin('main.css') 48 | ] 49 | }; 50 | 51 | module.exports = config; 52 | -------------------------------------------------------------------------------- /dist/main.0e0dd6733f9464056656.js: -------------------------------------------------------------------------------- 1 | !function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/dist/",e(e.s=2)}([function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e){t.exports=function(t,e,n,r,o,i){var a,s=t=t||{},c=typeof t.default;"object"!==c&&"function"!==c||(a=t,s=t.default);var u="function"==typeof s?s.options:s;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),n&&(u.functional=!0),o&&(u._scopeId=o);var l;if(i?(l=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},u._ssrRegister=l):r&&(l=r),l){var f=u.functional,d=f?u.render:u.beforeCreate;f?(u._injectStyles=l,u.render=function(t,e){return l.call(e),d(t,e)}):u.beforeCreate=d?[].concat(d,l):[l]}return{esModule:a,exports:s,options:u}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=n(3),i=r(o),a=n(7),s=r(a);new i.default({el:"#app",render:function(t){return t(s.default)}})},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t,n){function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function i(t){return!0===t}function a(t){return!1===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function c(t){return null!==t&&"object"==typeof t}function u(t){return"[object Object]"===_r.call(t)}function l(t){return"[object RegExp]"===_r.call(t)}function f(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function p(t){var e=parseFloat(t);return isNaN(e)?t:e}function v(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}function m(t,e){return br.call(t,e)}function y(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}function _(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function g(t,e){return t.bind(e)}function b(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function w(t,e){for(var n in e)t[n]=e[n];return t}function C(t){for(var e={},n=0;n-1)if(i&&!m(o,"default"))a=!1;else if(""===a||a===xr(t)){var c=nt(String,o.type);(c<0||s0&&(a=gt(a,(e||"")+"_"+n),_t(a[0])&&_t(u)&&(l[c]=M(u.text+a[0].text),a.shift()),l.push.apply(l,a)):s(a)?_t(u)?l[c]=M(u.text+a):""!==a&&l.push(M(a)):_t(a)&&_t(u)?l[c]=M(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),l.push(a)));return l}function bt(t,e){return(t.__esModule||Jr&&"Module"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function wt(t,e,n,r,o){var i=ro();return i.asyncFactory=t,i.asyncMeta={data:e,context:n,children:r,tag:o},i}function Ct(t,e,n){if(i(t.error)&&o(t.errorComp))return t.errorComp;if(o(t.resolved))return t.resolved;if(i(t.loading)&&o(t.loadingComp))return t.loadingComp;if(!o(t.contexts)){var a=t.contexts=[n],s=!0,u=function(){for(var t=0,e=a.length;tSo&&Ao[n].id>t.id;)n--;Ao.splice(n+1,0,t)}else Ao.push(t);ko||(ko=!0,ct(Ut))}}function Wt(t,e,n){Io.get=function(){return this[e][n]},Io.set=function(t){this[e][n]=t},Object.defineProperty(t,n,Io)}function qt(t){t._watchers=[];var e=t.$options;e.props&&Kt(t,e.props),e.methods&&Yt(t,e.methods),e.data?Xt(t):F(t._data={},!0),e.computed&&Jt(t,e.computed),e.watch&&e.watch!==Hr&&te(t,e.watch)}function Kt(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];!t.$parent||L(!1);for(var i in e)!function(i){o.push(i);var a=Q(i,e,n,t);R(r,i,a),i in t||Wt(t,"_props",i)}(i);L(!0)}function Xt(t){var e=t.$options.data;e=t._data="function"==typeof e?Gt(e,t):e||{},u(e)||(e={});for(var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);o--;){var i=n[o];r&&m(r,i)||k(i)||Wt(t,"_data",i)}F(e,!0)}function Gt(t,e){j();try{return t.call(e,e)}catch(t){return rt(t,e,"data()"),{}}finally{I()}}function Jt(t,e){var n=t._computedWatchers=Object.create(null),r=Xr();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;r||(n[o]=new jo(t,a||$,$,Mo)),o in t||Zt(t,o,i)}}function Zt(t,e,n){var r=!Xr();"function"==typeof n?(Io.get=r?Qt(e):n,Io.set=$):(Io.get=n.get?r&&!1!==n.cache?Qt(e):n.get:$,Io.set=n.set?n.set:$),Object.defineProperty(t,e,Io)}function Qt(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),Yr.target&&e.depend(),e.value}}function Yt(t,e){t.$options.props;for(var n in e)t[n]=null==e[n]?$:Or(e[n],t)}function te(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o=0||n.indexOf(t[o])<0)&&r.push(t[o]);return r}return t}function Pe(t){this._init(t)}function Le(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=b(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}function Ne(t){t.mixin=function(t){return this.options=J(this.options,t),this}}function De(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name,a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=J(n.options,t),a.super=n,a.options.props&&Fe(a),a.options.computed&&Re(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,Er.forEach(function(t){a[t]=n[t]}),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=w({},a.options),o[r]=a,a}}function Fe(t){var e=t.options.props;for(var n in e)Wt(t.prototype,"_props",n)}function Re(t){var e=t.options.computed;for(var n in e)Zt(t.prototype,n,e[n])}function Ue(t){Er.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}function Ve(t){return t&&(t.Ctor.options.name||t.tag)}function Be(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!l(t)&&t.test(e)}function He(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=Ve(a.componentOptions);s&&!e(s)&&ze(n,i,r,o)}}}function ze(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,h(n,e)}function We(t){for(var e=t.data,n=t,r=t;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=qe(r.data,e));for(;o(n=n.parent);)n&&n.data&&(e=qe(e,n.data));return Ke(e.staticClass,e.class)}function qe(t,e){return{staticClass:Xe(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Ke(t,e){return o(t)||o(e)?Xe(t,Ge(e)):""}function Xe(t,e){return t?e?t+" "+e:t:e||""}function Ge(t){return Array.isArray(t)?Je(t):c(t)?Ze(t):"string"==typeof t?t:""}function Je(t){for(var e,n="",r=0,i=t.length;r-1?ri[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:ri[t]=/HTMLUnknownElement/.test(e.toString())}function tn(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function en(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function nn(t,e){return document.createElementNS(Yo[t],e)}function rn(t){return document.createTextNode(t)}function on(t){return document.createComment(t)}function an(t,e,n){t.insertBefore(e,n)}function sn(t,e){t.removeChild(e)}function cn(t,e){t.appendChild(e)}function un(t){return t.parentNode}function ln(t){return t.nextSibling}function fn(t){return t.tagName}function dn(t,e){t.textContent=e}function pn(t,e){t.setAttribute(e,"")}function vn(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?h(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}function hn(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&mn(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function mn(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||oi(r)&&oi(i)}function yn(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function _n(t,e){(t.data.directives||e.data.directives)&&gn(t,e)}function gn(t,e){var n,r,o,i=t===si,a=e===si,s=bn(t.data.directives,t.context),c=bn(e.data.directives,e.context),u=[],l=[];for(n in c)r=s[n],o=c[n],r?(o.oldValue=r.value,Cn(o,"update",e,t),o.def&&o.def.componentUpdated&&l.push(o)):(Cn(o,"bind",e,t),o.def&&o.def.inserted&&u.push(o));if(u.length){var f=function(){for(var n=0;n-1?xn(t,e,n):Xo(e)?Qo(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Ko(e)?t.setAttribute(e,Qo(n)||"false"===n?"false":"true"):Jo(e)?Qo(n)?t.removeAttributeNS(Go,Zo(e)):t.setAttributeNS(Go,e,n):xn(t,e,n)}function xn(t,e,n){if(Qo(n))t.removeAttribute(e);else{if(Rr&&!Ur&&"TEXTAREA"===t.tagName&&"placeholder"===e&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}function On(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=We(e),c=n._transitionClasses;o(c)&&(s=Xe(s,Ge(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}function kn(t){if(o(t[vi])){var e=Rr?"change":"input";t[e]=[].concat(t[vi],t[e]||[]),delete t[vi]}o(t[hi])&&(t.change=[].concat(t[hi],t.change||[]),delete t[hi])}function Tn(t,e,n){var r=Bo;return function o(){null!==t.apply(null,arguments)&&En(e,o,n,r)}}function Sn(t,e,n,r,o){e=st(e),n&&(e=Tn(e,t,r)),Bo.addEventListener(t,e,zr?{capture:r,passive:o}:r)}function En(t,e,n,r){(r||Bo).removeEventListener(t,e._withTask||e,n)}function jn(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Bo=e.elm,kn(n),dt(n,o,Sn,En,e.context),Bo=void 0}}function In(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};o(c.__ob__)&&(c=e.data.domProps=w({},c));for(n in s)r(c[n])&&(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n){a._value=i;var u=r(i)?"":String(i);Mn(a,u)&&(a.value=u)}else a[n]=i}}}function Mn(t,e){return!t.composing&&("OPTION"===t.tagName||Pn(t,e)||Ln(t,e))}function Pn(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}function Ln(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.lazy)return!1;if(r.number)return p(n)!==p(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}function Nn(t){var e=Dn(t.style);return t.staticStyle?w(t.staticStyle,e):e}function Dn(t){return Array.isArray(t)?C(t):"string"==typeof t?_i(t):t}function Fn(t,e){var n,r={};if(e)for(var o=t;o.componentInstance;)(o=o.componentInstance._vnode)&&o.data&&(n=Nn(o.data))&&w(r,n);(n=Nn(t.data))&&w(r,n);for(var i=t;i=i.parent;)i.data&&(n=Nn(i.data))&&w(r,n);return r}function Rn(t,e){var n=e.data,i=t.data;if(!(r(n.staticStyle)&&r(n.style)&&r(i.staticStyle)&&r(i.style))){var a,s,c=e.elm,u=i.staticStyle,l=i.normalizedStyle||i.style||{},f=u||l,d=Dn(e.data.style)||{};e.data.normalizedStyle=o(d.__ob__)?w({},d):d;var p=Fn(e,!0);for(s in f)r(p[s])&&wi(c,s,"");for(s in p)(a=p[s])!==f[s]&&wi(c,s,null==a?"":a)}}function Un(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Vn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Bn(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&w(e,xi(t.name||"v")),w(e,t),e}return"string"==typeof t?xi(t):void 0}}function Hn(t){Mi(function(){Mi(t)})}function zn(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Un(t,e))}function Wn(t,e){t._transitionClasses&&h(t._transitionClasses,e),Vn(t,e)}function qn(t,e,n){var r=Kn(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===ki?Ei:Ii,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout(function(){c0&&(n=ki,l=a,f=i.length):e===Ti?u>0&&(n=Ti,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?ki:Ti:null,f=n?n===ki?i.length:c.length:0),{type:n,timeout:l,propCount:f,hasTransform:n===ki&&Pi.test(r[Si+"Property"])}}function Xn(t,e){for(;t.length1}function tr(t,e){!0!==e.data.show&&Jn(e)}function er(t,e,n){nr(t,e,n),(Rr||Vr)&&setTimeout(function(){nr(t,e,n)},0)}function nr(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(A(or(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function rr(t,e){return e.every(function(e){return!A(e,t)})}function or(t){return"_value"in t?t._value:t.value}function ir(t){t.target.composing=!0}function ar(t){t.target.composing&&(t.target.composing=!1,sr(t.target,"input"))}function sr(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function cr(t){return!t.componentInstance||t.data&&t.data.transition?t:cr(t.componentInstance._vnode)}function ur(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?ur(At(e.children)):t}function lr(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[Cr(i)]=o[i];return e}function fr(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function dr(t){for(;t=t.parent;)if(t.data.transition)return!0}function pr(t,e){return e.key===t.key&&e.tag===t.tag}function vr(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function hr(t){t.data.newPos=t.elm.getBoundingClientRect()}function mr(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}/*! 2 | * Vue.js v2.5.16 3 | * (c) 2014-2018 Evan You 4 | * Released under the MIT License. 5 | */ 6 | var yr=Object.freeze({}),_r=Object.prototype.toString,gr=(v("slot,component",!0),v("key,ref,slot,slot-scope,is")),br=Object.prototype.hasOwnProperty,wr=/-(\w)/g,Cr=y(function(t){return t.replace(wr,function(t,e){return e?e.toUpperCase():""})}),$r=y(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),Ar=/\B([A-Z])/g,xr=y(function(t){return t.replace(Ar,"-$1").toLowerCase()}),Or=Function.prototype.bind?g:_,kr=function(t,e,n){return!1},Tr=function(t){return t},Sr="data-server-rendered",Er=["component","directive","filter"],jr=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured"],Ir={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:kr,isReservedAttr:kr,isUnknownElement:kr,getTagNamespace:$,parsePlatformTagName:Tr,mustUseProp:kr,_lifecycleHooks:jr},Mr=/[^\w.$]/,Pr="__proto__"in{},Lr="undefined"!=typeof window,Nr="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,Dr=Nr&&WXEnvironment.platform.toLowerCase(),Fr=Lr&&window.navigator.userAgent.toLowerCase(),Rr=Fr&&/msie|trident/.test(Fr),Ur=Fr&&Fr.indexOf("msie 9.0")>0,Vr=Fr&&Fr.indexOf("edge/")>0,Br=(Fr&&Fr.indexOf("android"),Fr&&/iphone|ipad|ipod|ios/.test(Fr)||"ios"===Dr),Hr=(Fr&&/chrome\/\d+/.test(Fr),{}.watch),zr=!1;if(Lr)try{var Wr={};Object.defineProperty(Wr,"passive",{get:function(){zr=!0}}),window.addEventListener("test-passive",null,Wr)}catch(t){}var qr,Kr,Xr=function(){return void 0===qr&&(qr=!Lr&&!Nr&&void 0!==t&&"server"===t.process.env.VUE_ENV),qr},Gr=Lr&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Jr="undefined"!=typeof Symbol&&E(Symbol)&&"undefined"!=typeof Reflect&&E(Reflect.ownKeys);Kr="undefined"!=typeof Set&&E(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var Zr=$,Qr=0,Yr=function(){this.id=Qr++,this.subs=[]};Yr.prototype.addSub=function(t){this.subs.push(t)},Yr.prototype.removeSub=function(t){h(this.subs,t)},Yr.prototype.depend=function(){Yr.target&&Yr.target.addDep(this)},Yr.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e1?b(n):n;for(var r=b(arguments,1),o=0,i=n.length;oparseInt(this.max)&&ze(c,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Vo={KeepAlive:Uo};!function(t){var e={};e.get=function(){return Ir},Object.defineProperty(t,"config",e),t.util={warn:Zr,extend:w,mergeOptions:J,defineReactive:R},t.set=U,t.delete=V,t.nextTick=ct,t.options=Object.create(null),Er.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,w(t.options.components,Vo),Le(t),Ne(t),De(t),Ue(t)}(Pe),Object.defineProperty(Pe.prototype,"$isServer",{get:Xr}),Object.defineProperty(Pe.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Pe,"FunctionalRenderContext",{value:ye}),Pe.version="2.5.16";var Bo,Ho,zo=v("style,class"),Wo=v("input,textarea,option,select,progress"),qo=function(t,e,n){return"value"===n&&Wo(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Ko=v("contenteditable,draggable,spellcheck"),Xo=v("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Go="http://www.w3.org/1999/xlink",Jo=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Zo=function(t){return Jo(t)?t.slice(6,t.length):""},Qo=function(t){return null==t||!1===t},Yo={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},ti=v("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),ei=v("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),ni=function(t){return ti(t)||ei(t)},ri=Object.create(null),oi=v("text,number,password,search,email,tel,url"),ii=Object.freeze({createElement:en,createElementNS:nn,createTextNode:rn,createComment:on,insertBefore:an,removeChild:sn,appendChild:cn,parentNode:un,nextSibling:ln,tagName:fn,setTextContent:dn,setStyleScope:pn}),ai={create:function(t,e){vn(e)},update:function(t,e){t.data.ref!==e.data.ref&&(vn(t,!0),vn(e))},destroy:function(t){vn(t,!0)}},si=new eo("",{},[]),ci=["create","activate","update","remove","destroy"],ui={create:_n,update:_n,destroy:function(t){_n(t,si)}},li=Object.create(null),fi=[ai,ui],di={create:$n,update:$n},pi={create:On,update:On},vi="__r",hi="__c",mi={create:jn,update:jn},yi={create:In,update:In},_i=y(function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach(function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}),gi=/^--/,bi=/\s*!important$/,wi=function(t,e,n){if(gi.test(e))t.style.setProperty(e,n);else if(bi.test(n))t.style.setProperty(e,n.replace(bi,""),"important");else{var r=$i(e);if(Array.isArray(n))for(var o=0,i=n.length;ov?(f=r(n[y+1])?null:n[y+1].elm,_(t,f,n,p,y,i)):p>y&&b(t,e,d,v)}function $(t,e,n,r){for(var i=n;i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(5),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(e,n(0))},function(t,e,n){(function(t,e){!function(t,n){"use strict";function r(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n