- 博客(209)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 微信小程序_10,页面事件
下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为1.全局开启下拉刷新2.局部开启下拉刷新实际开发中推荐使用第二种方式局部开启:在全局或页面的.json配置文件中,通过backgroundColor和backgroundTextStyle来配置下来刷新窗口的样式,其中:如下面的例子中,button控制count的自增,下拉重置count为0(页面中不必要的代码没有copy)WXML:.js:当你下拉刷新时,其中的function会立即执行,但是下拉刷新的
2022-07-07 19:44:32
214
原创 微信小程序开发中的上拉触底的节流处理
如下图,往下面拖动时,会触发函数,获取颜色数据并使自增,但是你在数据没有返回之前多次触发上拉触底,那么就会多次request1.在data中定义idloading节流阀2.在getColors()方法中修改isloading节流阀的值3.在onReachBottom中判断节流阀的值,从而对数据请求进行节流控制示例:.js:触发上拉触底会判断一下的值,如果为true,则不请求,如果为false,则请求...
2022-07-07 17:06:48
939
原创 微信小程序_9,视图与逻辑
页面导航指的是页面之间的互相跳转,例如:浏览器中实现页面导航的方式有如下两种1.链接2.location.href1.声明式导航:2.编程式导航:tabBar页面指的是被配置为tabBar的页面在使用组件跳转到指定的tabBar页面时,需要指定url属性和open-type属性,其中:注意,这里tabBar配置的页面是需要在中的节点下配置了的页面才会进行跳转!导航到非tabBar页面:非tabBar页面指的是没有被配置为tabBar的页面在使用组件跳转到非tabBar页面时,则需要指定ur
2022-06-25 23:08:17
174
原创 微信小程序_8,项目练习,本地生活
1.新建项目并梳理项目结构2.配置导航栏效果3.配置tabBar效果4.实现轮播图效果5.实现九宫格效果6.实现图片布局demo:项目demo文件
2022-06-22 23:09:13
534
1
原创 微信小程序_7,网络数据请求
出于安全性方面的考虑,小程序官方对数据接口的请求做出了如下两个限制:1.只能请求HTTPS类型的接口2.必须将接口的域名添加到信任列表添加到信任列表:需求描述:假设在自己的微信小程序中,希望请求域名下的接口配置步骤:登录微信小程序管理后台->开发->开发设置->服务器域名->修改request合法域名注意事项:1.域名只支持https协议2.域名不能使用IP地址或localhost3.域名必须经过ICP备案4.服务器域名一个月内最多可申请5次修改下面这里是有问题的,实际上是每个月只能修改五
2022-06-20 19:53:06
706
原创 微信小程序_6,页面配置
小程序中,每个页面都有自己的.json配置文件,用来对当前页面的窗口外观,页面效果等进行配置小程序中,app.json中的window节点,可以全局配置小程序中每个页面的窗口表现如果某些小程序页面想要拥有特殊的窗口表现,此时"页面级别的.json配置文件"就可以实现这种需求.注意:当页面配置与全局配置冲突时,根据就近原则,最终的效果以页面配置为准例如:index的WXML:person的WXML:......
2022-06-19 16:47:35
276
原创 微信小程序_5,全局配置
1.pages了解window节点常用的配置项:app.json->window->navigationBarTitleTextapp.json->window->navigationBarBackgroundColor修改导航栏文字颜色:app.json->window->navigationBarTextStyle注意这里的可选值只有black/white概念:下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为app.json->window->ena
2022-06-19 16:11:21
1465
原创 微信小程序_4,WXSS模板样式
WXSS(WeiXin Style Sheets)是一套样式语言,用于美化WXML的组件样式,类似于网页开发中的cssWXSS具有CSS大部分特性,同时WXSS还对CSS进行了扩充以及修改,以适应微信小程序的开发,与CSS相比,WXSS扩展的特性有:rpx的实现原理非常简单,鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx把所有的设备的屏幕,在宽度上等分为750份(即:当前屏幕的总宽度为750rpx)小程序在不同蛇摆上运行的时候,会自动把rpx的样式单位换算成对应的像素单位来渲染,从而实现屏幕适配
2022-06-19 14:20:09
449
原创 微信小程序_3,WXML模板语法
事件是渲染层到逻辑层的通讯方式,通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理当事件出回调触发的时候,会受到一个事件对象event,它的详细属性如下表所示:在开发中,用的比较多的是:,target是触发该事件的源头组件,而currentTarget则是当前事件所绑定的组件,举例如下:点击内部的按钮,点击事件以冒泡的方式向外扩散,也会触发外层view的tap事件处理函数在小程序中,不存在HTML中的onclick鼠标点击事件,而是通过tap事件来响应用户的触摸行为1.通过bindtap
2022-06-16 22:24:25
295
原创 koa写入mysql数据库,有插入语句却没写入的问题
注意这里fileData的数据很长post:后端:但是数据库中没有该数据如有同样问题,可以看下自己的表结构:我是这里的问题,解决:停掉nodemon,modele更改为: fileData: { //这里需要很长的数据长度 type: DataTypes.TEXT, allowNull: true, comment: '文章的内容' },强制同步一遍,注意同步后表中的数据会丢失:markdownFile.sync({force:true})当然你也可以在表
2022-05-13 15:19:25
439
原创 koa中上传文件对于不支持的文件格式返回错误信息
我这里使用的是koa-body来接受文件:const koa = require('koa')//user路由// const userRouter = require('../router/user.route')//商品路由// const goodsRouter = require('../router/goods.route')const router = require('../router')const koaBody = require('koa-body')const ko
2022-05-02 23:05:44
692
原创 08_让koa支持文件上传
在koaBody中开启:const koa = require('koa')const router = require('../router')const koaBody = require('koa-body')const app = new koa()const errHandler = require('./errHadnler')const path = require('path')app.use(koaBody({ multipart: true, formidable:
2022-05-02 14:15:00
588
原创 UnhandledPromiseRejectionWarning报错send()的处理
先看报错:(node:24460) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'send' of undefined at getAllUser (file:///G:/MarkDownNote/vue/example_code/apiTest/controler/user_ctrl.js:6:6) at processTicksAndRejections (internal/process/t
2022-04-12 13:54:15
2368
原创 js的eventloop
javascript是一门单线程语言,同时只能做一件事单线程执行任务队列的问题:如果前一个任务非常耗时,则后续的任务就不得不一直等待,从而导致程序假死的问题同步任务和异步任务:为了防止某个耗时任务导致程序假死,javascript把等待的任务分为了两类:同步任务又叫非耗时任务,指的是在主线程上排队执行的那些任务只有前一个任务执行完毕,才能执行后一个任务异步任务又叫做耗时任务,异步任务由javascript委托给宿主环境进行同步任务和异步任务的执行..
2022-04-10 21:26:33
647
原创 async/await
什么是async,await?async/await是es8引入的新语法,用来简化Promise异步操作,在async/await出现之前,开发者之前只能通过链式.then()方法处理Promise异步操作,示例代码如下:console.log('promise保证读取顺序:')thenfs.readFile('./text/11.txt', 'utf8') .catch((err) => { console.log(err) }) .then((r1) => { con.
2022-04-09 18:10:36
315
原创 promise封装读取文件
方法封装要求:1.方法名称要定义为:getFile2.方法接受一个形参fpath,表示要读取的文件的路径3.方法的返回值为Promise实例对象获取.then()的两个实参:通过.then()指定的成功和失败的回调函数,可以在function的形参中进行接受,示例代码如下:调用resolve和reject回调函数:Promise异步操作的结果,可以调用resolve或reject回调函数进行处理,实例代码如下:getFile方法的基本定义:import fs from .
2022-04-09 16:41:38
669
原创 Promise.all()和Promise.race()
promise.all()Promise.all()方法会发起并行的promise异步操作,等所有的异步操作全部结束,才会执行下一步的.then()操作(等待机制),实例代码:import thenfs from 'then-fs'const promises = [ thenfs.readFile('./text/1.txt', 'utf8'), thenfs.readFile('./text/2.txt', 'utf8'), thenfs.readFile('./text/3.txt'.
2022-04-09 15:54:39
381
原创 then-fs的使用
由于nodejs官方提供的fs模块仅支持以回调函数的方式读取文件,不支持promise的回调方式,因此,需要先运行如下命令,安装then-fs这个第三方包,从而支持我们基于promise的方式读取文件内容:调用then-fs提供的readFile()方法,可以异步地读取文件的内容,它的返回值是Promise的实例对象,因此可以调用.then()方法为每一个Promise异步操作指定成功和失败之后的回调函数读取文件:import thenfs from 'then-fs'thenfs.r..
2022-04-09 14:15:02
1863
原创 mongodb删除文档
mycode:db.person.insert([{name:'zs', age:18},{name:'zs', age:19},{name:'ls', age:20},{name:'ls', age:21},{name:'ww', age:22},{name:'zl', age:23},])//注意点:和update方法不同,remove默认会删除满足条件的所有数据db.person.remove({name:'zs'})//删除第一个满足条件的数据:db.pe.
2022-03-06 11:55:31
811
原创 mongodb$pull数组更新操作符
mycode:db.person.insert([{name:'zs', books:[{name:'html', price:66}, {name:'js', price:88}], tags:['html', 'js', ['1', '2']]},{name:'ls', books:[{name:'vue', price:99}, {name:'node', price:199}], tags:['a', 'b', 'ab', 'c', 'ac']}])db.person.find().
2022-03-01 21:16:53
2247
原创 mongodb数组更新操作符$push
/*1.$push数组更新操作符KaTeX parse error: Expected '}', got 'EOF' at end of input: …不去重)格式 : {push: {:, …}}*/show databases;db.person.find()db.person.updateOne({name:'zs'},{$push:{tags:'react'}})再次执行:db.person.updateOne({name:'zs'},{$push:{tags:'
2022-03-01 21:14:38
626
原创 mongodb数组更新操作符$addToSet
mycode://example:db.person.insert([{name:'zs', books:[{name:'html', price:66}, {name:'js', price:88}], tags:['html', 'js']},{name:'ls', books:[{name:'vue', price:99}, {name:'node', price:199}], tags:['vue', 'node']}])//在name为zs的字段中的tags增添一个vuedb..
2022-03-01 21:13:38
5779
原创 mongodb更新操作符$min,$max
mycodedb.person.deleteOne({name:'lnj'})db.person.insertOne({name:'zs',age:18})//$min是用min指定的值和原来的值比较,看谁小,留下下的数值db.person.updateOne({'name':'zs'},{$min:{age:5}})//$max是用max指定的值和原来的值比较,看谁大,留下大的数值db.person.updateOne({'name':'zs'},{$max:{age:33}})/.
2022-03-01 21:11:50
978
原创 mongodb更新操作符$inc,$mul
mycodedb.person.insertOne({name:'lnj',age:33})db.person.find()db.person.updateOne({name:'lnj'},{$inc:{age:-3}})db.person.updateOne({name:'lnj'},{$inc:{age:+5}})//乘5db.person.updateOne({name:'lnj'},{$mul:{age:5}})//除2db.person.updateOne({name:'.
2022-03-01 21:10:44
675
原创 mongodb更新操作符$rename
mycode:db.person.find()//对zs的字段名修改为了mynamedb.person.update({name:'zs'},{$rename:{name:'myname'}})//注意:如果修改的是文档字段中的字段,那么取值必须写上层级关系db.person.update({name:'ww'},{$rename:{'book.name':'book.bookname'}})//如果要操作的字段不存在,那么不会进行任何操作//注意:如果重命名之后的名称已经存在,那么之.
2022-03-01 21:09:31
780
原创 mongodb更新操作符$unset
mycodedb.person.find()//这里要删除ls的score字段,随便给一个值即可db.person.update({‘name’:‘ls’},{$unset:{‘score’:’’}})//注意:如果使用unset删除某一个字段,那么后面赋值为任何内容都不重要//删除文档字段中的字段db.person.update({name:‘ww’},{$unset:{‘book.price’:’’}})//删除数组字段中的元素,//这里删除中间的元素并不会修改它的长度,只会填为nu.
2022-03-01 21:09:02
3472
原创 mongodb更新操作符
mycode:db.person.insert([{name:'zs', age:18},{name:'ls', age:19},{name:'ww', age:20},{name:'zs', age:21},])db.person.find()db.person.update({name:'ww'},{age:90})//更新部分字段而不是覆盖db.person.update({name:'ww'},{$set:{age:55}})// 更新所有:db.person.up.
2022-03-01 21:08:16
750
转载 mongodb更新操作
更新文档MongoDB中有三个常用的更新方法: save()/update()/findAndmodify()save方法save用于往集合里添加一个新文档或者覆盖文档当没有指定文档_id的时候就是新增当指定了集合中已经存在的_id的时候就是覆盖示例db.person.insert([{name:'zs', age:18},{name:'ls', age:19},{name:'ww', age:20},{name:'zs', age:21},])update方法db.col
2022-03-01 21:07:37
6339
转载 mongodb统计函数
统计函数cursor.count(): 统计集合中文档的个数applySkipLimit默认为false, 表示忽略skip和limit2.示例db.person.find().count()// 注意点: count函数可以接收一个applySkipLimit参数, 通过这个参数可以告诉MongoDB在统计的时候是否需要忽略Skip和Limit// 默认情况下applySkipLimit的取值是false, 表示忽略Skip和Limitdb.person.find().skip
2022-03-01 21:06:02
2000
原创 mongodb运算操作符
运算操作符1.运算操作符{ <field>: { $regex: /pattern/, $options: '<options>' } }{ <field>: { $regex: /pattern/<options> } }查询满足正则的文档示例db.person.insert([{name:'zs', age:18},{name:'ls', age:19},{name:'ww', age:17},{name:'Zsf', age:18}
2022-02-09 22:00:20
964
原创 mongodb数组操作符
数组操作符/*$all : 匹配数组中包含所有指定查询值的文档{<field>: {$all: [<value1>, <value2>, ...]}}$elemMatch: 匹配数组中至少有一个能完全匹配所有的查询条件的文档{<field>: {$elemMatch: {<query1>, <query2>, ...}}}2.示例查询tags中同时拥有html和js的文档db.person.insert([
2022-02-09 21:58:19
1074
原创 mongodb的字段操作符
//字段操作服符db.person.remove()db.person.insert([{name:'zs', age:17, gender:'男'},{name:'ls', age:18},{name:'ww', age:19},{name:'it666', age:20, gender:'女'}])//需求:要求查询出所有拥有gender属性的文档:db.person.find({gender:{$exists:true}})//查询出所有男性://应用场景:配合$ne/$n
2022-02-09 21:57:47
417
原创 mongodb逻辑操作符
//逻辑操作符:/*$not: 匹配条件不成立的文档{<field>: {$not: {<expression>}}}$and: 匹配条件全部成立的文档{<field>: {$and: [{<expression1>}, {<expression2>}, ...}]}$or : 匹配至少一个条件成立的文档{<field>: {$or: [{<expression1>}, {<expression2>
2022-02-09 21:57:12
324
原创 mongodb比较操作符笔记
比较操作符//和MySQL一样, MongodDB中也支持很多比较操作符//$eq: 等于 / $ne: 不等于//$gt: 大于 / $gte: 大于等于//$lt: 小于 / $lte: 小于等于/*2.使用格式db.<collection>.find( {<field>: {$<operator>: <value>}}, <projection>)*/show databases;use usser
2022-02-09 21:56:15
693
关于nodejs的session本地存储的问题
2021-08-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅