WXML:微信小程序版HTML

2023-11-04

完整微信小程序(Java后端) 技术贴目录清单页面(必看)

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件事件系统,可以构建出页面的结构。

3.7.1 标签与属性

常用基础标签text view

特征:

text 类似html span标签 行内元素,不换行;

view 类似html div标签 块级元素,换行;

<text>text 类似html span标签 行内元素</text>
<text>,不换行</text>
<view>view 类似html div标签 块级元素</view>
<view>view 类似html div标签 换行</view>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L2ORXXPp-1621055917343)(image-20210429115340525.png)]

公共属性

所有组件都有以下属性:

属性名 类型 描述 注解
id String 组件的唯一标示 保持整个页面唯一
class String 组件的样式类 在对应的 WXSS 中定义的样式类
style String 组件的内联样式 可以动态设置的内联样式
hidden Boolean 组件是否显示 所有组件默认显示
data-* Any 自定义属性 组件上触发的事件时,会发送给事件处理函数
bind* / catch* EventHandler 组件的事件 详见事件
<view id="name" class="nameClass" style="font-style: italic;" hidden="">view 类似html div标签 块级元素</view>
.nameClass{
  font-size: larger;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k7xofLpV-1621055917346)(image-20210429120102784.png)]

3.7.2 数据绑定

数据绑定功能使得程序在运行过程中,具备动态改变渲染界面的能力,从而达到了更好的用户体验效果。在 WEB开发中,需要借助JavaScript并通过DOM接口来实现界面的动态更新,而在小程序中,则是使用WXML语言提供的数据绑定功能来实现的。

简单数据绑定

data: {
	id:1,
	message: 'Hello MINA!',
	number:1234,
	condition:true,
	isChecked:true,
	person:{
	  name:"张三",
	  age:25,
	  sex:"男"
	}
},
<view>{{message}}</view>
<view>{{number}}</view>
<view>{{condition}}</view>
<view>{{isChecked}}</view>
<view>{{person}}</view>
<view>{{person.name}}</view>
<view>{{person.age}}</view>
<view>{{person.sex}}</view>
<!-- 自定义属性 data-* -->
<view data-number="{{number}}">自定义属性</view>
<!-- 组件属性(需要在双引号之内) -->
<view id="item-{{id}}">组件属性</view>
<!-- 控制属性(需要在双引号之内) -->
<view wx:if="{{condition}}">控制属性</view>
<!-- 使用布尔类型充当属性 -->
<checkbox checked="{{isChecked}}"></checkbox>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66JFwSL6-1621055964376)(image-20210429163024606.png)]

运算

可以在 {{}} 内进行简单的运算,支持的有如下几种方式:

三元运算

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

算数运算

<view> {{a + b}} + {{c}} + d </view>
Page({
  data: {
    a: 1,
    b: 2,
    c: 3
  }
})

逻辑判断

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

字符串运算

<view>{{"hello " + name}}</view>

数据路径运算

<view>{{object.key}} {{array[0]}}</view>
Page({
  data: {
    object: {
      key: 'Hello '
    },
    array: ['MINA']
  }
})

3.7.3 列表渲染

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。

默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item

使用 wx:for-item 可以指定数组当前元素的变量名,

使用 wx:for-index 可以指定数组当前下标的变量名:

array:[
  {
	id:1,
	name:"张三"
  },
  {
	id:2,
	name:"李四"
  },
  {
	id:3,
	name:"王五"
  }
]
<view 
  wx:for="{{array}}" 
  wx:for-item="item"
  wx:for-index="index">
  {{index}}-{{item.id}}-{{item.name}}
</view>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wN7qi57W-1621056012623)(image-20210501111752408.png)]

如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 input 中的输入内容,switch 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

wx:key 的值以两种形式提供

  1. 字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。
  2. 保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字。

当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。

如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ag8LRayh-1621056012626)(image-20210501115935730.png)]

block wx:for
类似 block wx:if,也可以将 wx:for 用在标签上,以渲染一个包含多节点的结构块。例如:

<block 
  wx:for="{{array}}" 
  wx:key="id"
  wx:for-item="item"
  wx:for-index="index">
    {{index}}-{{item.id}}-{{item.name}}
</block>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ScZWuCCY-1621056012630)(image-20210501122734941.png)]

3.7.4 条件渲染

wx:if

在框架中,使用 wx:if="" 来判断是否需要渲染该代码块:

<view wx:if="{{condition}}"> True </view>

也可以用 wx:elifwx:else 来添加一个 else 块:

<view wx:if="{{length > 5}}"> 1 </view>
<view wx:elif="{{length > 2}}"> 2 </view>
<view wx:else> 3 </view>

block wx:if

因为 wx:if 是一个控制属性,需要将它添加到一个标签上。如果要一次性判断多个组件标签,可以使用一个 <block/> 标签将多个组件包装起来,并在上边使用 wx:if 控制属性。

<block wx:if="{{true}}">
  <view> view1 </view>
  <view> view2 </view>
</block>

注意: <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

hidden

<view hidden="{{condition}}">hidden</view>

因为 wx:if 之中的模板也可能包含数据绑定,所以当 wx:if 的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。

同时 wx:if 也是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。

相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。

一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wd45XExh-1621056091091)(image-20210502115952887.png)]

3.7.5 模版

WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。

1,定义模版

使用 name 属性,作为模板的名字。然后在<template/>内定义代码片段,如:

<!--
  index: int
  msg: string
  time: string
-->
<template name="msgItem">
  <view>
    <text> {{index}}: {{msg}} </text>
    <text> Time: {{time}} </text>
  </view>
</template>

2,使用模版

使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入,如:

<template is="msgItem" data="{{...item}}"/>
Page({
  data: {
    item: {
      index: 0,
      msg: 'this is a template',
      time: '2016-09-15'
    }
  }
})

is 属性可以使用 Mustache 语法,来动态决定具体需要渲染哪个模板:

<template name="odd">
  <view> odd </view>
</template>
<template name="even">
  <view> even </view>
</template>

<block wx:for="{{[1, 2, 3, 4, 5]}}">
  <template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>
</block>

3,模版的作用域

模板拥有自己的作用域,只能使用 data 传入的数据以及模板定义文件中定义的 <wxs /> 模块。

3.7.6 引用

WXML 提供两种文件引用方式importinclude

import

import可以在该文件中使用目标文件定义的template,如:

在 item.wxml 中定义了一个叫itemtemplate

<!-- item.wxml -->
<template name="item">
  <text>{{text}}</text>
</template>

在 index.wxml 中引用了 item.wxml,就可以使用item模板:

<import src="item.wxml"/>
<template is="item" data="{{text: 'forbar'}}"/>

import 的作用域

import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件 import 的 template。

如:C import B,B import A,在C中可以使用B定义的template,在B中可以使用A定义的template,但是C不能使用A定义的template

<!-- A.wxml -->
<template name="A">
  <text> A template </text>
</template>
<!-- B.wxml -->
<import src="a.wxml"/>
<template name="B">
  <text> B template </text>
</template>
<!-- C.wxml -->
<import src="b.wxml"/>
<template is="A"/>  <!-- Error! Can not use tempalte when not import A. -->
<template is="B"/>

include

include 可以将目标文件除了 <template/> <wxs/> 外的整个代码引入,相当于是拷贝到 include 位置,如:

<!-- index.wxml -->
<include src="header.wxml"/>
<view> body </view>
<include src="footer.wxml"/>
<!-- header.wxml -->
<view> header </view>
<!-- footer.wxml -->
<view> footer </view>

3.7.7 事件

什么是事件
事件是视图层到逻辑层的通讯方式。
事件可以将用户的行为反馈到逻辑层进行处理。
事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
事件对象可以携带额外信息,如 id, dataset, touches。

事件的使用方式

  • 在组件中绑定一个事件处理函数。

bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。

<view id="tapTest" data-hi="Weixin" bindtap="tapName"> Click me! </view>
  • 在相应的Page定义中写上相应的事件处理函数,参数是event。
Page({
  tapName: function(event) {
    console.log(event)
  }
})

事件分类

事件分为冒泡事件和非冒泡事件:

  1. 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
  2. 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

WXML的冒泡事件列表:

类型 触发条件 最低版本
touchstart 手指触摸动作开始
touchmove 手指触摸后移动
touchcancel 手指触摸动作被打断,如来电提醒,弹窗
touchend 手指触摸动作结束
tap 手指触摸后马上离开
longpress 手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发 1.5.0
longtap 手指触摸后,超过350ms再离开(推荐使用longpress事件代替)
transitionend 会在 WXSS transition 或 wx.createAnimation 动画结束后触发
animationstart 会在一个 WXSS animation 动画开始时触发
animationiteration 会在一个 WXSS animation 一次迭代结束时触发
animationend 会在一个 WXSS animation 动画完成时触发
touchforcechange 在支持 3D Touch 的 iPhone 设备,重按时会触发 1.9.90

绑定并阻止事件冒泡

bind 外,也可以用 catch 来绑定事件。与 bind 不同, catch 会阻止事件向上冒泡。

例如在下边这个例子中,点击 inner view 会先后调用handleTap3handleTap2(因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发handleTap2,点击 outer view 会触发handleTap1

<view id="outer" bindtap="handleTap1">
  outer view
  <view id="middle" catchtap="handleTap2">
    middle view
    <view id="inner" bindtap="handleTap3">
      inner view
    </view>
  </view>
</view>

实例

实现文本输入框和文本框数据同步;

如下 效果:

在这里插入图片描述

<input type="text" style="border:1px solid;padding:2px;margin:2px;" bindinput="handleInput" />
<text>文本框的值是:{{num}}</text>
data: {
	num:''   
},

/**
* input事件处理
* @param {*} e  事件源
*/
handleInput(e){
	console.log(e.detail.value);
	this.setData({
	  num:e.detail.value
	})
},

通过bindinput绑定input事件,通过事件源参数e获取文本输入框数据,最后通过setData方法,设置num值;

实例二

实现简单加计算器

如下效果:

在这里插入图片描述

eventTest.wxml代码:

<input type="number" model:value="{{numA}}" class="inputNumber"/>
<button>+</button>
<input type="number" model:value="{{numB}}" class="inputNumber"/>
<button bindtap="handleTap">=</button>
<input type="number" disabled value="{{total}}" class="inputNumber"/>

eventTest.wxss代码:

.inputNumber{
  border:1px solid gray;
  padding:2px;
  margin:1px 20px 1px 20px;
}

eventTest.js代码:

  /**
   * 页面的初始数据
   */
  data: {
      numA:'',
      numB:'',
      total:''
  },

  /**
   * 处理按钮点击事件
   * @param {} e 事件源
   */
  handleTap(e){
    console.log(e);
    console.log(this.data.numA);
    console.log(this.data.numB);
    this.setData({
      total:parseInt(this.data.numA)+parseInt(this.data.numB)
    })
  },

这里我们要用bindtap绑定按钮点击事件;input双向绑定 model:value ;

事件代码里设置total数据;

进阶,事件传参

<button bindtap="handleTap" data-action="=">=</button>
let action=e.currentTarget.dataset.action;
if(action=="="){
  this.setData({
	total:parseInt(this.data.numA)+parseInt(this.data.numB)
  })
}

在这里插入图片描述

通过data- 带参数;

事件里通过e.currentTarget.dataset获取参数值;

微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WXML:微信小程序版HTML 的相关文章

  • 用于解析和构建逻辑表达式的 Java 库

    我正在寻找一个 Java 开源库来解析和构建类似 SQL 的表达式 例如评估表达式的有效性 例如 a x or y and b z 另外我想要一个用于构建或扩展表达式的 API 就像是 Expression exp new Expressi
  • 如何在 IDEA Intellij 上使用 Spring-boot 自动重新加载

    我写了一个基于Spring boot tomcat freemarker的项目 我运行成功 但是每当我修改一些模板和java类时 我必须重新启动服务器或使用Intellij上的 重新加载更改的类 菜单才能使更改生效 浪费很多时间 然后我尝试
  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 将构造函数作为参数传递给方法

    我是java新手 开始研究构造函数 我看到一些构造函数作为参数传递给方法的示例 请告诉我当构造函数作为参数传递给方法时会发生什么 或者建议我一些链接 我可以在其中获得有关使用构造函数的足够知识 根据您需要传递构造函数的目的 您可以考虑传递供
  • 将 MouseListener 添加到面板

    我正在尝试将鼠标操作添加到我的面板中 这就是程序应该做的事情 编写一个程序 允许用户通过按三下鼠标来指定一个三角形 第一次按下鼠标后 画一个小点 第二次按下鼠标后 绘制一条连接前两个点的线 第三次按下鼠标后 绘制整个三角形 第四次按下鼠标会
  • 在 Java 正则表达式中获取多个模式的重叠匹配

    我有同样的问题这个链接 https stackoverflow com questions 18751486 matching one string multiple times using regex in java 但有多种模式 我的正
  • 在 Java 中使用 Batik 检查和删除 SVG 中的属性

    这个问题基本上说明了一切 如何检查 SVG 是否具有 viewBox 属性 我正在使用蜡染库 我需要这个 因为我需要 至少 通知用户有一个 viewBox 属性 我可以删除它吗 使用 org w3c dom 类 您可以按照以下方式做一些事情
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 使类只能从特定类实例化

    假设我有 3 节课class1 class2 and class3 我怎样才能拥有它class1只能通过实例化class2 class1 object new class1 但不是 class3 或任何其他类 我认为它应该与修饰符一起使用
  • 重写 getPreferredSize() 会破坏 LSP

    我总是在这个压倒一切的网站上看到建议getPreferredSize 而不是使用setPreferredSize 例如 如前面的线程所示 对于固定大小的组件 使用重写 getPreferredSize 而不是使用 setPreferredS
  • 记录共享和映射的诊断上下文

    据我所知 其他人做了什么来解决 Commons Logging 项目 针对 NET 和 Java 不支持映射或嵌套诊断上下文这一事实 执行摘要 我们选择直接使用实现者日志框架 在我们的例子中为 log4j 长答案 您是否需要一个抽象日志框架
  • JavaFX使节点覆盖父节点边框颜色

    我有一个如下所示的节点 仅使用 css 我希望标签覆盖其父边框颜色 因此标签下方的边框颜色部分变得不可见 我用来制作这个边框的CSS代码 fx border color black fx border width 3 fx border r
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 在尝试使用 GPS 之前如何检查 GPS 是否已启用

    我有以下代码 但效果不好 因为有时 GPS 需要很长时间 我该如何执行以下操作 检查GPS是否启用 如果启用了 GPS 请使用 GPS 否则请使用网络提供商 如果 GPS 时间超过 30 秒 请使用网络 我可以使用时间或 Thread sl
  • 正确签名的 JNLP 应用程序无法在 Java 7 中运行

    我有一个 JNLP 应用程序 由于证书过期需要更新 我有一个经过 CA 验证的新证书 我已将新证书导入到我的密钥库中 我已导入完整的证书链 我的构建文件对构建中的 jar 进行签名和时间戳
  • 在带有 Protocol Buffers 的项目中使用 Proguard 有什么特点?

    我有一个使用 Google Protocol Buffers 的项目 一旦我尝试用 ProGuard 对其进行混淆 似乎 protobuf 会导致问题 我将所有自己的类打包成mybuildedclasses jar 谷歌代码被打包成prot
  • JUNIT 测试 void 方法

    我有一个充满 void 方法的 java 类 我想进行一些单元测试以获得最大的代码覆盖率 例如我有这个方法 protected static void checkifValidElements int arg1 int arg2 metho
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 为什么java.lang.Cloneable不重写java.lang.Object中的clone()方法?

    Java 规范java lang Cloneable接口将自身定义为表示扩展它的任何对象也实现了clone 休眠的方法java lang Object 具体来说 它说 一个类实现了Cloneable接口来指示java lang Object
  • Errors/BindingResult 参数应在模型属性、@RequestBody 或 @RequestPart 参数之后立即声明

    我通过剖析示例应用程序来自学 Spring 然后到处添加代码来测试我在剖析过程中开发的理论 在测试添加到 Spring 应用程序中的一些代码时 我收到以下错误消息 An Errors BindingResult argument is ex

随机推荐

  • 如何在 Ubuntu 22.04 中创建 SFTP 用户(无 Shell 访问)

    SFTP 是一种允许通过网络安全传输文件的协议 它经常被企业和个人用来传输敏感数据 SFTP 与 FTP 类似 但使用不同的协议进行通信 SFTP 比 FTP 更安全 通常与 SSH Secure Shell 结合使用以提供更高级别的安全性
  • 如何在 Debian 8 上安装和配置 Squid Proxy

    Squid 是类 Unix 操作系统上流行的代理服务器 它还用于网页过滤 它广泛用于通过缓存重复数据来提高 Web 服务器速度 本教程帮助您在 Debian 8 Jessie 系统上安装 Squid 代理服务器 还提供代理服务器的基本配置详
  • 从 Linux 文件中删除具有匹配模式的行

    操作文件是掌握 Linux 的基本部分 了解如何删除与特定模式匹配的行尤其有用 这可以使用多种命令行工具来实现 例如 grep sed 和 awk 在本文中 我们将探讨如何使用这些工具从 Linux 文件中查找和删除与特定模式匹配的行 开始
  • ffmpeg:加载共享库时出错:libavdevice.so.55:无法打开共享对象文件:没有这样的文件或目录

    Error 在 CentOS 6 5 服务器上安装 ffmpeg 后 我遇到以下错误 ffmpeg error while loading shared libraries libavdevice so 55 cannot open sha
  • 如何在 Debian 8 上安装 PHP(7.2、7.1 和 5.6)

    PHP 7 2 是可供安装的最新稳定版本 本教程将帮助您在系统上安装多个 PHP 版本 现在按照本教程在 Debian 8 Jessie 上安装 PHP 先决条件 使用 shell 访问登录到您的 Debian 8 系统 对于远程系统 使用
  • 如何在 Windows 批处理脚本中添加睡眠/等待

    您可以使用timeout命令等待命令提示符或批处理脚本指定的时间 时间定义为Seconds 例如等待5秒使用 使用 T选项 c gt timeout T 5 您还可以直接指定秒 例如 c gt timeout 5 上述命令将在按任意键时中断
  • 如何在 CentOS 7 上安装 Apache Maven

    Apache Maven 是一个免费的开源项目管理和理解工具 主要用于 Java 项目 Maven 使用项目对象模型 POM 它本质上是一个 XML 文件 其中包含有关项目 配置详细信息 项目依赖项等的信息 在本教程中 我们将向您展示在 C
  • 如何在 CentOS 8 上安装和配置 ownCloud

    ownCloud是一个用于管理和共享文件的开源 自托管云平台 它可以用作 Dropbox Microsoft OneDrive 和 Google Drive 的替代品 ownCloud 可通过应用程序进行扩展 并拥有适用于所有主要平台的桌面
  • 如何在 Ubuntu 18.04 上安装 VMware Workstation Player

    VMware是一个成熟稳定的虚拟化解决方案 允许您在一台机器上运行多个独立的操作系统 借助 VMware Workstation Player 您可以创建并运行自己的虚拟机 并评估由许多软件供应商提供的作为虚拟设备分发的软件VMware 解
  • 如何在 CentOS 7 上安装 Pip

    Pip 是一个包管理系统 可简化用 Python 编写的软件包 例如 Python 包索引 PyPI 中的软件包 的安装和管理 CentOS 7 上默认不安装 Pip 但安装非常简单 在本教程中 我们将逐步完成安装 Python 所需的步骤
  • 如何设置自动 Odoo 备份

    在本教程中 我们将引导您完成创建 Odoo 数据库的自动每日备份的过程 Odoo 是最流行的开源 ERP 系统 用 Python 编写 并使用 PostgreSQL 作为数据库后端 Odoo 将其数据存储在 PostgreSQL 数据库中
  • 如何在 Ubuntu 18.04 上安装和配置 Nagios

    Nagios 是最流行的开源监控系统之一 Nagios 保留整个 IT 基础设施的清单 并确保您的网络 服务器 应用程序 服务和流程正常运行 如果发生故障或性能不佳 Nagios 将通过各种方法发送通知警报 本教程将指导您完成在 Ubunt
  • 如何在 Debian 9 上设置 OpenVPN 服务器

    无论您是想在连接不可信的公共 Wi Fi 网络时安全可靠地访问互联网 绕过地理限制内容还是允许您的同事在远程工作时安全地连接到您的公司网络 使用 VPN 都是最佳解决方案 VPN 允许您连接到远程 VPN 服务器 使您的连接加密且安全 并通
  • 如何使用 Linux 命令行删除文件和目录

    本教程将向您展示如何使用rm unlink and rmdirLinux 中删除文件和目录的命令 如何删除文件 要从命令行删除 或删除 Linux 中的文件 请使用rm 删除 或unlink命令 The unlink命令允许您仅删除单个文件
  • Linux 中的 id 命令

    id是一个命令行实用程序 可以打印真实有效的用户和组 ID 使用id命令 语法为id命令如下 id OPTIONS USERNAME 如果省略用户名 则id命令显示有关当前登录用户的信息 当没有任何选项调用时 id打印真实用户 ID uid
  • 如何在 Debian 9 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • 如何在 Debian 9 上安装 PostgreSQL

    PostgreSQL 通常简称为 Postgres 是一个开源通用对象关系数据库管理系统 PostgreSQL 拥有许多高级功能 例如在线备份 时间点恢复 嵌套事务 SQL 和 JSON 查询 多版本并发控制 MVCC 异步复制等 在本教程
  • 如何在Linux中创建用户(useradd命令)

    Linux 是一个多用户系统 这意味着多个人可以同时与同一个系统交互 作为系统管理员 您有责任通过创建和管理系统的用户和组来管理系统的用户和组 删除用户并将它们分配给不同的groups 在本文中 我们将讨论如何使用创建新用户帐户userad
  • python采集信息+Python预处理+tableau绘制可视化大屏

    制作完成的效果 注 这个图绘制的右上角违和感较高 所以各位小伙伴绘制时要注意不要使用这种大块的图形 绘制一些可以设置背景色为透明的哪一种 最后一张图的话设计的是1920 1080的大小 太大了 所以录制的时候并没有完全录制上 现在制作可视化
  • WXML:微信小程序版HTML

    完整微信小程序 Java后端 技术贴目录清单页面 必看 WXML WeiXin Markup Language 是框架设计的一套标签语言 结合基础组件 事件系统 可以构建出页面的结构 3 7 1 标签与属性 常用基础标签text view