node_modules
public
index.html # без app.js
src
components/(компоненты)
assets/(прочие файлы)
App.vue
main.js
package.json
(конфиги)
function startAfter (delay, callback) {
const elapsed = Date.now() - performance.timing.navigationStart
if (elapsed >= delay) {
callback()
} else {
setTimeout(callback, delay - elapsed)
}
}
document.addEventListener("DOMContentLoaded", () => {
startAfter(2000, () => console.log("DOM fully loaded and parsed"))
})
.flat:hover {
box-shadow: none;
}
// В обработчике нажатия
$(this).addClass('flat')
async (req, res) => {
const data = await action1(data)
res.end(data)
await action2(data)
}
<input type="file">
и слушайте событие change;URL.createObjectURL()
и вставьте в атрибут href ссылки для загрузки файла;link.click()
или просто покажите ссылку для скачивания пользователю, если не работает. export default {
data: () => ({
map: null
}),
mounted () {
this.map = new DG.map(this.$el)
},
beforeDestroy () {
if (this.map) this.map.remove()
}
}
Promise<Object|void>
, а у вас Promise<Array>
. Да, массив тоже объект, но пути джаваскриптовы неисповедимы. Этот массив потом передаётся в функцию роутера next в entry-client.js:16, которая тоже не должна уметь его обрабатывать, и т.д. и т.п.async asyncData ({ store }) {
await Promise.all([
store.dispatch('func1'),
store.dispatch('func2'),
store.dispatch('func3'),
store.dispatch('func4')
])
}
const url = $('#imagePreview').css('background-image')
const newMessage = $(`
<div class="user_two_message col-xs-12 col-sm-12">
<div class="sender-text-image">
<div id="imagePreview" style="background-image: ${url}"></div>
</div>
</div>
`)
$('.message-screen').append(newMessage)
class DataService {
fetchAds = () => {
return fb.database().ref('users') /* остальной код */
}
}
class Users {
init() {
dataService.fetchAds().then(data => {
console.log('data', data);
});
}
}
export default {
// Здесь data, computed, хуки и т.д.
render () {
// Отрисовывает дочерние элементы
return this.$scopedSlots.default({
// Данные, передаваемые через механизм scoped slots
property: 'value'
})
}
}
export default {
props: {
name: {
type: String,
default: 'default'
}
},
computed: {
component () {
// Не сокращать до одной строки, иначе свойство не будет реактивным.
const name = this.name
return () => this.load(name)
}
},
methods: {
async load (name) {
// В import() должен быть статический элемент (как './templates/'), иначе не заработает.
const { default: template } = await import(`./templates/${name}.html`)
return { template }
}
},
render (h) {
return h(this.component)
}
}