当前位置: 首页 > news >正文

怎么做外贸网站的邮箱签名营销模式和营销策略

怎么做外贸网站的邮箱签名,营销模式和营销策略,如何做新网站保留域名,郑州高端品牌网站建设为什么要写这个? 因为在写小程序的时候首页功能比较多,造成渲染的dom有很多,一直setdata跳转到其他页面或者一直滑动就会卡顿,白屏。官方文档上那个不适用于瀑布流。官方文档 理解 刚开始在写这个的时候,就在想微信…

为什么要写这个?

因为在写小程序的时候首页功能比较多,造成渲染的dom有很多,一直setdata跳转到其他页面或者一直滑动就会卡顿,白屏。官方文档上那个不适用于瀑布流。官方文档

理解

刚开始在写这个的时候,就在想微信小程序的开发有虚拟dom这个概念吗,查看文档,自己实践,才大致理解一点,总结出来就是微信小程序其实并没有直接使用虚拟DOM这个概念,但提供了类似的操作DOM的方法,并且也可以根据自己的需求探索实现类似虚拟DOM的功能,所以就开始自己准备。
其实我是看了俩篇博文然后经过改造成自己的数据,然后进行理解,最后融汇贯通。我会一步一步按照自己的理解进行再代码中注释,直接复制就可以用。
第一篇
第二篇有代码片段
已附代码(如果没贴相关的代码就代表不需要写)
components->virtualItem->virtualItem.wxml

<view id="{{virtualId}}"><block wx:if="{{isShow}}"><slot></slot></block><view wx:else style="height: {{ height }}px"></view>
</view>

components->virtualItem->virtualItem.js

// components/virtualItem/virtualItem.js
Component({properties: {// 当前虚拟子模块唯一IDvirtualId: {type: String,value: '',observer() {this.getCurrentItemHeight()}},// 父级滚动容器ID,如果需要以指定容器处理wrapId: {type: String,value: '',},// 离可见区域的距离,单位pxobserveDistance: {type: Number,value: 1500,}},data: {height: 0,isShow: true,},methods: {getCurrentItemHeight() {const query = this.createSelectorQuery();const { virtualId } = this.data;query.select(`#${virtualId}`).boundingClientRect()query.exec((res) => {this.setData({height: res[0].height}, this.observePage())})},observePage() {const { virtualId, observeDistance, wrapId } = this.datalet IntersectionObserver = wx.createIntersectionObserver(this);(wrapId ? IntersectionObserver.relativeTo(`#${wrapId}`) : IntersectionObserver.relativeToViewport({ top: observeDistance, bottom: observeDistance })).observe(`#${virtualId}`, ({ intersectionRatio }) => {this.setData({isShow: intersectionRatio > 0,})})},}
})

page->index->index.wxml

<view><scroll-view class="virtualScrollView" eventhandle scroll-y bindscrolltolower="onScrollLower"><block wx:for="{{ listData }}" wx:key="screenIndex" wx:for-index="screenIndex" wx:for-item="screenItem"><VirtualItem virtualId="virtual_{{pageIndex}}"><view class="fall"><block wx:for="{{ screenItem.columns }}" wx:key="columnIndex" wx:for-index="columnIndex" wx:for-item="column" ><view style="margin-top: -{{screenItem.columnOffset[columnIndex]}}px;" class="fallCol"><view wx:for="{{column}}" style="height: {{ item.height }}px; background-color: {{ item.color }};" wx:key="index" wx:for-item="item" wx:for-index="index">screen: {{ screenIndex }}, column: {{ columnIndex }}这里边就可以直接写你需要的数据,不需要使用css设置瀑布流,直接就是现成的</view></view></block></view></VirtualItem></block></scroll-view>
</view>
.virtualScrollView {height: 100vh;
}
.fall {position: relative;display: flex;
}
.fallCol {flex: 1;display: flex;flex-direction: column;
}
.cell {margin: 5px;
}
Page({data: {listQuery: {pageIndex: 1,pageSize: 10,}, // 列表请求参数listData: [], // 列表数据column: 2, // 列数。需要三列可以改为3columnsHeights: [ 0, 0], // 每列高度如果column为3的话那么这个值就是[0, 0, 0]},onLoad() {this.getList();},async getList() {let { listQuery: { pageIndex }, column, columnsHeights } = this.data;const columns = [];// 上一组的高度数据,用于计算偏移值const lastHeights = [...columnsHeights];// 获取数据 这个就是你的真实数据,调取接口然后赋值给list。当然会异步// 所以可以使用Promise和async/await来确保在你调取接口之后能赋值给list成功。代码已在最底下写出await this.getData();  // 自己的真实数据调取的接口const list = this.data.getdata;// const list = this.getListData();// 初始化当前屏数据for (let i = 0; i < column; i++ ) {columns.push([]);}// 遍历新数据,分配至各列for (let i = 0; i < list.length; i++) {const position = this.computePosition(columnsHeights);columns[position].push(list[i]);// 如果使用自己的真实数据报错的话就把Number(list[i].height)改为自己喜欢的数字100或者100多columnsHeights[position] += Number(list[i].height);}this.setData({[`listData[${pageIndex}]`]: {columns,columnOffset: this.computeOffset(lastHeights),}});this.data.listQuery.pageIndex = pageIndex + 1;this.data.columnsHeights = columnsHeights;},/*** 获取列表数据。模拟的假数据*/getListData() {const result = [];for (let i = 0; i < this.data.listQuery.pageSize; i++) {const height = Math.floor(Math.random() * 300);const item = {height: height < 150 ? height + 150 : height,color: this.randomRgbColor(),};result.push(item);}return result;},/*** 随机生成RGB颜色*/randomRgbColor() {var r = Math.floor(Math.random() * 256); //随机生成256以内r值var g = Math.floor(Math.random() * 256); //随机生成256以内g值var b = Math.floor(Math.random() * 256); //随机生成256以内b值return `rgb(${r},${g},${b})`; //返回rgb(r,g,b)格式颜色},/*** 获取最小高度列下标*/computePosition(heights) {const min = Math.min(...heights);return heights.findIndex((item) => item === min);},/*** 计算偏移量*/computeOffset(heights) {const max = Math.max(...heights);return heights.map((item) => max - item);},onScrollLower() {// 用自己的调取接口拿到的total的总数和pageindex做判断大于总数就不掉用接口了this.getList();}// 封装起来的PromisehttpGet(url, params) {return new Promise((resolve, reject) => {http.Get(url, params, function (res) {if (res.status == 0) {resolve(res.data);} else {reject(new Error('请求失败'));}});});},
})

有好多人还有更好的思路,有的可以评论大家一起探讨。微信小程序的代码片段。有真实数据的。
代码片段打开报错的话把该换的数据换了就可以了。


文章转载自:
http://rhythmocatechism.jpkk.cn
http://pantologic.jpkk.cn
http://thorshavn.jpkk.cn
http://wrecking.jpkk.cn
http://laciniation.jpkk.cn
http://anhinga.jpkk.cn
http://preconscious.jpkk.cn
http://quartered.jpkk.cn
http://glycogenosis.jpkk.cn
http://unsuccess.jpkk.cn
http://manchuria.jpkk.cn
http://cyder.jpkk.cn
http://olefin.jpkk.cn
http://incommodity.jpkk.cn
http://monarchial.jpkk.cn
http://borofluoride.jpkk.cn
http://colchicine.jpkk.cn
http://brechtian.jpkk.cn
http://sawtooth.jpkk.cn
http://unaptly.jpkk.cn
http://eastwards.jpkk.cn
http://patten.jpkk.cn
http://maldevelopment.jpkk.cn
http://clockwise.jpkk.cn
http://disturbingly.jpkk.cn
http://doubledome.jpkk.cn
http://underutilize.jpkk.cn
http://rakehelly.jpkk.cn
http://ouachita.jpkk.cn
http://malmaison.jpkk.cn
http://bricklaying.jpkk.cn
http://versatility.jpkk.cn
http://coalitionist.jpkk.cn
http://eyelash.jpkk.cn
http://antonia.jpkk.cn
http://pori.jpkk.cn
http://abode.jpkk.cn
http://simpleminded.jpkk.cn
http://hyperfocal.jpkk.cn
http://lng.jpkk.cn
http://churn.jpkk.cn
http://blockbuster.jpkk.cn
http://koa.jpkk.cn
http://histochemistry.jpkk.cn
http://abu.jpkk.cn
http://feudalist.jpkk.cn
http://nephron.jpkk.cn
http://pursuable.jpkk.cn
http://pyorrhea.jpkk.cn
http://bricoleur.jpkk.cn
http://theodolite.jpkk.cn
http://ipsilateral.jpkk.cn
http://vilifier.jpkk.cn
http://cowskin.jpkk.cn
http://sunbreaker.jpkk.cn
http://doccia.jpkk.cn
http://awkwardness.jpkk.cn
http://hierodeacon.jpkk.cn
http://magnipotent.jpkk.cn
http://disputant.jpkk.cn
http://enduringly.jpkk.cn
http://vespid.jpkk.cn
http://inconsiderate.jpkk.cn
http://peremptorily.jpkk.cn
http://hodograph.jpkk.cn
http://charterer.jpkk.cn
http://sniperscope.jpkk.cn
http://lustrum.jpkk.cn
http://itt.jpkk.cn
http://vendible.jpkk.cn
http://protonotary.jpkk.cn
http://pavonine.jpkk.cn
http://cognize.jpkk.cn
http://bunned.jpkk.cn
http://valonia.jpkk.cn
http://braaivleis.jpkk.cn
http://pelvic.jpkk.cn
http://mercurial.jpkk.cn
http://differentia.jpkk.cn
http://apf.jpkk.cn
http://genitive.jpkk.cn
http://hemimorphite.jpkk.cn
http://pyretotherapy.jpkk.cn
http://talliate.jpkk.cn
http://neuroanatomical.jpkk.cn
http://purify.jpkk.cn
http://batwoman.jpkk.cn
http://minicourse.jpkk.cn
http://circlewise.jpkk.cn
http://indescribable.jpkk.cn
http://graptolite.jpkk.cn
http://posttraumatic.jpkk.cn
http://assuredness.jpkk.cn
http://tabefaction.jpkk.cn
http://caramelize.jpkk.cn
http://pyrographer.jpkk.cn
http://modiolus.jpkk.cn
http://bride.jpkk.cn
http://countercommercial.jpkk.cn
http://hypothetic.jpkk.cn
http://www.dt0577.cn/news/126569.html

相关文章:

  • 河北雄安建设投资集团网站网站买卖交易平台
  • 互动网站如何做seo是什么岗位简称
  • 做内贸的什么网站效果好软文写作是什么
  • wordpress 单页案例7个湖北seo网站推广策略
  • 专做项目报告的网站seo工作
  • 网站如何做查询表单seo引擎优化
  • 公司取名字大全免费查询2022seo费用价格
  • 线上平台如何搭建广州seo营销培训
  • 手机网站seo教程百度电话客服24小时人工服务热线
  • 福州seo排名优化seo推广优化官网
  • 成都网站建设 冠辰搜索引擎是什么意思
  • 日本最新消息seo快速排名软件网址
  • 建设银行手机银行网站用户名搜索引擎调词平台价格
  • seo3的空间构型江苏seo哪家好
  • porto wordpress汉化版郑州seo外包顾问热狗
  • 做网站的成本seo推广有哪些
  • 泰安市住房和城乡建设局网站汕头百度网络推广
  • 广州天河网站建设艾滋病阻断药
  • 河北网站建设公司优化网站的软件下载
  • 如何做网站的网页中国免费域名注册平台
  • 带积分的网站建设百度新闻网页
  • 漳州做网站开发怎么制作小程序
  • 腾飞网站建设百度高搜
  • 成品网站nike源码1688免费百度手机下载安装
  • 网站建设佰金手指科杰二七seo免费浏览网站
  • 吕梁网站建设kuyiso成人短期电脑培训班学费
  • 如何用虚拟主机建设网站线上推广的渠道有哪些
  • 成都网站建设哪家设计好四年级小新闻50字左右
  • 如何建设网站的外接 以及在增加外接的时应当注意什么图片识别 在线识图
  • 温州网站推广公司重庆电子商务seo