微信小程序技术总结小程序单向数据流单向数据流就是从逻辑层到视图层,vue也是单向数据流Modelview,但是实

客户不知道小程序如何注册的情况下,需要大概告知操作界面在哪。

进入公众号找的小程序管理,选择快速注册小程序即可进行注册。

根据提示进行账号注册。

添加完成之后即可开发小程序了。

pages用来存放所有小程序页面。

utils用来存放工具性质的模块。

api统一管理api接口。

其余的文件根据项目需要进行划分,如components文件就是存放公共组件模块。

app.json是小程序的全局配置,包括了小程序的所有页面路径,窗口外观,底部tab等。当中的style字段这是样式版本,加上style和删除style,这样会使用小程序组件样式是不一样。

project.config.json是项目配置文件,记录小程序开发工具所做的个性化配置,如项目名称,小程序账号ID等

页面中的json小程序每个页面中的json,配置本页面的窗口外观,会覆盖app.json的window中相同配置项。

1.加载解析页面的json文件配置。

2.加载页面wxml和wxss样式。

3.执行页面js文件,调用Page()创建页面实例。

4.页面渲染完成。

单向数据流就是从逻辑层到视图层,vue也是单向数据流Model-view,但是实现了双向数据绑定。而小程序没有做劫持代理,所以不能进行双向数据绑定。但现在小程序是有双向数据绑定这个概念的,叫简易的双向数据绑定。

需求:logo需要同右边的胶囊按钮顶部对齐。

解决方法:使用wx.getMenuButtonBoundingClientRect()

输出下wx.getMenuButtonBoundingClientRect(),可以看见胶囊按钮的信息,需要注意的是单位为px。

wx.getMenuButtonBoundingClientRect().top就能获取到胶囊按钮距离信息栏的距离,然后将px转为rpx。

解决办法:wx.createSelectorQuery()

注意两点:

1.要在ready函数中执行

2.在组件中使用wx.createSelectorQuery()之后,要用in()来指定范围。(将选择器的选取范围更改为自定义组件component内)或者在自定义组件或包含自定义组件的页面中,应使用this.createSelectorQuery()来代替

直接在this.setData中直接修改,编译器会显示波浪线报错。

data:{list:{deleted:false,name:"设计模块"}}//对象.属性名:修改的值this.setData({'list.deleted':true})修改数组data:{list:[{id:1,deleted:false},{id:2,deleted:false},{id:3,deleted:false}]}this.setData({'list[0].deleted':true})或者加入变量使用,用字符串拼接起来。

data:[{"id":0,"name":'zs'},{"id":1,"name":'ddds'}]letnewData="data["+0+"].name"this.setData({[newData]:"张三"})console.log(this.data.data)注:修改对象和数组都要用''包括起来

但下标总不能写死了,所以循环下就行了,主要就是赋值给新的变量,在新变量中进行修改数据,再进行this.setData。

第一步:进入eCharts官网点击下载选择下载,进入在线制定。按需要下载,减少体积

第二步:点击在线制定

第三步:选择需要的图形

第四步:下载

用ec-canvas文件就行

第七步:将ec-canvas文件放入项目中

我这里是在组件中创建了echarts文件夹,就把ec-canvas文件中的文件全部放进去。注意如果是按需制定的echarts,将echarts.js替换成在线制定生成的echarts.min.js。

同时修改ec-canvas.js中的import*asechartsfrom'./echarts'的引用文件。

第八步使用

配置组件使用

"usingComponents":{"ec-canvas":"../echarts/ec-canvas"}视图层

//引入eChartsimport*aseChartsfrom'../../components/echarts/echarts'data:{ec:{onInit:initChart},}functioninitChart(canvas,width,height){//绘制宽高letchart=echarts.init(canvas,null,{width:width,height:height});canvas.setChart(chart);//容器初始化echarts.registerMap('china',geoJson);//地图数据注册letoption={}chart.setOption(option);//返回初始化结果returnchart;}另外一种封装成组件

逻辑层

/***组件的初始数据*/data:{ec:{onInit:null},},//在组件实例进入页面节点树时执行attached:function(){this.setData({ec:{onInit:this.initChart}})},/***组件的方法列表*/methods:{//eCharts可视化地图initChart:function(e,width,height){//绘制宽高地图模糊时候使用devicePixelRatio调整清晰度constchart=eCharts.init(e,null,{width:width,height:height,devicePixelRatio:2.5});//容器初始化e.setChart(chart);//地图数据注册eCharts.registerMap('china',geoJson);//初始化数据letoption={}chart.setOption(option);//返回初始化结果returnchart;},大致效果:

wx.navigateTo打开页面最多只能打开10个,超过10个之后就没反应。

//导航列表跳转对应页面handleNavigate:function(e){//获取全局变量constapp=getApp()//获取全局变量中adCenterPitchOn的值letadCenterPitchOn=app.globalData.adCenterPitchOn//判断如果当前选中的id与全局变量中adCenterPitchOn不相等进行跳转,相等就不进入跳转程序,减少重复跳转。if(e.currentTarget.dataset.id!=adCenterPitchOn){this.setData({pitchOn:e.currentTarget.dataset.id})//navigateTo跳转不能打开10个页面,需要进行判断超过10个页面就关闭所有页面,重新进行页面栈个数统计letpages=getCurrentPages()//获取当前打开的页面letpagesLength=pages.length//获取当前打开页面的数量//打开页面数量大于等于10使用reLaunch关闭所有页面,重新进行页面栈个数统计。if(pagesLength>=10){wx.reLaunch({url:e.currentTarget.dataset.path,})}else{//小于10就使用navigateTowx.navigateTo({url:e.currentTarget.dataset.path,})}}}这里不直接使用reLaunch是因为会重新渲染,跳转一次屏幕就会有闪动。所以进行粗糙的处理到了10个页面,使用reLaunch,十次之后才会闪动一次。

第一步:开启tabBar自定义

在app.json中找的tabBar加入custom:true

同时官方文档建议还是将list内容写上,用来兼容低版本。

第二步:创建目录

创建custom-tab-bar与pages同级。

第三步:custom-tab-bar中wxml编写

创建一个工具类,用来处理custom-tab-bar切换

点击时触发,进行跳转

getTabBarIndex:function(e){//获取当前点击的下标及位置consttabBarData=e.currentTarget.datasetconstpresentPath=tabBarData.pagepath//跳转到对应页面,并关闭其他所有非tabBar页面wx.switchTab({url:presentPath,})}第五步:调用及高亮不变处理

在tab页引入consttabService=require("../../utils/tab-service");

ios和android显示的效果会有差异,这就需要通过识别机型进行适配。

在app.js中使用wx.getSystemInfoSync().platform获取手机型号

onLaunch(){//获取机型constres=wx.getSystemInfoSync().platform//将机型放进缓存if(res=='ios'){wx.setStorageSync('facility',"ios")}else{wx.setStorageSync('facility',"android")}},真机测试才行,模拟测试值是devtools

//导入服务器配置信息importconfigfrom'../config/config'exportdefault(url,data,method='GET')=>{//初始化Promise实例returnnewPromise((resolve,reject)=>{wx.request({url:config.host+url,data,method,success:(res)=>{//成功之后修改Promise状态resolve(res)},fail:(err)=>{//失败之后修改Promise状态reject(err)}})})}使用方法:

importreqfrom'../../utils/request'//引入封装的地址onLoad:asyncfunction(){//获取数据letpageImgData=awaitreq('/cas/query')},关于传值的方法全局变量使用在app.js中使用globalData定义全局变量。

//定义全局变量globalData:{userInfo:null,tabBarIndex:0,}app.globalData.变量名获取定义的变量值

//获取全局变量constapp=getApp()console.log(app.globalData.tabBarIndex)//直接修改变量,不需要setDataapp.globalData.tabBarInde=1父组件传值给子组件父组件使用子组件,传入父组件定义的值:tableHeaderData和tableList

/***组件的属性列表*/properties:{//列表表头数据tableHeader:{type:Array,value:[],},//列表数据tableList:{type:Array,value:[]},},父组件没有传值,子组件也不会报错。所以父组件可以按需传入相应得值。

//将值传给父组件this.triggerEvent("getLogHeight",62)父组件接收子组件传入的值

//设置缓存,传入数据wx.setStorageSync('facility',2)//获取缓存下的值wx.getStorageSync('facility')页面跳转传值wx.navigateTo({url:'xxxdata='+this.data.job,})接收参数:

解决方案:引入wxs模块实现

根据开发场景使用,这里就单独创建一个wxs,放入工具文件夹中。

wxs中写入方法

functionftoFixed(num){returnnum.toFixed(2);}module.exports.ftoFixed=ftoFixed;wxml中使用wxs

保留小数点稍微完善版:

接收后端传入的数据,将字符串显示成html格式内容。

可是使用rich-text

解决办法:使用wxPars

将下载好的文件放入小程序中,放的位置看你心情。

在需要的功能模块下引入js文件。

js中进行数据绑定

/*1.bindName绑定的数据名(必填)*2.type可以为html或者md(必填)*3.data为传入的具体数据(必填)*4.target为Page对象,一般为this(必填)*5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选)*/WxParse.wxParse(bindName,type,data,target,imagePadding)letthat=thiswx.request({url:'',header:{'Content-Type':'application/json',},success:res=>{letarticle=res.data.objWxParse.wxParse('article','html',article,that,0);}})引入WxParse.css,可以在app.wxss引入,建议在需要模块的wxss样式文件中单独引用,不要全局使用,减少样式冲突。

在wxml文件中引入模板

使用模板,.nodes不要去掉。

如果head标签里有样式,这里会直接显示样式代码。

按照以往风格,简单粗暴的解决:在wxss文本中加入下面代码

.card_service_ul>.WxEmojiView.wxParse-inline{display:none;}.wxParse-head{display:none;}模拟器数据正常显示,真机测试获取不到数据这个问题有可能是后端同学限制了接口访问IP,造成真机测试时接口调用失败。

获取md5js源文件,源文件百度可以找到,因为审核不通过这里就不放了。

将md5源文件放入工具文件夹中

constmd5=require('../../utils/md5')可以直接使用md5加密,也可以拼接之后再加密,这里看后端是怎么要求的。

后端会给一些字段,直接存入数组中

data:{//里面存放后端需要的字段mdValue:[x,x,x,x,x,x,x,x,x,x,x,x,x]},进行拼接,将密码和数组中的字段拼接一起。注意这里的拼接方式后端规定,前端按照格式进行拼接即可。

letuserPwdStr=this.data.mdValue[4]+this.data.mdValue[5]+this.data.userPwd+this.data.mdValue[3]+this.data.mdValue[6]最后使用md5加密

md5(userPwdStr)base-64加密js放入工具文件夹中,源文件百度可以找到,因为审核不通过这里就不放了。

引入js

constbase64=require('../../utils/base64')直接使用

base64.base64_encode('xxxxx')如果后端有加密要求根据后端的规则进行加密。

底部图标大小不要超过30kb,如果超过小程序就会报错,15kb其实差不多就可以了。

当复用小程序整体代码,只是替换图片时,另起一个项目注意替换原来的appid。

在需要的页面中的json文件中简单配置下即可,app.json设置无效。

sharePhone字段自己定义就行。

代码中也需要进行配置:

在需要播放的页面中找到json文件,配置下视频插件。

"usingComponents":{"txv-video":"plugin://tencentVideo/video"}在wxml文件中加入代码:

关于视频需要申请一个企业账号,进行主体认证等操作。然后上传视频到腾讯视频,审核通过就行。

获取视频链接,右键视频点击视频信息

嵌入代码打开里面的vid就是o33401kc9b1跟上面的一样。

小程序有自带的人工客服,组件button加上open-type=“contact”属性,客服人员在小程序后台添加就行。

wx:for="{{book}}"默认是item

进行修改方法:wx:for-item="dataLiet"就可以使用dataLiet。

下标index也是wx:for自带的,可以进行修改wx:for-index="idx"就可使用idx

注意使用wx:for记得加上wx:key="index"可以换成后端传入的id。

1.使用外部链接进行引用(动态加载网络字体)

代码放在app.js中或者需要使用到的模块js中

font-family:"PingFang"!important;需要注意一点就是ios系统可以正常获取到字体,但是在安卓手机中会失败。这就需要进行配置,进入服务器找nginx配置,站点配置文件加入以下代码,开启cros支持,然后重启下nginx。

这里造成安卓手机失败的原因是字体链接访问需满足浏览器同源策略,字体文件资源设置CORS的Access-Control-Allow-Origin为小程序域名:servicewechat.com或者*

该行代码的含义为在HTTP响应中添加一个名为"Access-Control-Allow-Origin"的头部字段,这个头部字段的作用是指定允许访问资源的源,即哪些域名可以与服务器进行跨域请求;

如果是使用的宝塔的配置如下

location~.(eot|otf|ttf|woff|woff2|svg)${add_headerAccess-Control-Allow-Origin*;add_headerContent-Typefont/ttf|font/woff|font/woff2;}根据配置文件来设置。

解决安卓特殊字体失败问题还有一种方法就是字体文件转base64。

1.点击按钮Addfonts(添加字体)

2.将Base64encode按钮打开,下面的Formats按钮按需要选择。

3.转换好后点击Download下载

下载成功之后的压缩包。

解压后:

我大概看了一下大小比原来字体的还要大一些,所以个人觉得没必要安卓和IOS两套写法,直接在服务器配置文件就好了。

解决方法:删除掉app.json里面的

"lazyCodeLoading":"requiredComponents",

或者降低基础库的版本。

代码层级没有问题,却无法获取到手机信息

合法已经域名配置了,但小程序报错ERR_SSL_PROTOCOL_ERROR,直接找后端解决,代理啥的配置绝对有问题。

THE END
1.数据透视图:轻松生成图表,快速分析数据,教育,职业教育,好看视频首页 热门视频 放映厅 百度直播 观看历史 我的收藏 关注动态 暂无关注 频道分类 影视 音乐 VLOG 游戏 搞笑 综艺 娱乐 动漫 生活 广场舞 美食 宠物 三农数据透视图:轻松生成图表,快速分析数据 派大唾沫星子 245粉丝 · 1043个视频 关注 接下来播放自动播放 04:48 台上人家:女老板独自在家洗澡,不料恶霸突然https://haokan.baidu.com/v?pd=wisenatural&vid=2754200714532410795
2.第48集数据流图教育高清视频在线观看分享电脑知识,带你学习计算机实用技巧。-芒果TV-大家都在看的在线视频网站-热门综艺最新电影电视剧在线观看https://www.mgtv.com/b/544961/18778378.html
3.软件设计师(注:下图来自前言中up主视频) (说明:数据流图中常见的3种错误) 六、案例分析 1、案例1 正确答案:1)E1:前端应用,E2:数据管理员,E3:后端数据库2)D1:用户表, D2:操作表, D3:权限表3)权限验证需要用到D2、D3的信息 4)绘制加工的时候可能出现的错误:有输入没输出(黑洞),有输出没输入(奇迹),命名错误(https://blog.51cto.com/u_15720469/7882058
4.视频剪辑的开题报告对用户、视频信息进行增加、删除以及修改等操作。该系统包括四大模块:会员管理、视频 信息显示播放、视频信息搜索、管理员模块。 2.2 数据流图 本系统根据使用该网站的用户角色的不同分为下面两种用户。 管理员:采用自行设置方式进入网站,负责管理网站上用户信息和视频信息的管理,以 https://www.yjbys.com/bylw/kaitibaogao/97563.html
5.2013下半年软件设计师下午真题(一)软件设计师现采用结构化方法对课程注册系统进行分析和设计,获得如图1-1所示的0层数据流图和图1-2所示的1层数据流图。 图1-1 0层数据流图 图1-2 1层数据流图 【问题1】(2分) 使用说明中的词语,给出图1-1中的实体E1和E2的名称。 【问题2】(2分) 使用说明中的词语,给出图1-2中的数据存储D1和D2的名称。 https://m.educity.cn/rk/1790353.html
6.10个适合新手小白的练习数据集#适合新手#新手小白#练习#数据集当前缓冲中 下载客户端缓存视频不卡顿 收藏 分享 手机看 侵权/举报10个适合新手小白的练习数据集 #适合新手 #新手小白 #练习 #数据集 2024年12月17日发布 文冉 1人关注 关注 01:27 10个适合新手小白的练习数据集 #适合新手 #新手小白 #练习 #数据集 文冉https://v.qq.com/x/page/p3573yw8bq0.html
7.计算机二级MSoffice高频选择题总结30.结构化方法软件需求工具——数据流图,数据字典,判定树,判定表 (不包括系统结构图) 31.冯诺依曼引进两个重要概念——二进制,存储程序 32.对象的主要特征——抽象,继承,封装,多态 33. 在一个非零无符号二进制整数之后添加一个0,此数为原数的→2倍 https://www.jianshu.com/p/343805eca6c5
8.环境技术数字光线图标数据流旋转冲屏动画mov格式模板视频素材下载适用软件: Quicktime Player文章教程视频教程 时长/帧率:00:15 / 25.00fps 编号: SP-5147085 体积:264.4 MB 发布日期: 2023-05-06 15:24:14 版权归属:? 韩众科技 版权说明:? 潮点已获取著作权授权 请放心购买使用 作品相关推荐 环境技术数字光线图标数据流旋转冲屏动画- 00:154K 超清 https://m.shipin520.com/sp-5147085.html
9.视频数据流算子边缘智能在一个视频数据流中,自带对象分析能力的输入算子(包括摄像头设备带分析、RTSP拉流带分析、RTMP拉流带分析)与无对象分析能力的输入算子(包括摄像头设备、RTSP拉流、RTMP拉流)以及对象分析处理算子不允许同时存在。 如果在一个视频数据流中有多个自带对象分析能力的输入算子(包括摄像头设备带分析、RTSP拉流带分析、RTMPhttps://www.volcengine.com/docs/6893/165060
10.使用英特尔?数据流加速器(DSA)优化实时视频传输将有效负载从 RTP(实时传输协议)数据包复制到视频帧缓冲区会消耗大量处理器资源。如表 2 和图 3 所示,在每张网卡一个内核的配置下,使用英特尔? DSA 卸载这些复制操作可以支持传输更多的 1080p 60fps(即分辨率为 1080p,帧率为 60 fps)视频流1。 https://www.intel.cn/content/www/cn/zh/customer-spotlight/cases/optimized-real-time-video-transport.html
11.Linux之V4L2基础编程Linuxv4l2_format 结构体用来设置摄像头的视频制式、帧格式等,在设置这个参数时应先填 好 v4l2_format 的各个域,如 type(传输流类型),fmt.pix.width(宽), fmt.pix.heigth(高),fmt.pix.field(采样区域,如隔行采样),fmt.pix.pixelformat(采 样类型,如 YUV4:2:2),然后通过 VIDIO_S_FMT 操作命令设置视频捕捉格https://download.csdn.net/blog/column/7106937/50751867
12.视频里面数据怎么提取另一种从视频中提取数据的方法是通过视频数据流进行分析。视频数据流是由视频的连续图像帧组成的序列。通过分析这些图像帧,可以提取出有用的数据。 为了通过视频数据流提取数据,您可以使用一些视频处理软件,如FFmpeg和OpenCV等。这些软件提供了处理视频数据流的功能,包括视频解码、帧提取和帧差分析等。您可以使用这些功能https://tool.a5.cn/article/show/27796.html
13.第二类医疗器械独立软件技术审评规范此处提供数据流图 表6数据流向说明 1.2.2数据类型 表7数据类型说明 注:敏感数据有个人信息的医疗数据指能够单独或与其他信息结合识别特定自然人个人身份的各种信息,如自然人的姓名、出生日期、身份证件号码、个人生物识别信息(含容貌信息)、住址、电话号码等;设备数据指描述医疗器械运行状况的数据,用于监视、控制医疗器https://www.ncebj.cn/news-12/989.html
14.视频监控系统的视频压缩和数据流→MAIGOO知识在典型的数字监视系统中,从传感器捕获视频、压缩视频、然后数据流到视频服务器。不希望中断在DSP架构上实现的视频编码器任务,这是由于每个前后关系开关转换包含大量寄存器存储和超高速缓冲存储器开关。因此,异机种架构是理想的,这样视频捕获和数据流任务可以脱载DSP。下面说明用在视频监控应用中的DSP/GPP处理器实例。 https://m.maigoo.com/goomai/108889.html
15.Html5video标签src用数据流方式播放视频html5网页制作当视频播放过大,边看边加载时可以用数据流方式播放视频 可以使用 Blob 和 URL.createObjectURL() 方法来实现使用数据流播放视频。具体实现步骤如下: 一、获取视频数据流 从服务器获取视频数据流,可以使用 XMLHttpRequest 或 fetch 方法请求数据流并以 Blob 对象形式返回。 https://www.jb51.net/html5/903850.html
16.基于OpenCV的视频图像处理应用研究AET(2)对视频流数据进行处理,并把处理完成的图像数据显示在QT/Qtopia图形界面下。这部分设计是摄像头应用程序的核心,除了调用QT/Embedded库函数,还要调用OpenCV库函数。 摄像头应用程序结构图与库函数的调用关系如图2所示。 2.2 摄像头应用程序的关键技术 本设计应用程序以OpenCV库和QT库为核心,负责处理视频数据与图像显示http://www.chinaaet.com/article/97491
17.系统分析师案例必备知识点汇总2023系列文章一二、系统分析 (视频内容:系统分析师--案例分析模块中系统分析视频,此部分为新增视频) 1、fast 开发方法 添加描述 编辑 2、系统约束条件 系统的改进目标可能受到约束条件的调节。约束条件可以分为:进度、成本、技术、政策。 3、结构化分析 通过功能分解方式把系统功能分解到各个模块中,分析结果以数据流图 (DFD) 和https://cloud.tencent.com/developer/article/2227710
18.[AE视频科技]图片免费下载AE视频科技素材AE视频科技模板科技动态背景视频 地产行业短视频压条AE模板 科技风图文展示AE模板 企业活动邀请商务科技风横版视频 医疗科技研发背景视频 医疗科技视频背景 科技风动态背景AE模板 党政红色学雷锋图文片头AE视频模板 大气红色标题片头图文模板AE视频模板 行业科技合成背景视频 商务企业数据流科技工厂实拍合成视频模板 行业科技合成背景视频 医https://m.58pic.com/tupian/AEshipinkeji.html
19.2020届计算机科学方向毕业设计(论文)阶段性汇报于收集数据方面,在APEX实验室的帮助下,获得了7千余例HDU和POJ上的源代码及其对应的标签,大大加快了课题的进展。于设计算法方面,基于目前现有的研究都依靠语法树、控制流图和数据流图进行分析的现状,初步设计了从源代码直接入手进行分类的软件。目前的F1分数约在70左右,正在试验各种修改以及优化。https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709