import component1 from './component1.vue';
import component2 from './component2.vue';
...
export {component1, component2}
components = {};
fs
.readdirSync(__dirname)
.filter(function(file) {
return (file.indexOf(".") !== 0) && (file !== "index.js");
})
.forEach(function(file) {
components[component.name] = require(path.join(__dirname, file));
});
module.exports = components;
for (var component in components) {
Vue.component(component, components[component]);
}
import {component} from './components/common'
на странице в форме загрузки файла, нажать кнопкуЭто возможно.
выбрать файл из файловой системыЭто невозможно.
и отправить на серверЭто возможно.
<div id="app" @scroll="letsScroll = true" :class="letsScroll && '_scrolled'">
.forefront-element {
-webkit-transform: translateZ(999px) scale(.7);
transform: translateZ(999px) scale(.7);
z-index: 1;
}
.base-element {
-webkit-transform: translateZ(0);
transform: translateZ(0);
z-index: 4;
}
.background-element {
-webkit-transform: translateZ(-999px) scale(2);
transform: translateZ(-999px) scale(2);
z-index: 3;
}
<template>
<input type="text"
:placeholder="placeholder"
:value="value"
@input="onchange">
<app-transition type="toggleDown">
<div>{{ notify }}</div>
</app-transition>
</template>
<script>
export default {
name: 'app-input',
props: ['type', 'value', 'placeholder'],
computed: {
notify() {
let text = 'Поле может содержать только ';
return ( this.type === 'tel' && text + 'цифры' )
|| ( this.type === 'page' && text + 'латинские буквы, цифры (не менее 6 символов)' )
|| ( this.type === 'name' && text + 'русские и латинские буквы, цифры (не менее 3 символов)' )
},
validation(value) {
return {
tel: (/^[0-9]+$/).test(this.value) || !this.value.length,
page: (/^[a-z0-9]+$/i).test(this.value) && this.value.length > 5,
name: (/^[a-zа-яA-ZА-Я0-9 ]+$/i).test(this.value) && this.value.length > 3
}
}
},
methods: {
onchange(e) {
if ( this.validation[this.type] ) {
this.$emit('input', e.target.value);
}
}
}
}
</script>
npm install tgomilar/paroller.js