小程序学习笔记 - 框架

微信小程序生命周期--获取小程序启动时参数wx.getLaunchOptionsSync() 本博客为博主原创,若需转载请联系博主征得同意。有不当之处,敬请指出,共同进步,谢谢! 1、微信小程序生命周期官方文档 微信小程序生命周期官方文档 2、Object wx.getLaunchOptionsSync() 获得启动参数 获取小程序启动时的参数。与 App.onLaunch 的回调参数一致。 返回值 3、案例代码 // pages/test/test.js Page({ data... 阅读详情
提前说下:
	写这两篇笔记,纯看文档,没有实践、测试代码,是否正确,错误的地方可能会很多!只是帮我梳理了下小程序文档。

本笔记,只记录某些重点,或不太清楚的,一般的不做笔记

1.小程序配置
	全局配置(app.json)
		window - 用于设置小程序的状态栏、导航条、标题、窗口背景色等
			enablePullDownRefresh - 是否开启全局的下拉刷新(默认:false)
				/*
					对应 '页面事件处理函数' -> onPullDownRefresh

					框架 -> 框架接口 -> 页面 -> Page

						onPullDownRefresh() - 监听用户下拉刷新事件
							1.需要在 app.json 的 window 选项(全局配置)或 '页面配置',开启 'enablePullDownRefresh'

							2.监听到事件触发,我们就可以通过 'wx.request' 请求数据(我们也可以通过 'wx.startPullDownRefresh' 来主动触发下拉刷新,跟上面配置的 enablePullDownRefresh 后,与用户手动下拉刷新效果一致)

								// 主动通过 API 来下拉刷新
								wx.startPullDownRefresh({
									success(e){
										wx.request({
											....	
										})
									}
								})

							3.数据请求完毕后,我们可以调用 'wx.stopPullDownRefresh',停止当前页面的下拉刷新

								Page({
									onPullDownRefresh(){

										// 结束下拉刷新
										wx.stopPullDownRefresh()
									}	
								})

				 */

			onReachBottomDistance - 页面下拉触底事件,触发时距页面底部距离,单位为 px(默认:50)
				/*
					对应 '页面事件处理函数' -> onReachBottom

					框架 -> 框架接口 -> 页面 -> Page

						onReachBottom() - 监听用户上拉触底事件
							1.需要在 app.json 的 window 选项(全局配置)或 '页面配置',配置触底距离 'onReachBottomDistance'

							2.在触发距离内滑动期间,事件只会触发一次
				 */

			pageOrientation - 屏幕旋转设置,支持:auto | portrait | landscape(默认:portrait)
				portrait - 头像、肖像(竖向打印格式)
				landscape - 风景、景色(横向打印格式)

		tabBar - tabBar 设置
			custom - 是否是自定义 tabBar(默认:false),记得看之前的笔记(自定义 tabBar 会接管 tabBar,但是为了兼容旧版,也需要完整的其他 tabBar 参数的配置)

		requiredBackgroundModes - 需要在后台使用的能力,如 '音乐播放'。
			类型为数组,目前只支持:audio - 后台音乐播放
				"requiredBackgroundModes": ["audio"]

			注意:
				开发版和体验版,直接生效
				正式版,需要微信官方审核

		navigateToMiniProgramAppIdList - 需要跳转的小程序列表
			如果要跳转到其他小程序,这里配置需要跳转的小程序 appId 列表,最多 10 个

		usingComponents - 此处声明的自定义组件为全局组件,在小程序的页面或自定义组件中,我们可以直接使用,而不用再次声明

		permission - 小程序接口权限相关设置
			授权类型为:scope.userLocation - 地理位置,提示的文字

		  	"permission": {
			    "scope.userLocation": {
			    	"desc": "小程序获取权限时展示的接口用途说明,最长 30 个字符"
		    	}
	    	}

	页面配置(page/xxx.json)
		enablePullDownRefresh - 对应 window 的 enablePullDownRefresh

		onReachBottomDistance - 对应 window 的 onReachBottomDistance

		pageOrientation - 对应 window 的 pageOrientation

		disableScroll - 是否禁用页面滚动,设置为 true,则页面整体不能上下滚动(默认:false)

		disableSwipeBack - 是否禁止页面 '右滑手势' 返回(默认:false)

		usingComponents - 页面使用的 '自定义组件' 列表

	sitemap 配置(sitemap.json)
		小程序内搜索,可以爬取小程序页面而建立索引,让用户直接在微信中,可以搜索到小程序的页面。

		具体看文档

2.App() 方法
	注册小程序,入口方法

	App() 必须在 app.js 入口文件调用,只能调用 '一次'

	参数对象:
		onLaunch - 生命周期回调,监听小程序初始化
			1.全局只触发一次	

			2.参数也可以通过 wx.getLaunchOptionsSync 获取
				onLaunch(options){
					// options 同 wx.getLaunchOptionsSync() 的参数一致

					// 不使用 options,也可以使用 wx.getLaunchOptionsSync() 来获取,得到的结果和 options 一致
				}

			2.参数与 'wx.getLaunchOptionsSync' 一致
				path - 启动小程序的路径

				scene - 启动小程序的场景值(查看:'指南 -> 小程序框架 -> 场景值' 或者 '当前文档页下方也有',2 者内容是一致的)

				query - 启动小程序的 query 参数

				shareTicket - 转发设置的 withShareTicket: true,可以获取到 shareTicket

				referrerInfo - 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 '{}'
					appId - 来源小程序、公众号或 App 的 appid

					extraData - 来源小程序传过来的数据,scene = 1037或1038 时支持

				注意:
					部分版本在无 referrerInfo 时,会返回 undefined,建议使用:
						options.referrerInfo && options.referrerInfo.appId
					来进行判断

		onShow - 生命周期回调,监听小程序启动或 '从后台进入前台显示时触发'
			1.也可以使用 wx.onAppShow() 绑定监听
				wx.onAppShow(function(res){

				})

			2.参数与 wx.onAppShow() 一致,上面的 res 参数如下:
				path - 小程序切前台的路径

				scene - 小程序切前台的场景值(查看:'指南 -> 小程序框架 -> 场景值' 或者 '当前文档页下方也有',2 者内容是一致的)

				query - 小程序切前台的 query 参数

				shareTicket - 转发设置的 withShareTicket: true,可以获取到 shareTicket

				referrerInfo - 和上面的 onLaunch 一致
					appId - 

					extraData - 

				/*
					发现 onShow 和 onLaunch 的参数一致
				 */

		onHide - 生命周期回调,监听小程序切后台
			1.也可以使用 wx.onAppHide() 绑定监听

			2.无参数

		onError - 监听错误
			1.也可以使用 wx.onError() 绑定监听

			2.参数
				error - 错误信息,包含堆栈

		onPageNotFound - 监听页面不存在
			1.也可以使用 wx.onPageNotFound() 绑定监听

			2.参数与 wx.onPageNotFound() 一致
				path - 不存在页面的路径

				query - 打开不存在页面的 query 参数

				isEntryPage - 是否本次启动的首个页面(例如:从分享入口进来,首个页面是开发者配置的分享页面)

			3.回调中处理
				1>我们可以在回调中进行页面重定向,但必须 '同步' 处理,异步处理无效(例如:setTimeout)

				2>如果没有声明 onPageNotFound 监听,当跳转页面不存在时,将推入 '微信客户端原生的页面不存在的提示页面'

				3>如果回调中,重定向到另一个页面,而该页面扔不存在,将推入 '微信客户端原生的页面不存在的提示页面',不进行第二次回调。

		以及其他的自定义的全局属性和方法,例如:
			userName - 用户名
			age - 年龄
			getAvatar() - 获取头像方法
			...

3.getApp() 方法
	获取到小程序全局唯一的 App 实例

	参数:
		allowDefault - 在 App 未定义时,返回默认实现。当 App 被调用时,默认实现中定义的属性会被覆盖合并到 App 中(主要是作用域 '独立分包',加载时,可能还没有 App 实现)

	注意:
		1>不要在定义在 App() 内的函数中(或调用 App 之前,不理解),调用 getApp(),使用 this 就可以获取 app 实例

		2>通过 getApp() 获取实例后,不要私自调用生命周期函数

4.Page() 方法
	注册一个页面。指定页面的初始数据、生命周期回调、事件处理函数等

	data - 页面的初始数据

	生命周期回调
		onLoad - 页面加载时触发
			1.一个页面只会调用一次

			2.可以在 onLoad 回调中,获取打开当前页面路径中的参数
				query - 打开当前页面的参数

		onShow - 页面 '显示' | '切入前台' 时触发

		onReady - 页面初次渲染完成触发。
			1.一个页面只会调用一次

			2.代表页面已经准备妥当,可以和视图层进行交互。对界面内容进行设置的 API,如:wx.setNavigationBarTitle,只能在 onReady 之后进行

		onHide - 页面 '隐藏' | '切入后台' 时触发
			1.如 wx.navigateTo 或 底部 tabBar 切换到其他页面,或小程序切入后台

		onUnload - 页面卸载时触发
			1.如 wx.redirectTo 或 wx.navigateBack 到其他页面

	页面事件处理函数

		onPullDownRefresh - 参考上面的 window 配置

		onReachBottom - 参考上面的 window 配置

		onPageScroll - 监听页面滑动事件
			1.参数对象
				scrollTop - 页面在垂直方向已滚动的距离(单位 px)

			2.注意:
				1>只在需要的时候才在 Page() 中定义该方法,不要定义空方法,减少不必要的事件派发

				2>避免在方法中,过于频繁的执行 setData(),尤其是每次传输大量数据,会影响通信耗时,造成卡顿(优化提到过 '逻辑层和渲染层通讯' 原理)

		onShareAppMessage - 监听用户转发,并自定义转发内容
			1.查看 '之前的转发' 笔记

			2.只有定义了该事件回调,右上角才会显示 '转发' 按钮

		onResize - 小程序屏幕旋转时触发

		onTabItemTap - 点击 tab 时触发
			1.参数对象
				index - 被点击 tabItem 的索引,从 0 开始

				pagePath - 被点击 tabItem 的页面路径

				text - 被点击 tabItem 的按钮文字

			onTabItemTap(item){
				// item.index
				// item.pagePath
				// item.text
			}

	其他自定义的事件绑定函数
		<view bindtap="viewTap">点我<view>
		viewTap(){
			console.log('用户点击了 『点我』')	
		}

	Page.route - 到当前页面的路径,类型为 String
		Page({
			onShow(){
				console.log(this.route)		// 在 Page 方法内,使用 this 来获取 page 实例
			}
		})

	Page.Prototype.setData(data, callback) - 将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)
		1.参数
			data - 本次要改变的数据
				1>以 'key: value' 的形式表示

				2>key 可以以数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如:
					array[2].message
					a.b.c.d

				3>并且不需要在 this.data 中预先定义

			callback - setData 引起的界面更新渲染完毕后的回调函数

		2.注意
			1>直接修改 this.data 而不调用 this.setData 来改变 this.data,是无法改变页面状态的,还会导致数据不一致

			2>仅支持设置可 JSON 化数据

			3>单次设置的数据,不能超过 1024 KB,尽量避免一次设置过多数据,影响性能

			4>不要把 data 中的任何一项的值,设置为 undefined,否则这一项将不被设置,并可能遗留一些潜在的问题

5.getCurrentPages()
	获取当前页面栈,数组中的第一个元素为首页,最后一个元素为当前页面

	注意:
		1>不要尝试修改页面栈,会导致路由及页面状态错误

		2>不要在 App.onLaunch() 生命周期函数中调用 getCurrentPages(),此时 page 还没有生成

6.Component()
	创建自定义组件

	properties - 组件的对外属性,属性名到属性的映射(同 data 一样,也用于渲染组件模板)

	data - 组件的内部数据,用于渲染组件模板

	observers - 数据字段监听器,用于监听 properties 和 data 的变化

	methods - 组件的方法

	behaviors - 组件间代码复用(别的语言中,一般叫做:mixins 或 traits)

	生命周期函数
		created - 组件实例被创建

		attached - 组件实例进入页面节点树

		ready - 组件布局完成后

		moved - 组件实例从当前节点移动到另一个节点

		detached - 组件实例从页面节点树移除

	relations - 组件间关系定义

	externalClasses - 组件接受的外部样式类

	options - 一些选项

	lifetimes - 组件生命周期对象(和上面的几个生命周期函数一致,推荐以后采用这种方式定义)

	pageLifetimes - 组件所在页面的生命周期对象

	definitionFilter - 定义段过滤器

	/*
		具体看:指南 -> 自定义组件
	 */

7.Behavior()
	注册一个 behavior,用于组件间的代码复用

	参数是 Component 里的部分属性,用法一致

8.模块化
	module - 当前模块对象(每个 js 文件,都会暴露一个 module 对象)
		属性:
			exports - 模块向外暴露的对象,使用 'requires' 引用模块时可以获取

	exports - module.exports 的引用

	require() - 引入模块。返回模块通过 module.exports 或 exports 暴露的对象

	示例:
		common.js
			function getName(name){
				return name
			}		

			function getAge(age){
				return age
			}
			module.exports.getName = getName
			exports.getAge = getAge

		pages/index/index.js
			const common = require(../../common.js)
			Page({
				getName(){
					common.getName('dongxuemin')
				},
				getAge(){
					common.getAge(30)
				}
			})

9.wx.env - 小程序环境变量对象
	wx.env.USER_DATA_PATH - 文件系统中的用户目录路径

10.WXML 语法
	1>数据绑定
		1.内容
			<view>{{ message }}</view>

		2.组件属性(需要在 ""(双引号) 内) 	// 和 vue 不同
			<view id="item-{{ id }}"></view>

		3.控制属性(需要在 ""(双引号) 内)
			<view wx:if="{{ condition }}"></view>

		4.关键字(需要在 ""(双引号) 内)
			<checkbox checked="{{ false }}"></checkbox>

			/*
				true: boolean 类型的 true,代表真值
				false: boolean 类型的 false,代表假值

				不能直接写: checked="false",其计算结果是一个字符串,转换成 boolean 类型后代表真值
			 */

		5.运算
			1>三元运算
				<view hidden="{{ flag ? true : false }}">hidden</view>

			2>算数运算
				<view>{{ a + b }}</view>

			3>逻辑判断
				<view wx:if="{{ length > 5 }}"></view>

			4>字符串运算
				<view>{{ "hello " + name }}</view>

			5>数据路径运算(对象属性、数组元素)
				<view>{{ object.name }} {{ array[0] }}</view>

		6.组合
			1>数组
				<view wx:for="{{ [1, 2, 3, 4] }}"></view>

			2>对象
				<view data="{{ name: 'dongxuemin', age: 30 }}"></view>

			3>对象的 '...' - 扩展运算符
				<view data="{{ ...user, name: 'dongxuemin', age: 30 }}"></view>

				Page({
					data: {
						user: {
							name: 'dongdong',
							gender: 'nan',
						}
					}
				})

				组合后的对象为:{gender: 'nan', name: 'dongxuemin', age: 30}

				注意:
					1.出现同名属性,后面覆盖前面

					2.对象的 key 和 value 相同,可以简写
						原始写法:
							<view data="{{ name: name, age: age }}"></view>
						简写:
							<view data="{{ name, age }}"></view>

						Page({
							data: {
								name: 'dongxuemin',
								age: 30,
								user: {
									name: 'dongdong',
									gender: 'nan',
								}
							}
						})

		/*
			强调:
				{{}} 和 "" 之间如果有空格,将被解析为字符串

				<view wx:for="{{ [1, 2, 3, 4] }} "></view>
				等同于
				<view wx:for="{{ [1, 2, 3, 4] + ' '}}"></view>
		 */

	2>列表渲染
		wx:for

		1.循环项,下标的变量名默认为:index,值的变量名默认为:item	
			wx:for-index - 指定下标的变量名
			wx:for-item - 指定值的变量名

		2.wx:key - 来标识循环项的唯一性(vue 也有),有两种形式:
			1>字符串 - 在数组中,提供一个属性,来标识唯一,例如:id
			2>保留关键字 '*this',表示 '循环项本身'(要求循环项自身是唯一的)

	3>条件渲染
		wx:if
		wx:elif
		wx:else

		wx:if vs hidden 		// vue 也有
		/*
			注意:
				这里的 hidden 属性,小程序给每个组件,都提供了一个 hidden 属性,boolean 类型,表示组件是否隐藏
				并不是 css 中的 "display: hidden"
		 */

	4>模板
		模板中,可以定义代码片段,然后在页面或组件中引入

		1.定义模板
			<template></template> '双标签',并使用 'name' 属性,来作为模板名

			<template name="error">
				<view>
					<text>{{ error.errno }}</text>
					<text>{{ error.errmsg }}</text>
				</view>
			</template>

		2.使用模板
			<template /> '单标签',并使用 'is' 属性,声明要使用的模板名,同时传入 'data' 数据

			<template is="error" data="{{ error }}" />
			Page({
				data: {
					error: {
						errno: 1,
						errmsg: '错误'
					}
				}
			})

			/*
				is 属性,可以使用 '{{}}' Mustache 语法,从而动态引用 '模板名'

				<template is="{{ tplName }}">
				Page({
					data: {
						tplName: 'error',
					}	
				})
			 */

		3.模板的作用域
			模板拥有自己的作用域,只能通过 'data' 属性来传入模板所需要的数据

	5>引用
		WXML 有两种文件引入方式:
			import
			include

		1.import
			1>import 可以导入其他文件定义的 <template>

				// error.wxml
				<template name="error">
					<view>
						<text>{{ error.errno }}</text>
						<text>{{ error.errmsg }}</text>
					</view>
				</template>

				// index.wxml
				<import src="error.wxml">
				<template is="error" data="{{ error }}" />

			2>import 的作用域
				import 只能导入直接定义在目标文件中的 template,而不能追踪导入

				C import B,B import A,在 C 中只可以使用 B 定义的 template,不能使用 A 定义的 template

		2.include
			include 可以将目标文件中,除了 <template /> 和 <wxs /> 外的所有代码引入,相当于是拷贝到 include 的位置

			适合模板布局:
				<include src="header.wxml">
				<view class="content">
				</view>
				<include src="footer.wxml">

 

微信小程序学习笔记(二)-- 开发之框架 一、小程序框架介绍(了解) 小程序框架包含小程序的配置、框架接口、场景值、WXML 和 WXS 等 二、小程序的配置(精通) 小程序的配置分为全局配置、页面配置以及sitemap 配置 1、全局配置 小程序根目录下的 app.json 文件用来对微信小程序进行全局配置。文件内容为一个 JSON 对象 ​ 下面介绍一下常用的配置选项 1.1 pages 用于指定小程序由哪些页面组成,每一项都对应一个页面的 路径(含文件名) 信息。文件名不需要写文件后缀,框架会自动去寻找对于位置的 . 阅读详情

相关推荐

uniapp(微信小程序) - 解决报错TypeError: Cannot read property ‘get‘ of undefined(Uniapp编译运行到微信小程序 开发者工具出现错误提示)

uniapp,微信小程序,Uniapp微信小程序报错TypeError: Cannot read property ‘get‘ of undefined,uniApp编译微信小程序平台报错,如何解决小程序端报错,微信开发者工具报错,uniapp报错提示Cannot read property ‘get‘ of undefined,uniapp就微信小程序端提示错误,uni-app打包微信小程序,UNIAPP构建微信小程序报错,开发者工具控制台出错,uniapp运行到小程序平台报错,找不到定义,导入模块以及定

✅ 精选推荐文章 1万+

微信小程序的所有scene场景值 2020-10-21

微信小程序官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/reference/scene-list.html 关于场景值的详细说明和获取方式请参考指南-场景值 场景值ID 说明 图例 1000 其他 / 1001 发现栏小程序主入口,「最近使用」列表(基础库2.2.4版本起包含「我的小程序」列表) / 1005 微信首页顶部搜索框的搜索结果页 查看 1006 发现栏小程.

rewiner的专栏 7003

正确解决“未获取TypeError:无法读取属性“异常的有效解决方法

正确解决"未获取TypeError:无法读取属性"异常的有效解决方法

wbajsjhhhhh的博客 5232

Cannot read property ‘get‘ of undefined 报错

刚才vue项目中报错“Cannot read property 'get' of undefined” 可以肯定的是echart出的问题 遂打断点一级一级的找,卡在了渲染环节 可以检查一下option的配置是否齐全, 比如xAxis和yAxis,legend等条件格式是否正确,渲染需要的是否齐全 一般把需要的option填写正确,就OK了 ...

heyNewbie的博客 7344

实战指南 | 快速修复Adobe Acrobat 2020安装过程中的常见注册表错误

本文提供了Adobe Acrobat 2020安装过程中遇到“无法打开键”注册表错误的详细修复指南。通过安全编辑注册表,精准定位并删除残留键值,可快速解决此常见安装报错,确保软件顺利安装。同时,文章也介绍了其他安装问题的应对策略与预防措施。

weixin_29200485的博客 560

UFS电源管理深度解析:从电气特性到功耗模式优化

本文深度解析UFS电源管理,从VCC、VCCQ、VCCQ2三路供电体系切入,详细阐述了UIC链路休眠(HIBERN8)机制与设备七种功耗模式(Active、Idle、Sleep、Power Down)的切换逻辑。文章重点探讨了如何通过主动功耗管理策略与动态调整激活模式电流等级(bActiveICCLevel),在嵌入式与移动设备中实现性能与功耗的精细平衡与优化。

weixin_29243279的博客 488

微信小程序学习笔记( 小程序框架 )

注册小程序 每个小程序都需要在app.js中调用App方法注册小程序的示例,并绑定声明周期回调函数,错误监听和页面不存在监听函数等。 App中可以调用的详细参数: 1.onlaunch 初始化完成时触发,全局只触发一次,参数可以使用 wx.getLaunchOptionsSync获取(一个wx提供api获取小程序的一些的启动信息参数 2.onshow 小程序启动,或者从后台进入前台显示触发。 或者...

qq_44786519的博客 1052

人工势场法三大致命缺陷?我用ROS+Gazebo做了组对比实验

本文通过ROS与Gazebo仿真实验,深入剖析了人工势场法(APF)在机器人路径规划中的三大经典问题:局部最小值、目标不可达和路径震荡。文章不仅复现了这些缺陷,还对比测试了虚拟目标点法、改进斥力场及运动平滑等主流改进方案,为工程选型提供了基于数据的实用建议。

dapp9builder的博客 215

微信小程序开发学习笔记《18》uni-app框架-网络请求与轮播图

博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读。

tutgxu的博客 1298

IDEA系列(四):IDEA导入Maven工程项目并配置Tomcat启动

本片文章主要介绍如何导入一个存在的maven项目并配置Tomcat启动项目,方便自己使用,也分享出来,希望可以帮助到其他人。

低调D树苗的博客 1243

机床上位机实战:CNC设备数据采集+工艺参数存储全流程(附C#代码+SQL设计)

如果能正常输出转速和状态,说明通信通了——这步是基础,没通的话别往下走,先查CNC的IP对不对、Modbus功能有没有开、地址是不是错了(我当初卡了2小时,发现是Fanuc的Modbus从站地址设成了2,不是默认1)。这篇文章就把整个开发过程拆透:从CNC通信协议选型,到数据采集代码落地,再到工艺参数的数据库设计,连中间踩过的“Fanuc系统寄存器地址对应错”“断连后数据补传”这些坑都给大家说清楚,新手跟着做也能跑通。工艺参数要跟“工单”和“设备”绑定,不然查的时候不知道是哪个工单、哪台设备的参数。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 788

小程序原生框架学习笔记

小程序框架 逻辑层 1.小程序APP App(Object object) 注册小程序。接受一个Object参数,其指定小程序的生命周期回调等。App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。 onLaunch(Object object)小程序初始化完成时触发,全局只触发一次。** **onShow(Object o...

weixin_44141261的博客 420

YOLO系列算法改进 | Neck改进篇 | 融合FAAFusion傅里叶角度对齐模块 | 攻克多尺度方向特征冲突,角度检测精度飙升! | CVPR 2026

YOLO系列算法改进 | Neck改进篇 | 融合FAAFusion傅里叶角度对齐模块 | 攻克多尺度方向特征冲突,角度检测精度飙升! | CVPR 2026 (以YOLO26最新目标检测模型为基础,利用FAAFusion傅里叶角度对齐模块改进Neck部分)

2502_91881744的博客 315

黑马程序员小程序学习笔记(3)——小程序框架

1 小程序框架介绍 微信小程序原生框架——MINA框架 一个对比: 结构 传统web 微信小程序 结构 HTML WXML 样式 CSS WXSS 逻辑 Javascript Javascript 配置 无 JSON 每一个页面都应当由这四种文件。 utils放的是帮助文档的js。 app.js入口文件,全局文件。 app.json 全局的标题设置(局部也可...

weixin_44321098的博客 1125

SOI LDMOS器件的Sentaurus TCAD建模与关键电学特性仿真研究

本文研究了SOI LDMOS器件的TCAD建模与电学特性仿真。通过Sentaurus TCAD平台建立了单RESURF结构的SOI LDMOS模型,详细阐述了器件结构原理和RESURF耐压机制。研究采用SDE进行几何定义和掺杂配置,在Sentaurus Device中构建了完整的物理模型体系,包括迁移率、复合和碰撞电离模型。通过系统仿真提取了器件的转移特性、输出特性和击穿特性等关键参数,分析了各参数对性能的影响规律。研究结果为功率半导体器件的仿真建模提供了规范化参考,有助于优化SOI LDMOS的性能设计。

huanghm88的专栏 134

数字逻辑Fundamentals of Digital Logic with Verilog Design | 3rd Edition Solutins Chapter 2(step by step)

数字逻辑第二章习题和详细步骤 2-1 ~ 2-78

weixin_62651190的博客 2305

小程序学习笔记之三:小程序框架

小程序学习重点概念~

weixin_64684095的博客 231

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

微信小程序开发学习笔记《16》uni-app框架

*uni-app是一个使用Vue.js 开发所有前端应用的框架。**开发者编写一套代码,可发布到ioS、Android、H5、以及各种小程序(微信[支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。

tutgxu的博客 1378

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

深度学习工具包 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")

微信小程序开发学习笔记《21》uni-app框架-楼层图片跳转

博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读。

tutgxu的博客 874

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

小程序框架学习笔记

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34268610的博客 79

微信小程序--引入vant框架学习笔记

看一下官方对Vant Weapp的介绍:Vant Weapp 是移动端 Vue 组件库 Vant 的小程序版本,两者基于相同的视觉规范,提供一致的 API 接口,助力开发者快速搭建小程序应用。 Vant框架已经设计好了大量的UI组件,在开发小程序的时候可以引入定义好的组件,极大的方便了小程序的开发。 引入Vant框架首先需要配置与电脑配置相应的Node.js环境。去官网直接下载即可。Node.js官网 之前没有接触过Node.js,所以查阅资料了解了下。开看句简单的解释:“Node.js 是能够在服务器端运

weixin_44918193的博客 764

小程序开发框架介绍---remax 小程开发框架学习笔记

小程开发框架: 1、小程原生开发 2、vue-mpvue 已经长时间没有更新 3、Taro-京东开发的框架 4、Remax-阿里出的开发框架,更新频繁,一直在解决问题 学习Remax开发框架 学习基础: 1、react基出知识 2、小程序的基础知识 3、TS基础知识 学习目标: 1、remax开发小程序(仅指微信小程) 2、基于实例开发 3、完整的开发流程 4、包括微信广告、用户统计 ...

小Y的博客 792

微信小程序学习笔记——小程序第三方框架

1. 腾讯 wepy 类似vue 2. 美团 mpvue 类似vue 3. 京东 taro 类似react 4. 滴滴 chameleon 5. uni-app 类似vue

qq_37899792的博客 340

微信小程序开发学习笔记《17》uni-app框架-tabBar

博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读。

tutgxu的博客 1448

微信小程序学习笔记之小程序框架、MINA文件结构

1. 框架---提供了视图层描述语言wxml,wxss与javaScript逻辑层框架,以及两者之间的数据传输和事件系统,核心是一个响应式的数据绑定系统,数据和视图很容易实现同步,当数据修改时,只需要在逻辑层修改数据,视图就会做对应的更新。2.文件目录结构---一个MINA程序包含描述整体程序的app和多个描述各自页面的page。MINA程序主题有小程序逻辑app.js,小程序公共配置app.js...

728
上一篇: 小程序学习笔记 - 指南
下一篇: Sublime Text 支持小程序原生代码,高亮、代码段插件 - Sublime-wxapp
beyond__devil
博客等级 码龄14年 147粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值