Submitted by gouki on 2022, March 1, 10:28 PM
在使用UniApp进行小程序开发的时候,总是不可避免的会使用tabbar。在小程序中tabbar的页面和普通的页面不一样,比如,他对应的页面就始终含有tabbar,而其他页面则不显示tabbar(要显示只能用自定义组件)。而且切换页面的时候,只能用switchTab,而不能用navigateTo。
这些都是平时可以看得到和可以通过报错信息查看得到的(比如navigateTo跳到tabbar时,出错信息就是提示不能跳转到tabbar的页面)。
tabbar还有一些有意思的小特性,比如,tabbar对应的页面,不能是分包里的,只能含在主包里。tabbar打开后数据加载完,默认不再刷新。这个就带来不小的问题,比如电商的首页,加载后不刷新那就一直无法获取最新数据了。
通过查看uniapp的文档,发现App.vue除了常见的onLaunch/onShow/onHide等之外,还有什么onPageNotFound(这个平时不会触发,只有扫描、转发等才会触发,navigateTo等不会触发此事件)之类的。[应用生命周期:生命周期 - uni-app官网 (dcloud.io)]
而普通页面,常用事件就是onInit/onLoad/onShow/onHide/onUnload,除此之外还有:onResize/onPullDownRefresh/onReachBottom/onPageScroll,如果是页面点击事件,还有onTabItemTap/onShareAppMessage/onNavigationBarButtonTap/onBackPress【页面生命周期:生命周期 - uni-app官网 (dcloud.io)】
当注意到onTabItemTap事件后,就想起来,可以利用此事件进行操作:onTabItemTap(e){console.log(e);},打印这个e,可以看到他是一个Json对象,有三个主要的key:index/pagePath/text,index是针对Tabbar的索引 ,pagePath是当前Tab的路径,text是tabbar对应的文字。
于是就可以利用这个pagePath:
JavaScript代码
- onTabItemTap(e){
- uni.reLaunch({url:e.pagePath});
- }
偷懒的时候就可以直接这么做。
纯记录。
Javascript | 评论:0
| 阅读:570
Submitted by gouki on 2022, February 27, 4:04 PM
Zerotier和tailscale一样都是类似创建虚拟网络的一个软件,Tailscale有个不太好的地方就是只能用google账号登录(记不清是我当时这么选的,还是只能用这个登录了。也就导致了我在IOS上无法登录。毕竟登录google账号需要VPN,然后Tailscale如果active,就又要自己创建vpn,结果 就导致关闭了梯子的VPN,真是一个悖论。)
在电脑上使用的时候,两者差不太多,如果使用Tailscale的话,需要每个月登录一次(mac下,否则可能会token过期)。zerotier好象目前还没有遇到。
同时,zerotier可以使用moon节点加速,tailscale好象暂不行,只能通过国外中转。zerotier原来有100个免费的leaf,现在降为50个了,但对普通人说,别说50个,就是10个也足够了。所以,我其实是两个混用的。以防万一哪一个挂掉。
zerotier如果不使用moon节点,速度其实和tailscale差不太多,创建moon节点并连接上后,会发现快了很多。(然而,手机版的zerotier-one不知道怎么启用moon节点)
----如何创建moon节点?网上有很多例子,我是参考的这一篇:zerotier自建moon教程 - 方舟基地 (wnark.com)。如果要看详细的,请直接移步链接。
我取了其中的几个简化的步骤:
XML/HTML代码
- 找个好一点的机器 :
- cd /var/lib/zerotier-one
- 生成moon.json模板
- zerotier-idtool initmoon identity.public > moon.json
-
- 修改moon.json模板
- 要记住id之后加入moon服务器全靠他。检查 "id"是否为你vps的10为字符id,可在zerotier网页管理端查看,如果不是说明上一步配置有误。
- vi 编辑 moon.json,修改 “stableEndpoints” 为 VPS 的公网的 IP,以 IPv4 为例,记得带引号:
-
- "stableEndpoints": [ "8.8.8.8/9993" ]
- 生成签名文件
- 用到上一步中的 moon.json, 执行
-
- zerotier-idtool genmoon moon.json
- 执行之后生成 000000xxxx.moon 文件。
-
- 将 moon 节点加入网络
- 在 VPS 的 Zerotier 安装目录下(/var/lib/zerotier-one)建立文件夹 moons.d,将生成的 .moon文件拷贝进去。
- 重启 zerotier,重启电脑。至此,VPS 上(moon 服务器)配置完成。
-
- 客户机连接moon节点
- 其他虚拟局域网中的机器想要连接到 moon 节点的话有两种方法。
-
- 第一种方法就是使用 zerotier-cli orbit 命令。
- 使用之前步骤中 moon.json 文件中的 id 值 (10 位的字符串)分别在客户端机器里执行:
-
- zerotier-cli orbit <id> <id>
- 完成(一般来说这两个id都是相同的)
-
- [root@idv-36f9d5 ~]# zerotier-cli orbit 3ed7c***** 3ed7c*****
- 200 orbit OK
- 第二种方法是需要在 /var/lib/zerotier-one 目录下新建 moons.d 文件夹和 moon 节点一样,将 000000xxxx.moon 文件放到其中,并重启 zerotier。
直接使用Zerotier-cli orbit id id 会更方便一点。
Linux | 评论:0
| 阅读:589
Submitted by gouki on 2022, February 15, 8:58 AM
使用fpdf读取PDF文件时,报错:This PDF document probably uses a compression technique which is not supported by the free parser shipped with FPDI. (See https://www.setasign.com/fpdi-pdf-parser for more details)
提示这个文件是采用了一个压缩格式,到官网上查看之后,发现他们提供了fpdi-pdf-paser2,但是这是收费的。。。啊啊啊,短时间内先忽略吧。毕竟这样的PDF不多。
后面再关注一下有没有类似的东西。
2、查看这里的测试代码和示例:https://www.setasign.com/products/fpdi-pdf-parser/details/
目前我是放弃了,因为,他develop version,要100欧,然而这只是我自己用来测试,没必要。
------
后记:
1、读了PDF的第一行,发现这个PDF版本是PDF1.5,尝试用chrome打开,另存为,无效。选择打印->另存为PDF,成功
PHP代码
-
- <?php
- exec('gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="'.$srcfile_new.'" "'.$srcfile.'"');
- ?>
结果,官网上没有mac的可执行文件,又不想编译,所以纯记录一下吧
-----
0227更新:
GPL Ghostscript 9.50 (2019-10-15)
Copyright (C) 2019 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
GPL Ghostscript 9.50: Cannot open X display `(null)'.
**** Unable to open the initial device, quitting.
纠结。
PHP | 评论:0
| 阅读:844
Submitted by gouki on 2022, February 13, 9:41 PM
以前没注意过,好象也没有发生过,最近在使用UniApp创建小程序的时候,运行几下就突然出现:[JS 文件编译错误] 以下文件体积超过 500KB,已跳过压缩以及 ES6 转 ES5 的处理。
很烦人,一旦出现这个错误,tab页几乎都是正常的。但无法跳转到其他页面,出错信息是xxxxpage not registed。
在开发者工具上设置过:Es6转为Es5,不启用。uniapp的manifest.json中,对微信小程序也是设置了,上传时压缩代码,但仍然不起作用。
这时候看一下,HbuilderX的运行菜单,运行->运行到小程序模拟器->运行时是否压缩代码,如果没有打勾,就打个勾。
----网上有提示,如果用cli创建的,则需要package.json中增加:
"dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize"
--
再次运行,正常了。
Javascript | 评论:0
| 阅读:986
Submitted by gouki on 2022, February 4, 2:15 PM
这次春节风暴英雄有一个补丁很小的更新,在M1的苹果电脑上居然可以显示技能范围了。这个BUG已经有一年了,为什么这个只有几十M的更新就改掉了?
难道真的是因为风暴被微软收购才更新的??
苹果相关 | 评论:0
| 阅读:987