Обзор
все правильноmpvue
Я уверен, что вы не незнакомы,mpvue
Практически сгладил различия между нашей разработкой на стороне браузера и стороны апплета. Однако из-за особенностей апплета мы не можем полностью пересадить в апплет некоторые методы и функции в браузере. например, вcanvas
В некоторых приложениях есть большая разница между браузером и апплетом. В этой статье в основном представлен более элегантный способ использования апплета.canvas
, чтобы максимально сгладить эту разницу. Это благодаряmpvue
Предлагаются мощные функции.
А пока можете пройтись по этой статье (Визуализируйте свой виртуальный дом на холсте) кратко понятьvnode2canvas
пройти черезvue
выполнитьcanvas
Элегантное использование на стороне браузера.
Show me the code
Давайте взглянемmpvue
Китайская живописьcanvas
код:
<template>
<canvas canvas-id="canvas" :style="{width: width + 'px', height: height+'px'}"></canvas>
</template>
<script>
export default {
data () {
return {
width: 0,
height: 0
}
},
canvasOptions: {
canvasId: 'canvas'
},
renderCanvas (h) {
let device = wx.getSystemInfoSync()
this.width = device.windowWidth
this.height = device.windowHeight
return h('view', [
h('image', {
props: {
src: 'https://pic.u51.com/sfs-gateway/api/v1/download/5f7dac8228354008ae6f69f67c1c0fa410d6'
},
style: {
left: 10,
top: 10,
width: 100,
height: 100,
fill: '#000',
fontSize: 18
}
}),
h('text', {
style: {
left: 120,
top: 10,
fill: '#000',
fontSize: 18,
width: 150,
ellipse: true
}
}, 'hello mpvue!')
])
}
}
</script>
Еще кейсы:vnode2canvas
Это нарисуетcanvas
:
Метод реализации
Я уже писал статьюvnode2canvas
Но в тот раз не сделал поддержкуmpvue
Функция предыдущей реализации в основном заключается в$watch
мониторvnode
изменяется, то согласноvnode
сделатьcanvas
рендеринг работы. Технические подробности см.Визуализируйте свой виртуальный дом на холсте
фактическиmpvue
существуетvnode
Трансформация такая же. Единственная разница заключается в стороне браузераcanvas API
Есть большая разница с маленькой программой. Итак, чтобы сгладить эту разницу, мы можем извлечь уроки изaxios
в браузер иnode
Метод сглаживания конца. То есть вы можете сделать адаптер рендеринга, чтобы адаптироваться к работе рендеринга с разных сторон:
/**
* adapter for browser of weixin Mini Program
*/
class RenderAdapter {
constructor () {
this.platform = constants.IN_WEIXIN ? 'wx' : 'browser'
}
renderText (instance, ctx, scrollTop) {
let renderFn = {
browser () {
// todo 浏览器 canvas text 渲染
},
wx () {
// todo 小程序 canvas text 渲染
}
}
renderFn[this.platform]()
}
// ...
}
Во-вторых, обратите внимание на различия между некоторыми средами на стороне апплета и на стороне браузера и выполните некоторую адаптивную обработку. чтобы вы могли счастливоmpvue
более элегантно для достижения управляемого даннымиcanvas
оказывать. в то же времяvnode2canvas
Многие небольшие программы инкапсулированы внутриcanvas
Механизм обработки и механизм оптимизации для достижения более высокой производительности и стабильности.
постскриптум
vnode2canvas
черезvirtual dom
рисоватьcanvas
,использоватьVue
захват данных для достижения цели представлений, управляемых данными. выгода отmpvue
, его также можно применить к апплету. Второйvnode2canvas
пройти на днеadapter
Максимально сгладить различия в развитии на разных концах. поддерживаяcanvas
Привязка событий для внутренних элементов и прокрутки списка. Заинтересованные друзья также могут обсудить вместе ~
прикрепилvnode2canvas
Некоторые ссылки: