2023-07-21 18:42:51    0    0    0

1. 简述

最近因为项目,在用Bootsrapt写一些前台,遇到datetimepicker时,在使用方面出现了一些问题,索性记录下来,能用到看看,用不到留着自己参考。

2. 官方文档

附上官方文档链接,需要的人们传送门

官方文档大部分都是中文,已经不错了,但是还是在很多问题上没有给出例子。博主,把一些常用的在后文附上,有错误请不吝赐教。

3. 选项(属性)

总体调用格式为:
jsp中:

  1. <input type="text" id="demo" >

js中:

  1. $("#demo").datetimepicker();

3.1 format — 格式

String类型
默认值: ‘mm/dd/yyyy’
这个是最重要最常用的属性之一了。控制显示格式就是固定值得个性化搭配。
比如,显示 2016-04-21 19:21

  1. $("#demo").datetimepicker({
  2. format: 'yyyy-mm-dd hh:ii'
  3. });

又比如,你就是喜欢反人类的格式,那你可以这样:

  1. $("#demo").datetimepicker({
  2. format: 'hh-yyyy-ii mm:dd'
  3. });

这个是扯淡的,就是个意思,你可以自己设计样式,但是里面的字母都代表不同属性:

符号 意义
p 12小时制且小写(‘am’ or ‘pm’)
P 12小时制且大写(‘AM’ or ‘PM’)
s 秒,前面不补0
ss 秒,前面补0
i 分,前面不补0
ii 分,前面补0
h 时,24小时制,前面不补0
hh 时,24小时制,前面补0
H 时,12小时制,前面不补0
HH 时,12小时制,前面补0
d 日,前面不补0
dd 日,前面补0
m 月,数字表示,前面不补0 如:4
mm 月,数字表示,前面补0 如:04
M 月,缩写表示,前面补0 如:Apr
MM 月,全称表示,前面补0
2023-06-30 20:56:31    0    0    0
  1. location = / {
  2. # 精确匹配 / ,主机名后面不能带任何字符串
  3. [ configuration A ]
  4. }
  5. location / {
  6. # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
  7. # 但是正则和最长字符串会优先匹配
  8. [ configuration B ]
  9. }
  10. location /documents/ {
  11. # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
  12. # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  13. [ configuration C ]
  14. }
  15. location ~ /documents/Abc {
  16. # 匹配任何以 /documents/Abc 开头的地址,匹配符合以后,还要继续往下搜索
  17. # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  18. [ configuration CC ]
  19. }
  20. location ^~ /images/ {
  21. # 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
  22. [ configuration D ]
  23. }
  24. location ~* \.(gif|jpg|jpeg)$ {
  25. # 匹配所有以 gif,jpg或jpeg 结尾的请求
  26. # 然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则
  27. [ configuration E ]
  28. }
  29. location /images/ {
  30. # 字符匹配到 /images/,继续往下,会发现 ^~ 存在
  31. [ configuration F ]
  32. }
  33. location /images/abc {
  34. # 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
  35. # F与G的放置顺序是没有关系的
  36. [ configuration G ]
  37. }
  38. location ~ /images/abc/ {
  39. # 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用
  40. [ configuration H ]
  41. }
  42. location ~* /js/.*/\.js {
  43. # 不区分大小写
2023-05-20 17:01:04    0    0    0

本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下:

  1. 多数据库连接

方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为数据库配置的数组或字符串例如:

字符串参数:

  1. Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');

配置数组参数:

  1. Db::connect([
  2. // 数据库类型
  3. 'type' => 'mysql',
  4. // 数据库连接DSN配置
  5. 'dsn' => '',
  6. // 服务器地址
  7. 'hostname' => '127.0.0.1',
  8. // 数据库名
  9. 'database' => 'thinkphp',
  10. // 数据库用户名
  11. 'username' => 'root',
  12. // 数据库密码
  13. 'password' => '',
  14. // 数据库连接端口
  15. 'hostport' => '',
  16. // 数据库连接参数
  17. 'params' => [],
  18. // 数据库编码默认采用utf8
  19. 'charset' => 'utf8',
  20. // 数据库表前缀
  21. 'prefix' => 'think_',
  22. ]);

详细用法参考thinkphp5完全开发手册:https://www.kancloud.cn/manual/thinkphp5/118059

方法2:在应用配置文件里面添加多个数据库配置,例如:

  1. 'database1' => []//数据库配置数组
  2. 'database2' => []//数据库配置数组

在需要连接时,使用Db::connect("database1")连接指定数据库,执行数据库操作时直接在连接后链式写函数,例如:

  1. $db = Db::connect("database1");
  2. $db->name("table")->select();
  1. 跨数据库连接查询

方法1:利用Db::query("sql")方法执行sql语句,在sql语句中使用database.table的方式指明

2023-04-26 15:02:15    0    0    0

正则获取图片链接

  1. preg_match_all('/<img.*?src=["|\']?(.*?)["|\']?\s.*?>/i', $v['content'], $match);
2023-04-21 16:12:29    0    0    0

1 什么是YApi ?

YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。

平台结构大致如下:
在这里插入图片描述

YApi特性:

  • 基于 Json5 和 Mockjs 定义接口返回数据的结构和文档,效率提升多倍
  • 扁平化权限设计,即保证了大型企业级项目的管理,又保证了易用性
  • 类似 postman 的接口调试
  • 自动化测试, 支持对 Response 断言
  • MockServer 除支持普通的随机 mock 外,还增加了 Mock 期望功能,根据设置的请求过滤规则,返回期望数据
  • 支持 postman, har, swagger 数据导入
  • 免费开源,内网部署,信息再也不怕泄露了

2 部署YApi环境前的准备工作

环境要求

  1. nodejs7.6+)
  2. mongodb2.6+)

2.1 Node.js环境配置

笔者这里直接使用已编译好的包进行安装,因为Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使用:

https://nodejs.org/en/download/下载需要的的Nodejs版本

下载node

  1. wget https://nodejs.org/dist/v12.18.3/node-v12.18.3.tar.gz

解压node压缩文件

  1. tar vf node-v12.18.3.tar.gz -C /usr/local

修改node解压后的目录名称

  1. mv node-v12.18.3-linux-x64 node-v12.18.3

进入node安装目录

  1. cd node-v12.18.3

执行node命令查看node版本

  1. ./bin/node -v

解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln命令来设置软连接,设置软连接后即可使用node命令:

  1. ln -s /usr/loca
2023-04-20 22:35:06    0    0    0

一、安装最新版git

(1)安装依赖包

  1. yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
  2. yum install gcc perl-ExtUtils-MakeMaker

(2)卸载旧的git版本

  1. yum remove git

(3)查看最新git版本号

登录https://www.kernel.org/pub/software/scm/git/

当前最新版为2.9.0

(4)下载&解压

  1. cd /usr/src
  2. wget https://www.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz
  3. tar -zxvf git-2.9.0.tar.gz

(5)编译安装

  1. cd git-2.9.0
  2. make prefix=/usr/local/git all
  3. make prefix=/usr/local/git install
  4. echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
  5. source /etc/bashrc

(6)检查git版本

  1. git --version
  2. git version 2.9.0

二、配置SSH免密码登录

(1)创建一个git用户,用来运行git服务

  1. adduser git

(2)初始化git仓库,这里我们选择创建在/data/git/目录下

  1. cd /
  2. mkdir /data
  3. cd data
  4. mkdir /git
  5. cd git
  6. git init --bare XXXXX.git

(3)owner改为git

  1. chown git:git XXXXX.git

(4)将RSA认证打开

a:

  1. vim /etc/ssh/sshd_config

b:对应内容修改如下

  1. 1.RSAAuthentication yes
  2. 2.PubkeyAuthentication yes
  3. 3.AuthorizedKeysFile .ssh/authorized_keys

(5)客户端创建秘钥及公钥,这里使用的是Tortoi

2023-04-18 11:20:59    0    0    0
  1. 下载walle-web

    1. git clone https://github.com/meolu/walle-web-v1.x.git walle-web
  2. 修改walle的mysql配置

    1. cd walle-web/
    2. vim config/local.php
  3. 安装vendor

    1. composer install
  4. 初始化项目

    1. ./yii walle/setup
  5. 给php进程者权限及免密码登录

    1. vipw /etc/passwd
    1. ssh-keygen -t rsa -C "tjjstan@qq.com"
    2. ssh-copy-id -i /var/lib/nginx/.ssh/id_rsa.pub git@127.0.0.1

    如果报错则在/etc/ssh/ssh_config添加

    1. StrictHostKeyChecking no
    2. UserKnownHostsFile /dev/null
  6. 确认php进程用户有代码存储仓库/data/www/deploy/520读写权限

    1. usermod -a -G web nginx
  7. 设置umask

    1. vim /etc/profile
    2. umask 002
    3. source /etc/profile
2023-03-24 10:15:22    0    0    0

若是只引用jquery的话,监听单选按钮改变事件如下:

  1. <input type="radio" name="sex" checked="checked" value="1">
  2. <input type="radio" name="sex" value="2">
  3. $(document).ready(function() {
  4. $('input[type=radio][name=sex]').change(function() {
  5. if (this.value == '1') {
  6. alert("这是个男孩");
  7. } else if (this.value == '2') {
  8. alert("这是个女孩");
  9. }
  10. });
  11. });

注意:如果是引用了layui的样式和方法,则上面的监听事件失效,被layui接管了,所以应该如下写法:

  1. layui.use(['form', 'element', 'laydate'], function(){
  2. var jQuery = layui.jquery
  3. ,layer = layui.layer
  4. ,form = layui.form()
  5. ,element = layui.element();
  6. form.on("radio(sex)", function (data) {
  7. var sex = data.value;
  8. if (this.value == '1') {
  9. alert("这是个男孩");
  10. } else if (this.value == '2') {
  11. alert("这是个女孩");
  12. }
  13. });
  14. });
2023-03-20 17:08:44    0    0    0

关键使用DOMNodeInserted

  1. $('#custom_fields').on('DOMNodeInserted', 'input', function() {
  2. $('#custom_fields input').each(function() {
  3. }
  4. }
2023-03-09 16:59:42    0    0    0

Vue跨域配置如下:

  1. proxyTable: {
  2. '/api': {
  3. target: 'http://localhost:4000',
  4. changeOrigin: true,
  5. pathRewrite: {
  6. '^/api': ''
  7. }
  8. }
  9. },

然而启动之后报错,意思是代理请求转发失败

  1. [HPM] Error occurred while trying to proxy request /position/40.10039,116.36868 from localhost:8082 to http://localhost:4000 (HPE_INVALID_CONSTANT) (https://nodejs.org/api
  2. /errors.html#errors_common_system_errors)

proxyTable的配置肯定是生效了,但是没有配置正确,把localhost改为本机的ip即可。在许多地方用localhost会有点问题,具体原因待查,最好用ip。

  1. proxyTable: {
  2. '/api': {
  3. target: 'http://127.0.0.1:4000',
  4. changeOrigin: true,
  5. pathRewrite: {
  6. '^/api': ''
  7. }
  8. }
  9. },

作者:斑马线cow
链接:http://events.jianshu.io/p/5af043b340e6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2/12