微信小程序-2

微信小程序 + Antv F2 微信小程序 + Antv F2一、项目搭建二、相关问题三、总结 一、项目搭建 1、 创建微信小程序项目(下载微信小程序IDE,详细创建微信小程序流程见: 小程序文档:) 2、在项目根目录下,初始化创建package.json文件,打开cdm 执行: npm init 3、安装npm install --production; 4、安装微信小程序 F2 图表组件: npm i ... 阅读详情

数据绑定

  • index.js
Page({
  data: {
    info: 'hello world',
    randomNumber: Math.random() * 10,
    imgSrc:'http://www.itheima.com/images/logo.png'
  }
})
  • index.wxml
<view>{{ info }}</view>

<view>{{ randomNumber >= 5 ? '随机数大于等于5' : '随机数小于5' }}</view>

<image src="{{ imgSrc }}" mode="widthFix"/>

事件绑定

常用的事件

类型绑定方式事件描述
tapbindtap 或 bind:tap手指触摸后马上离开,类似于 HTML 中的 click 事件
inputbindinput 或 bind:input文本框的输入事件
changebindchange 或 bind:change状态改变时触发

事件对象的属性

event.target 可简写为 e.target

属性类型说明
typeString事件类型
timeStampInteger页面打开到触发事件所经过的毫秒数
targetObject触发事件的组件的一些属性值集合
currentTargetObject当前组件的一些属性值集合
detailObject额外的信息
touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouchesArray触摸事件,当前变化的触摸点信息的数组

bindtap

在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为

无参:

  • index.wxml
<button type="primary" bindtap="btnTapHandler">按钮</button>
  • index.js
Page({
  // 定义按钮的事件处理函数
  btnTapHandler(e) {  // 按钮的 tap 事件处理函数
    console.log(e);   // 事件参数对象 e
  }
})

含参:

  • index.wxml
<view>{{ count }}</view>
<button type="primary" bindtap="CountChange" data-info="{{ addNum }}">+10</button>
  • index.js
Page({

  // 点击按钮后事件处理函数
  CountChange(e) {     // 事件参数对象 e
    this.setData({
      count: this.data.count + e.target.dataset.myinfo
    });
  },

  // 页面的初始数据
  data: {
    count: 0,
    addNum: 10
  }
})

bindinput

在小程序中,通过 input 事件来响应文本框的输入事件,语法格式如下:

  • index.wxml
<input type="text" value="{{ content }}" bindinput="inputHandler" />
<view>您输入的内容是:{{ content }}</view>
  • index.js
Page({
  data:{
    content: ''
  },

  inputHandler(e) {
    // e.detail.value 是变化过后,文本框最新的值
    this.setData({
      content: e.detail.value
    }) 
  }
})

条件渲染

普通渲染

  • index.js
Page({
  data:{
    type: 1
  }
})
  • index.wxml
<view wx:if="{{ type === 1 }}">男</view>
<view wx:elif="{{ type === 0 }}">女</view>
<view wx:else> 未填写 </view>

批量渲染

如果要一次性控制多个组件的展示与隐藏,可以使用一个标签将多个组件包装起来,并在标签上使用 wx:if 控制属性,如下所示:(注意:并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染)

  • 写如下代码:
<block wx:if="{{ true }}">
  <view>one</view>
  <view>two</view>
</block>
  • 最终展示的结果是:
  <view>one</view>
  <view>two</view>

hidden

  • index.js
Page({
  data:{
    flag: true
  }
})
  • index.wxml
<view hidden="{{ flag }}">条件为true的时候,隐藏元素,否则显示</view>

循环渲染

默认情况:

  • index.js
Page({
  data:{
    arr: ['华为', '小米', '苹果', 'OPPO']
  }
})
  • index.wxml
<view wx:for="{{ arr }}">
  索引:{{ index }},每一项:{{ item }}
</view>

手动指定索引和当前项的变量名:

<view wx:for="{{ arr }}" wx:for-index="idx" wx:for-item="itemName">
  索引:{{ idx }},每一项:{{ itemName }}
</view>

类似于 Vue 列表渲染中的 :key,小程序在实现列表渲染时,也建议为渲染出来的列表项指定唯一的 key 值,从而提高渲染的效率:

  • index.js
Page({
  data:{
    userList: [
      {id: 1 ,name: '小明'},
      {id: 2 ,name: '小化'},
      {id: 3 ,name: '小工'}
      ]
  },
})
  • index.wxml
<view wx:for="{{ userList }}" wx:key="id">
  {{ item.name }}
</view>

WXSS

屏幕适配

rpx 的实现原理非常简单:鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx 把所有设备的屏幕,在宽度上等分为 750 份

小程序在不同设备上运行的时候,会自动把 rpx 的样式单位换算成对应的像素单位来渲染,从而实现屏幕适配

样式导入

@import “/xxx.wxss”

window 配置

小程序窗口的组成部分

在这里插入图片描述

window 节点配置项

在这里插入图片描述

  • 设置导航栏的标题:
app.json -> window -> navigationBarTitleText
  • 设置导航栏的背景色
app.json -> window -> navigationBarBackgroundColor

注意:颜色值只能接受6位16进制数,例如:#5a6b7c
  • 设置导航栏的标题颜色
app.json -> window -> navigationBarTextStyle

下拉刷新

app.json -> window -> enablePullDownRefresh

注意:在 app.json 中启用下拉刷新功能,会作用于每个小程序页面

下拉刷新时的窗口背景色

app.json -> window -> backgroundColor

注意:指定16进制的颜色值 #efefef

下拉刷新时的loading样式

app.json -> window -> backgroundTestStyle

设置上拉触底的距离

概念:上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为

注意:默认距离为 50 px,如果没有特殊需求,建议使用默认值即可

app.json -> window -> onReachBottomDistance

tabBar 配置

基本介绍

tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换。

小程序中通常将其分为:

  • 底部 tabBar
  • 顶部 tabBar

注意:tabBar 中只能配置最少2个、最多 5 个 tab 页签,当渲染顶部 tabBar 时,不显示 icon,只显示文本

组成部分

在这里插入图片描述

在这里插入图片描述

tabBar 节点的配置项

在这里插入图片描述

  • app.json
{
  "pages": [
    "pages/index/index",
    "pages/me/me"
  ],
  
  "window": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "WeChat",
    "navigationBarBackgroundColor": "#ffffff"
  },
  
  "tabBar": {
  	"list": [
  		{...},
        {...},
    ],
    "position": "top"
  }
  
  "style": "v2",
  "componentFramework": "glass-easel",
  "sitemapLocation": "sitemap.json",
  "lazyCodeLoading": "requiredComponents"
}

list 中 tab 项

在这里插入图片描述

  • app.json
{
  "pages": [
    "pages/index/index",
    "pages/me/me"
  ],
  
  "window": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "WeChat",
    "navigationBarBackgroundColor": "#ffffff"
  },
  
  "tabBar": {
  	"list": [
  		{
  			"pagePath": "pages/index/index",
  			"text": "首页"
  		},
        {
  			"pagePath": "pages/me/me",
  			"text": "我的"
  		}
    ],
    "position": "top"
  }
  
  "style": "v2",
  "componentFramework": "glass-easel",
  "sitemapLocation": "sitemap.json",
  "lazyCodeLoading": "requiredComponents"
}

页面配置

在这里插入图片描述

  • index.json
{
  "usingComponents": {},
  "navigationBarBackgroundColor": "#00b261",
  "backgroundTextStyle": "light"
  ...
}

网络数据请求

请求限制

出于安全性方面的考虑,小程序官方对数据接口的请求做出了如下两个限制:

  • 只能请求 HTTPS 类型的接口
  • 必须将接口的域名添加到信任列表中

在这里插入图片描述

配置请求合法域名

配置步骤:登录微信小程序管理后台 => 开发 => 开发设置 => 服务器域名 => 修改 request 合法域名

注意事项:

  • 域名只支持 https 协议
  • 域名不能使用 IP 地址 或 localhost
  • 域名必须经过 ICP 备案
  • 服务器域名一个月内最多可申请 5 次修改

跳过限制

跳过 request 合法域名校验,如果后端程序员仅仅提供了 http 协议的接口,暂时没有提供 https 协议的接口,此时为了不耽误开发的进度,我们可以在微信开发者工具中(详情 => 本地设置),临时开启 开发环境不校验请求域名、TLS版本及HTTPS证书 选项,从而跳过 request 合法域名的校验。

注意:跳过 request 合法域名校验的选项,仅限在开发与调试阶段使用!

发起数据请求

调用微信小程序提供的 wx.request() 方法,可以发起数据请求,如下所示:

  • index.wxml
<button bindtap="getInfo">发起GET请求</button>
<button bindtap="postInfo">发起POST请求</button>
  • index.js
Page({
  // 发起GET数据请求
  getInfo() {
    wx.request({
      url: 'https://www.escook.cn/api/get',   // 请求的接口地址,必须基于 https 协议
      method: 'GET',      // 请求的方式
      data:{              // 发送到服务器的数据
        name: 'zs',
        age: 20
      },
      success: (res) => {   // 请求成功之后的回调函数
        console.log(res.data)
      }
    })
  },
  // 发起POST请求
  postInfo() {
    wx.request({
      url: 'https://www.escook.cn/api/post',
      method: "POST",
      data: {
        name: 'ls',
        age: 33
      },
      success: (res) => {
        console.log(res.data);
      }
    })
  },
})

页面刚加载时请求数据

我们需要在页面刚加载的时候,自动请求一些初始化的数据,此时需要在页面的 onLoad 事件中调用获取数据的函数

Page({

  // 发起GET数据请求
  getInfo() {
    wx.request({
      url: 'https://www.escook.cn/api/get',   // 请求的接口地址,必须基于 https 协议
      method: 'GET',      // 请求的方式
      data:{              // 发送到服务器的数据
        name: 'zs',
        age: 20
      },
      success: (res) => {   // 请求成功之后的回调函数
        console.log(res.data)
      }
    })
  },
  
  // 发起POST请求
  postInfo() {
    wx.request({
      url: 'https://www.escook.cn/api/post',
      method: "POST",
      data: {
        name: 'ls',
        age: 33
      },
      success: (res) => {
        console.log(res.data);
      }
    })
  },
  
  // 声明周期函数——监听页面加载
  onload: function (options) {
    this.getInfo()
    this.postInfo()
  },
})
微信小程序-绑定事件以及bindtap和catchtap的区别 前言 在微信小程序的开发过程中我们肯定会遇到时间绑定的问题,这时候我们一般都是采用bandtap或者是catchtap进行事件绑定的。那么他们两个的区别在哪里呢? 一、首先我们要先知道什么是事件 微信官方给出的事件的解释是: 事件是视图层到逻辑层的通讯方式。 事件可以将用户的行为反馈到逻辑层进行处理。 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。 事件对象可以携... 阅读详情

相关推荐

微信小程序事件绑定案例:bind和catch区别、事件对象及自定义dataset数据

本文围绕微信小程序展开,介绍了 button 组件及其 bindtap 属性;阐述了事件绑定中 bind 和 catch 的相关内容;讲解了事件对象;还介绍了自定义 dataset 数据,并通过案例分析帮助理解,整体呈现了微信小程序部分组件、属性及数据相关的知识要点。

前端基地 1207

小程序——事件绑定,冒泡和非冒泡

可以用bind绑定冒泡事件,也可以用bind:tap=" ",和bindtap是一样的效果;也可以用catch绑定事件 bindtap形式 <button bindtap="addSwitch">点击添加按钮</button> bind:tap形式 <button bind:tap="addSwitch">点击添加按钮</button> catc...

baijian10的博客 2187

微信小程序F2饼形图的引入和赋值

js import F2 from "../../../../components/f2-canvas/lib/f2" let pie = null; function setOption(pie,a,b,c,d,e) { // F2实现回调的方法,方法名用来最后赋值绑定 var map = { '待检查': (b/a)*100+'%', '处理中':(c/a)*100+'%', '流转中':(d/a)*100+'%', '已结束': (e/a)*100+'%', }

qq_43773083的博客 1577

微信小程序-模板与配置

模板与配置 文章目录模板与配置1、WXML模板语法1.1、 数据绑定1.1.1、数据绑定的基本原则1.1.2、在 data 中定义页面的数据1.1.3、Mustache 语法的格式1.1.4、Mustache 语法的应用场景1.1.5、动态绑定内容1.1.6、动态绑定属性1.1.7、 三元运算1.1.8、算数运算1.2、事件绑定1.2.1、什么是事件1.2.2、小程序中常用的事件1.2.3、 事件对象的属性列表1.2.4、target 和 currentTarget 的区别1.2.5、bindtap 的语法

lvxinaidou的博客 1312

微信小程序加载construct2游戏

之前有写过AndroidStudio可以加载construct2网页游戏,这次介绍一下通过微信小程序加载construct2游戏。 一、将construct2游戏导出,导出方法如下:

m0_47923157的博客 1471

基于opendota的dota2战绩查询微信小程序

说明 opendota API地址:https://docs.opendota.com/ 英雄头像需要自己找一些图片,获取他的地址,我这里是放到了云开发数据库里,直接取得库里的地址 效果图 wxml &lt;view class="weui-search-bar"&gt; &lt;view class="weui-search-bar__form"&gt; &lt;view cla...

逆风小径上勇敢の哥哥 8058

微信小程序和ros2进行通信

;ROS2做为一款优秀的机器人操作系统软件,其搭载了丰富的机器人平台,是目前机器人领域应用最多的软件。微信做为一个大型社交软件,应用非常广泛,其中的小程序直接通过扫二维码进行加载,使用起来非常方便快捷。为了让手机端能够对机器人进行操作,于是通过微信小程序与ROS2通信的方式将两者联系在一起。

weixin_43879302的博客 2140

微信小程序开发实战:基于天天考试2.2.0模板

天天考试2.2.0”小程序模板是由一系列预定义的页面和组件构成,它提供了一个高效的框架,以便开发者快速搭建在线考试平台。模板的构成包括首页、课程列表、考试界面、成绩展示和用户中心等关键页面。布局方面,采用的是模块化设计,每个页面都可以看作是一个独立的模块,通过小程序的页面跳转机制将各个模块有机地连结在一起。页面的布局主要遵循微信小程序的设计指南,确保了良好的用户体验和界面的一致性。

weixin_42594419的博客 877

AntV中F2在微信小程序中的使用

F2的微信小程序使用 F2简介及语法参照网址 https://www.yuque.com/antv/f2/miniprogram F2的微信小程序图表示例参照 https://github.com/antvis/wx-f2 @antv/f2-canvas 模块为 F2 的微信小程序图表自定义组件,依赖于 @antv/wx-f2(F2 对于微信小程序进行的适配),请直接使用 @antv/f2-canvas。 https://github.com/antvis/f2-canvas 原文链接(和原

qq_45390904的博客 2067

微信小程序bindtap事件与冒泡阻止详解

主要介绍了小程序bindtap事件与冒泡阻止详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

OB4.X集群状态running但是oceanbase-ce is not running

自 V3.2.0 起,若 obd 设置了加密密钥,执行 display 命令输出的集群信息中,密码相关内容为加密状态。若需输出明文密码,可在命令中添加 --epk/–encryption-passkey 指定密钥用于验证。obd 运维的数据库,启停需要使用obd进行操作,停机时候没有使用obd会导致集群状态running但是oceanbase-ce is not running。查看集群中的租户时无租户反馈,警告oceanbase-ce is not running,但是查询集群状态明明是running。

qq961573863的博客 1213

【OAuth2系列】集成微信小程序登录到 Spring Security OAuth 2.0

本文将详细介绍如何在 Spring Security OAuth 2.0 中扩展支持微信小程序登录,通过自定义授权方式实现无缝登录。

c18213590220的博客 4638

如何在软件复位后保留指定RAM区域的数据

本文主要介绍S32K144的RAM retention功能

北极熊的脖子(16605192620@163.com) 1万+

springboot2.x的oauth2 jwt认证,实现普通用户和微信小程序用户登陆

oauth2认证服务 网上很多都是基于是spring原有认证,无法实现小程序认证,于是乎改写了部分代码。当然,也可以添加手机验证码登陆,有兴趣的可以参照现有代码来实现。 基于springboot的oauth2 jwt,使用私钥进行加密,token信息保存在redis中。用户密码加密方式SCryptPasswordEncoder。 源码:https://github.com/aLiang-xyl/oauth2 springboot的oauth2相关知识可参见:https://docs.spring.io/sp

qq_20280007的博客 4439

非线性功率放大器对QAM传输BER性能的影响及补偿

1、线性功率放大器对传输性能的影响 为表述非线性功率放大器对传输性能的影响,以Saleh模型进行观察。具体来说,在QAM调制器之后添加一个非线性模块,使调制后的波形经历AM / AM和AM / PM转换。 在Saleh模型中,转换用四个参数表示,即AM / AM转换为????a和????a,AM / PM转换为????p和????p。 在Saleh模型中,AM / AM和AM / PM方程以输入电压u的大小表示为: 式中,FAM / AM是AM / AM转换的输出电压与输入电压的关系,而FAM

太阳帅帅的博客 2080

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

微信小程序图表组件 wx-f2

摘自杀个程序猿祭天https://www.jianshu.com/p/6b9fe45f799f Github地址:https://github.com/antvis/wx-f2 AntV F2地址: AntV F2 微信小程序图表组件 wx-f2,源于 F2,专为移动而生 F2,专为移动而生的可视化解决方案,特为大家提供了微信小程序端版本,体积小巧,性能卓越,底层...

weixin_30725467的博客 1275

APB Timer验证环境搭建——学习笔记(6)

(1)为RELOAD VALUE配置初始值32'h8000_0000,设定边界值32'h4000_0000,可以看到减到想要的边界值的时候,counter重新加载RELOAD VALUE,重新开始计数;这根线,统计等待到中断的次数,与理论值做。(2)设定Reload value。(1)由于counter。recount总共次数;

qq_41651535的博客 497

微信小程序 F2 图表组件

@antv/f2-canvas 微信小程序 F2 图表组件 安装 npm i @antv/f2-canvas 快速开始 下面我们就开始使用 f2-canvas 组件来绘制图表吧,这里假设用户已经初步了解微信小程序的基础框架,如不了解,请先阅读官网教程: 官方教程。 以绘制柱状图为例: STEP 1:在 pages 目录下新建 column 目录,该目录需要包含以下几个文件: index....

Boboy 5052

AntV G6避坑指南:折叠树状图那些意想不到的BUG(附解决方案)

本文深入剖析了在React项目中使用AntV G6实现折叠树状图时,从图标错乱、数据同步到状态管理的常见BUG与解决方案。文章基于实战经验,详细解读了G6的内部机制,提供了从环境配置、自定义节点绘制到事件处理与性能优化的完整避坑指南,帮助开发者彻底解决折叠展开功能的疑难杂症。

wasm7browser的博客 255

在Tricore上移植μC/OS-III——1.1 AURIX Development Studio的使用

本文主要介绍AURIX Development Studio软件的安装和使用方法。 英飞凌针对Tricore系列单片机推出了一款免费的软件——AURIX™ Development Studio,集成了iLLD库,内置Tasking compiler和Tasking Debugger,但这两个模块只能用于非商业用途,可供学习和试用。iLLD库是英飞凌为TC2XX和TC3XX Tricore系列单片机提供的底层驱动库,有完善的使用手册,和较好的移植性。 可从下面的链接获取软件安装包,软件安装好后,新建工程时会自

weixin_42967006的博客 2290

02.微信小程序——AntV F2制作柱状图,折线图

最近需要在微信小程序中画折线图和柱状图,想到了之前用到的AntV F2,总的来说还不错。效果图可以用微信看simaQ老哥做的微信小程序Demo。本人没学过npm,甚至不知道npm是什么 ,所以有不对的地方还请各位指出。 AntV F2图表示例:https://antv.alipay.com/zh-cn/f2/3.x/demo/index.html simaQ做的小程序demo 于是参照了...

杜小叶的博客 8707

[QMT和ptrade量化交易小白入门]-120、卖出深度虚值期权的三重过滤策略

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 282

vue2 和微信小程序 渲染

在控制台上安装axios npm i axios在main.js里写打开Element - The world's most popular Vue UI framework在控制台上安装npm i element-ui -S在main.js里写第三在api里写接口第四步渲染。

qq_70786441的博客 515

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringSecurity OAuth2 自定义授权 微信小程序登录

结合网络上的方法,主要有两种方式,一种是采用Filter,一种是采用自定义授权,目前我实现的方式是采用的是“自定义授权”的方式实现微信小程序登录验证。

走在编程之路..... 8611

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

vue2、vue3、微信小程序生命周期

beforeCreate----created 创建前后beforeMount---mounted 挂载前后beforeUpdate---Updated 修改前后beforeDestory---destoryed 销毁前后activated---deactivated keep-alive在组件被激活/销毁时调用。

2301_77783555的博客 806

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 微信小程序-1
下一篇: 微信小程序-3
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值