[Build] revert site to webpack config (#3747)

This commit is contained in:
neverland
2019-07-04 14:26:20 +08:00
committed by GitHub
parent 6c0f05d5cc
commit 75525ae410
37 changed files with 1326 additions and 8236 deletions
+88
View File
@@ -0,0 +1,88 @@
<template>
<div>
<van-nav-bar
v-show="title"
class="van-doc-nav-bar"
:title="title"
:left-arrow="showNav"
@click-left="onBack"
/>
<keep-alive>
<router-view :weapp="weapp" />
</keep-alive>
</div>
</template>
<script>
function getQueryString(name) {
const arr = location.search.substr(1).split('&');
for (let i = 0, l = arr.length; i < l; i++) {
const item = arr[i].split('=');
if (item.shift() === name) {
return decodeURIComponent(item.join('='));
}
}
return '';
}
export default {
computed: {
title() {
const { name } = this.$route.meta;
return name ? name.replace(/-/g, '') : '';
},
showNav() {
return getQueryString('hide_nav') !== '1';
},
weapp() {
return getQueryString('weapp') === '1';
}
},
methods: {
onBack() {
history.back();
}
}
};
</script>
<style lang="less">
@import '../../../src/style/var';
body {
color: @text-color;
font-family: 'PingFang SC', Helvetica, 'STHeiti STXihei', 'Microsoft YaHei', Tohoma, Arial, sans-serif;
line-height: 1;
background-color: #f8f8f8;
-webkit-font-smoothing: antialiased;
}
::-webkit-scrollbar {
width: 0;
background: transparent;
}
.van-doc-nav-bar {
height: 56px;
line-height: 56px;
.van-nav-bar__title {
font-size: 17px;
text-transform: capitalize;
}
.van-icon {
color: @gray-dark;
font-size: 24px;
cursor: pointer;
}
}
.van-doc-demo-section {
margin-top: -56px;
padding-top: 56px;
}
</style>
+99
View File
@@ -0,0 +1,99 @@
/**
* Demo Common Mixin && i18n
*/
import Vue from 'vue';
import VueRouter from 'vue-router';
import VantDoc, { DemoBlock, DemoSection } from '@vant/doc';
import i18n from '../utils/i18n';
import Vant, { Lazyload, Locale } from '../../../src';
import { camelize } from '../../../src/utils/format/string';
Vue
.use(Vant)
.use(VantDoc)
.use(VueRouter)
.use(Lazyload, {
lazyComponent: true
});
Vue.mixin(i18n);
Vue.component('demo-block', DemoBlock);
Vue.component('demo-section', DemoSection);
Locale.add({
'zh-CN': {
add: '增加',
decrease: '减少',
red: '红色',
orange: '橙色',
yellow: '黄色',
purple: '紫色',
tab: '标签',
tag: '标签',
desc: '描述信息',
back: '返回',
title: '标题',
status: '状态',
button: '按钮',
option: '选项',
search: '搜索',
content: '内容',
custom: '自定义',
username: '用户名',
password: '密码',
disabled: '禁用状态',
uneditable: '不可编辑',
basicUsage: '基础用法',
advancedUsage: '高级用法',
loadingStatus: '加载状态',
usernamePlaceholder: '请输入用户名',
passwordPlaceholder: '请输入密码'
},
'en-US': {
add: 'Add',
decrease: 'Decrease',
red: 'Red',
orange: 'Orange',
yellow: 'Yellow',
purple: 'Purple',
tab: 'Tab',
tag: 'Tag',
desc: 'Description',
back: 'Back',
title: 'Title',
status: 'Status',
button: 'Button',
option: 'Option',
search: 'Search',
content: 'Content',
custom: 'Custom',
username: 'Username',
password: 'Password',
loadingStatus: 'Loading',
disabled: 'Disabled',
uneditable: 'Uneditable',
basicUsage: 'Basic Usage',
advancedUsage: 'Advanced Usage',
usernamePlaceholder: 'Username',
passwordPlaceholder: 'Password'
}
});
export function demoWrapper(module, name) {
const component = module.default;
name = 'demo-' + name;
component.name = name;
const { i18n: config } = component;
if (config) {
const formattedI18n = {};
const camelizedName = camelize(name);
Object.keys(config).forEach(key => {
formattedI18n[key] = { [camelizedName]: config[key] };
});
Locale.add(formattedI18n);
}
return component;
}
+18
View File
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover">
<meta http-Equiv="Cache-Control" Content="no-cache" />
<meta http-Equiv="Pragma" Content="no-cache" />
<meta http-Equiv="Expires" Content="0" />
<link rel="shortcut icon" href="https://img.yzcdn.cn/zanui/vant/vant-2017-12-18.ico">
<title>Vant - 轻量、可靠的移动端 Vue 组件库</title>
<script>window.Promise || document.write('<script src="//img.yzcdn.cn/huiyi/build/h5/js/pinkie.min.js"><\/script>');</script>
</head>
<body ontouchstart>
<div id="app"></div>
</body>
</html>
+38
View File
@@ -0,0 +1,38 @@
import '../../../src/index.less';
import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App';
import routes from '../router';
import { importAll } from '../utils';
import '@vant/touch-emulator';
const componentMap = {};
const context = require.context('../../../src', true, /demo\/index.vue$/);
importAll(componentMap, context);
const router = new VueRouter({
mode: 'hash',
routes: routes({ mobile: true, componentMap }),
scrollBehavior(to, from, savedPosition) {
return savedPosition || { x: 0, y: 0 };
}
});
router.afterEach(() => {
if (!router.currentRoute.redirectedFrom) {
Vue.nextTick(() => window.syncPath());
}
});
window.vueRouter = router;
if (process.env.NODE_ENV !== 'production') {
Vue.config.productionTip = false;
}
new Vue({
el: '#app',
render: h => h(App),
router
});