【Codelab】如此简单!一文带你学会 15 个 HarmonyOS JS 组件

news2024/12/28 4:27:09

 🧑‍🎓 个人主页:《爱蹦跶的大A阿》

🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》

​ 

目录

✨ 前言

工程代码的结构

 ​编辑

页面构建及组件使用详解

homepage代码文件

商品陈列页面

01搜索框组件(search)

02页签容器(tabs)

03 列表组件(List)

04 图片组件(image)

购物车页面

05 分隔器组件(divider)

06 交互式组件(input)

我的信息页面

shoppingDetailsPage 代码文件

商品详情页面

07 滑动容器(swiper)

08 跑马灯组件(marquee)

09 自定义弹窗容器(dialog)

10 自定义滑动选择器(picker)

11 菜单(menu)

12 评分条组件(rating)

viewChart 代码文件

商品数据分析页面

14 图表组件(chart)

15 按钮组件(button)

✨ 结语    


✨ 前言

        HarmonyOS 支持 Java UI 开发及 JS UI 开发,之前我们已经介绍了由 Java 常用组件开发
出来的新闻详情页面,大家可以查看相关内容:
【Codelab】超简单!实现新闻详情页面展示,原来只需这几类布局
        本期就让我们从一个简易的 HarmonyOS 购物应用入手,通过 5 个可视页面来为大家介绍
15 个 JS 常用组件,看看 HarmonyOS 是如何通过多种组件,帮助开发者减少开发量,让
开发者只需关注实现逻辑的。事不宜迟,我们马上开始。
【请注意】 本 Demo 只为展现多种 JS 组件用法,购物应用仅为场景演示,并非完整应用,
欢迎各位开发者根据自己的业务场景进行完善哦~

        首先来看一下本 Demo 中涉及的 15 个组件,包括:搜索框组件(search)、页签容器组
件(tabs)、列表组件(list)、图片组件(image)、分隔器组件(divider)、交互式组
件(input)、滑动容器(swiper)、跑马灯组件(marquee)、自定义弹窗容器(dialog)、
滑动选择器组件(picker)、评分条组件(rating)、进度条组件(progress)、菜单组件
(menu)、按钮组件(button)和图表组件(chart)。
        再来看一下涉及的 5 个可视页面,分别为商品陈列页面、购物车页面、我的信息页面,商
品详情页面,商品数据分析页面。
我们用一个表格来让大家一目了然:
        在正式开始敲代码之前,开发者们需要先下载安装 Huawei DevEco Studio,如果对于这个
流程不甚熟悉,可以参照官网的教程操作。

 Huawei DevEco Studio 安装指南: Huawei DevEco Studio

请注意,本次 Codelab 针对的是步骤拆解和重点讲解,限于篇幅原因不会展示完整代码,  

工程代码的结构

先让我们来了解一下工程代码的结构,这里我们提取几个重要信息跟大家说明一下:
  • entry/src/main/js/default/common 文件夹存放一些公共的资源,本次的图片内容皆存放在此。
  • entry/src/main/js/default/pages 文件夹存放 HarmonyOS JS 的代码文件,包含 css、hml、js 三类文件,这里我们创建了 homepage、shoppingDetailsPage、viewsChart。
  • entry/src/main/config.json:配置文件

 

页面构建及组件使用详解

接下来,我们就可以编写csshmljs代码了。

        我们先来明确一下5 个可视页面的逻辑。 Demo 从主应用界面( Demo 直接展现的页面)
菜单栏可划分为三个可视页面,分别为商品陈列页面、购物车页面、我的信息页面,这三个
可视页面的构建都在 homepage 中,当用户点击商品陈列页面中的商品可跳转到商品详情
页(为了方便演示均采用同一商品详情页),该可视页面在 shoppingDetailsPage 中实现。
此外,由商品详情页中的某个入口可跳转到商品数据分析页面,该页面在 viewChart 中编
写。
        下面我们将通过组件代码结合页面实现的部分,来为大家展示关键代码部分。

homepage代码文件

         在本示例中,商品陈列页面、购物车页面、我的信息页面均在homepage代码文件中完成,

每个可视页面均有不同的组件展现,下面我们来具体看一下。
商品陈列页面
        在此可视页面中,用户可以通过搜索框搜索,或者直接在页面内浏览推荐商品。如果想要了
解某个商品的详细信息,可以点击进入商品详情页查看。
这里我们将会用到:搜索框组件( search )、页签容器组件( tabs )、列表组件( List )、
图片组件( image
01搜索框组件(search
搜索框组件,用于提供用户搜索内容的输入区域。
官网链接: Harmony Developer
        在本示例中,search 组件中的 hint 属性囊括了搜索提示文字“寻找宝贝、店铺”, value
用于搜索框搜索文本值,这里是一个固定值——手机, focusable 确定当前组件是否可以获
取焦点,本例中设置为 true ,可以实现用户点击时弹出,当输入框内输入的值发生变化时,
会触发 change 事件, submit 实现页面底部出现“搜索词 + 正在搜索中…”文字字样。
代码和图片示例如下:
<search hint="{{pageWord.searchKeyWord}}" value="{{pageWord.searchValue}}" 
focusable="true" @submit="submitColumn">
</search> 

官网组件UI示例代码:

<!-- xxx.hml-->
<div class="container">
  <text style="margin-left: -7px;">
    <span>Enter text and then touch and hold what you've entered</span>
  </text>
  <search hint="Please enter the search content"  searchbutton="search" onsearch="search" onchange="change" ontranslate="translate" onshare="share" 
  onsubmit="submit">
  </search>
</div>
/* xxx.css */
.container {
  width: 100%;
  height: 100%;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background-color: #F1F3F5;
}
text{
  width: 100%;
  font-size: 25px;
  text-align: center;
  margin-bottom: 100px;
}
// index.js
import promptAction from '@ohos.promptAction'
export default {
  search(e){
    promptAction.showToast({
      message:  e.value,
      duration: 3000,
    });
  },
  translate(e){
    promptAction.showToast({
      message:  e.value,
      duration: 3000,
    });
  },
  share(e){
    promptAction.showToast({
      message:  e.value,
      duration: 3000,
    });
  },
  change(e){
    promptAction.showToast({
      message:  e.value,
      duration: 3000,
    });
  },
  submit(e){
    promptAction.showToast({
      message: 'submit',
      duration: 3000,
    });
  }
}

02页签容器(tabs
tabs 是一个 tab 页签容器, tab-bar tab-content 均为其子组件,其中前者用于展示 tab
的标签区。后者用于展示 tab 的内容区。

 

官网链接: Harmony Developer Tabs
        在本示例中,搜索框下方“热销单品”、“精品推荐”、“智慧生活”、“年货节”等就用
到了页签容器组件,组件中的 index 代表激活态,vertical 代表内容排列方式,false 为上
下 true 为左右,这里采用的是上下,当用户点击或滑动标签时会触发 change 事件,标签
栏下方的内容会根据标签的变化而变化,当前的标签栏会显示红色,这样一个简单美观的标
签栏就构造好啦。
        而下面使用到 tabs 的子组件 tabs-bar 和 tab-content。tabs-bar 中设置该组件的排列方
式为横向排列,tabs-content 用于展示 tab 的内容区,其中的 scrollable,用于实现滑动
切换页签。
        当然,开发者可以根据需要改变 tabs 页签的页面内容、逻辑以及样式。
代码和图片示例如下:
<tabs class="tabs" index="0" vertical="false" onchange="change">
	<tab-bar class="tab-bar" mode="fixed">
		<text class="tab-text" for="{{ item in titileList}}">{{ item }}
		</text>
	</tab-bar>
	<tab-content class="tabcontent" scrollable="true">
		<div class="item-content" for="{{ item in contentList}}">
			<list class="todo-wraper">
				<list-item for="{{lists}}">
					<div class="margin10" @click="detailPage">
						<div class="todo-total">
							<text class="todo-title">
								{{$item.title}}
							</text>
							<text class="todo-content">{{$item.content}}
							</text>
							<text class="todo-price">
								<span>¥
								</span>
								<span>{{$item.price}}
								</span>
							</text>
						</div>
						<div class="width30">
							<image src="{{$item.imgSrc}}" class="container-home-image">
							</image>
						</div>
					</div>
				</list-item>
			</list>
		</div>
	</tab-content>
</tabs>

03 列表组件(List)
        List,即列表,包含一系列相同宽度的列表项,适合连续、多行呈现同类数据,例如图片和
文本。list-item 是 list 的子组件,用来展示列表具体 item。
官网链接:Harmony Developer List

 

        在本示例中,商品页面宽度高度整齐的排列,就依托于列表组件在.hml 中声明以及在.css
中进行样式设置。
部分代码和图片示例如下:
<list class="todo-wraper">
	<list-item for="{{lists}}">
		<div @click="detailPage">
			<div class="todo-total">
				<text class="todo-title">
					{{$item.title}}
				</text>
				<text class="todo-content">{{$item.content}}
				</text>
				<text class="todo-price">
					<span>
						¥
					</span>
					<span>
						{{$item.price}}
					</span>
				</text>
			</div>
			<div class="width30">
				<image src="{{$item.imgSrc}}">
				</image>
			</div>
		</div>
	</list-item>
</list>

04 图片组件(image)
image,图片组件,在开发应用中,也是比较常见的一个组件,用来渲染展示图片。
官网链接:Harmony Developer image

        在本示例中,商品的图片展示就是利用了图片组件来完成,其中 src 中是图片的路径。部分代码和图片示例如下:

<image src="{{$item.imgSrc}}" class="container-home-image"></image>

 

购物车页面

        购物车页面让用户可以把选中的商品加入其中,并在其中选择想要的商品用于结算。在本例
中为了便于大家理解,购物车中的商品已经锁定。这里我们将会用到分隔器组件(divider)
和交互式组件(input)。
05 分隔器组件(divider
        分隔器组件(divider)用于分隔不同内容块/内容元素,可用于列表或界面布局。
        官网链接:Harmony Developer Divider

 

        在本示例中,多次使用到分隔器组件(divider),在这个页面中,我们仅做样式变化,但
divider 还可以使用 vertical 属性实现组件见的分割,比如在购物车页面中,我们使用该分
割器把购物车的商品进行分割,用户看起来也美观一些。
该组件使用所在的购物车页面代码及图片如下:
<divider class="dialog-divider"></divider>

06 交互式组件(input
        交互式组件(input)包括单选框,多选框,按钮和单行文本输入框,在本例中用于购物车
产品的选择。
        官网链接:Harmony Developer Input
        在本 Demo 中,我们多次用到交互式组件。其中,在购物车页面中,input 定义为多选框,
用户可以选择自己喜欢的一个或多个商品进行结算,type="checkbox"类型定义为多选框
value 是 input 组件的 value 值,在此地方是商品的价格 @change,当多选框勾选状态发
生变化时触发该事件。
        代码及图片如下:
<input type="checkbox" value="{{$item.price}}" @change="addShopping"></input>

 

 

我的信息页面

        我的信息页面布局,主要使用的是图片组件(image),用来呈现页面中的图标,使用方法与前面类似,这里就不多说。直接上代码和示例图片:
<div>
	<text class="container-my-deals-text">{{pageWord.myDeals}}</text>
	<div class="container-my-deals-div">
		<div class="container-my-deals-div-div" for="{{transaction}}">
			<image src="{{$item.src}}" class="container-my-image"></image>
			<text class="container-my-text">{{$item.title}}{{$item.num}}</text>
		</div>
	</div>
</div>

        完成了上述三个可视页面的开发,我们接下来要开发商品详情页面。用户在商品陈列页面中
点击任意商品即可跳转到该页面,此跳转动作在 homepage 的.js 文件中实现。由于不属于组件内容,这里只简单这里只简单显示页面跳转的代码:
detailPage() { 
 router.push({ 
 }) 
},

shoppingDetailsPage 代码文件

在本示例中,shoppingDetailsPage 代码文件主要包含商品详情页面的构建。

商品详情页面

        商品详情页面将会展示商品更加详细的信息,包括头部的滑动图片、价格、收货地址选择等。 涉及到的组件包括:滑动容器(swiper)、跑马灯组件(marquee)、自定义弹窗容器(dialog)、 滑动选择器(picker)、评分条(rating)、进度条组件(progress)和菜单组件(menu), 下面我们来具体看一下。
07 滑动容器(swiper
        滑动容器,用户可以在 swiper 组件上进行滑动,用户可以左右切换图片,或者等待页面 3s
自动滑动一次。
        官网链接:Harmony Developer Swiper

 

        在本示例中,通过图片轮播图的形式对商品图片进行展示。其中,class="swiper"是构建
swiper 的样式,id 表示"swiper"是该组件的唯一标识,index 显示当前容器的第几张图片,
在本例中默认是从 0 开始,autoplay="true"表示开启图片自动循环播放,interval="3000"
是每隔 3S 切换一次图片,indicator="true"启用导航点指示器,loop="true"开启循环轮
播。digital="false",关闭数字导航点,当开发者以往显示数字的时候,就可以设置成 true。
代码及图片示例如下:
<swiper class="swiper" id="swiper" index="0" autoplay="true" interval="3000" indicator="true" loop="true"
	digital="false">
	<div for="{{ item in swiperList }}">
		<image src="/common/computer/computer{{item}}.png"></image>
	</div>
</swiper>

08 跑马灯组件(marquee
展示一段单行滚动的文字。
官网链接:Harmony Developer marquee
        在本示例中,该跑马灯组件是用于展示一段文字从左往右无限循环滚动。其中 id 是跑马灯
组件的唯一标识。scrollamount 跑马灯每次滚动时移动的最大长度,开发者可以根据实际
情况给予长度。当 loop=-1 的时候,表示连续滚动。direction 是设置跑马灯的文字滚动方
向。
        代码和图片示例如下:
<marquee id="customMarquee" scrollamount="{{scrollAmount}}" loop="{{loop}}"direction="{{marqueeDir}}" @bounce="onMarqueeBounce" @start="onMarqueeStart" @finish="onMarqueeFinish"> 
 {{pageInfo.marqueeCustomData}} 
</marquee>

09 自定义弹窗容器(dialog)
        dialog,自定义弹窗容器,在本例中调出省市级选择和时间选择。
        官网链接:Harmony Developer dialog
        在开发此应用中,多次用到自定义弹窗容器( dialog ),开发者可以通过
this.$element('id').show(); 调 起 dialog 弹 窗, 通 过 this.$element('id').close();关闭
dialog 弹窗,id 是 dialog 组件的唯一标识,定义在 dialog 组件内,具体的详细页面开发
者可以根据需要在 dialog 中进行编写代码。
        代码与图片示例与下面滑动选择器(picker)合并展示。
10 自定义滑动选择器(picker)
        滑动选择器(picker),滑动选择器组件,类型支持普通选择器,日期选择器,时间选择器,时间日期选择器,多列文本选择器。
         官网链接:Harmony Developer picker

         在本例中使用到 dialog 自定义弹窗容器和滑动选择器(picker),点击选择会弹出 dialog,

页面会有时间选择器和省市级联选择器。 用户在弹出的时间选择器上选择日期,点击确定,页面上的数据也会同时改变。省市级联选 择器,同理。其中日期选择器:type="date"。省市级联选择器:type="multi-text"我们选择多列文本选择器。@columnchange 是当多列文本选择器中某一列的值改变时会触发此事件,columns 是设置多列文本选择器的列数。range 是设置多列文本选择器的选择项。value 是设置多列文本选择器的值,即页面上显示的默认值,@change 当用户选择的值点击确认按钮时触发该事件。
        代码与图片如下(这里仅展示时间选择图片)展示如下:
<dialog id="simpledialog">
	<div>
		<div>
			<div class="container-margin-left-comm">
				<image src="/common/computer/computer1.png" class="dialog-div-titleimage">
				</image>
			</div>
			<div class="dialog-flex-justify">
				<text class="dialog-divs-text1">
					{{pageInfo.annualPrice}}
				</text>
				<text class="dialog-divs-text2">
					{{pageInfo.inventory}}
				</text>
			</div>

			<image src="/common/computer/icon-close.png" class="dialog-divs-icon-close" @click="cancelSchedule">
			</image>
		</div>
		<div class="dialog-div-select">
			<div>
				<text class="dialog-div-select-text">
					{{pageInfo.selectRewardTime}}
				</text>
				<div class="dialog-div-select-picker">
					<picker type="date" selected="{{ newDate }}" hours="24" value="{{ newDate}}" @change="changeDate"
						@cancel="cancelDate">
					</picker>
				</div>
			</div>
			<div>
				<text class="dialog-div-select-text">
					{{pageInfo.selectRewardCity}}
				</text>
				<div class="dialog-div-select-picker">
					<picker type="multi-text" @columnchange="columnTextData" columns="3" range="{{cityList}}"
						value="{{selectCityList}}" @change="changeCity">
					</picker>
				</div>
			</div>
		</div>
		<div class="dialog-div-bottom" @click="buy">
			<text>
				{{pageInfo.nowSell}}
			</text>
		</div>
	</div>
</dialog>

11 菜单(menu
        菜单(menu),提供菜单组件,作为临时性弹出窗口,用于展示用户可执行的操作。
        官网链接:Harmony Developer Menu
        在本示例中,该菜单组件展示四个菜单内容分别为:评分、分享、浏览量、退出。当用户点
击任意菜单内容,都会执行对应的事件逻辑。其中 id 是菜单组件的唯一标识,可以通过
this.$element("id").show 调起菜单组件。@selected 是当选中菜单中某个值被点击选中时触发的事件。
代码如下:

 

<menu id="apiMenu" @selected="onMenuSelected">
	<option value="Item-1">
		{{pageInfo.scoring}}
	</option>
	<option value="Item-2">
		{{pageInfo.sharing}}
	</option>
	<option value="Item-3">
		{{pageInfo.views}}
	</option>
	<option value="Item-4">
		{{pageInfo.exit}}
	</option>
</menu>

右上角操作菜单(menu),点击即会出现一系列菜单选项可供选择,如图所示:

12 评分条组件(rating
评分条,相信开发者都不陌生。用户点击评分,页面会弹出带有评分弹框的 dialog 弹窗容器。
官网链接:Harmony Developer rating

 

        在本示例中,该评分条组件用于给软件评分,用户可以选择 0-5 颗星进行打分,其中可以
出现 0.5 的情况,例如:2.5 分、3.5 分。numstars 设置评分条的星级总数,默认为 5。rating
设置评分条当前评星数,即默认评星数。@change 当评分条的评星发生改变时触发该事件。
        代码及图片如下:

 

<rating numstars="5" rating="{{ratingNum}}" @change="ratingChange">
</rating>

13 进度条组件( progress
        
        进度条,在本 Demo 中,点击立即抢购会弹出一个含有进度条(progress)的弹框。
        官网链接:Harmony Developer progress

 

        在本示例中,该进度条组件用于商品抢购,当点击抢购按钮,系统会弹框显示进度条组件,
进度条从 0-100,当进度达到 100%,会提示抢购成功。type="scale-ring"设置成带刻度
圆环形进度条。percent 最初页面当前进度的值。secondarypercent 最初页面次级进度的
值。
        图片示例和代码如下:
<progress class="min-progress" type="scale-ring" percent="{{progress.percent}}" secondarypercent="{{progress.sec
ondarypercent}}">
</progress>

 

 

viewChart 代码文件

ViewChart 代码文件于构建商品数据分析页面。

商品数据分析页面

        商品数据分析页面在本 Demo 中仅为了呈现图表及按钮组件,通过商品详情页面右上角的
菜单中的“浏览量”中进入。涉及的组件包括 chart 组件和 button 组件。
14 图表组件(chart
        chart 组件为图表组件,用于呈现线形图、柱状图、量规图界面,本例中用的曲线图可以实
时动态更新数据。其中,type="line",把图表设置成线形图。ref="linechart", 用来指定
指向子元素或子组件的引用信息,该引用将注册到父组件的$refs 属性对象上,我们最常用
到的就是用 ref 对图表进行添加数据 this.$refs.linechart.append()。options 是设置图表
参数, datasets 设置图标的数据集合及其背景颜色。
        代码及图片示例如下:
<chart class="chart-data" type="line" ref="linechart" options="{{lineOps}}" 
datasets="{{lineData}}">
</chart>

15 按钮组件(button
        按钮组件最常用到的组件,该组件包括胶囊按钮、圆形按钮、文本按钮、弧形按钮、下载按
钮。这里就不赘述了。
官网链接:Harmony Developer button
        在开发此应用中,button 是和 chart 组件结合起来使用的,当我们触发第一个按钮的时候,
我们会加快 chart 组件刷新数据的速率,当我们触发第二个按钮的时候,我们会手动随机添
加一个数据。
代码及图片如下:

 

<button value="setInterval" onclick="autoAddData">
</button>
<button value="Add data" onclick="addData">
</button>

至此,我们已经通过一个简单的购物应用,体验了 JS 的 15 个常见组件。  

 

✨ 结语    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1368563.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业异常检测AnomalyGPT-Demo试跑

写在前面&#xff1a;如果你有大的cpu和gpu可以使用&#xff0c;直接根据官方的安装说明就可以&#xff0c;如果没有&#xff0c;可以点进来试着看一下我个人的安装经验。 一、试跑环境 NVIDIA4090显卡24g,cpu内存33G&#xff0c;交换空间8g,操作系统ubuntu22.04(试跑过程cpu…

FDA食品接触材料测试项目接触

1. FDA介绍&#xff1a; 美国食品和药品管理局&#xff08;FDA&#xff09;负责监管食品接触材料&#xff0c;此类材料必须经过检测&#xff0c;确保达到食品接触安全标准。美国联邦法规&#xff08;CFR&#xff09;第21章对此类材料作出具体规定&#xff0c;并将此类材料视…

spring boot 自动扫描Controller、Service、Component原理

项目里面为什么不加上ComponentScan("com.yym.*")注解&#xff0c;也能加载到子目录里面的Controller&#xff0c;Service&#xff0c;Component的bean呢&#xff1f; 启动类没有ComponentScan注解 SpringBootApplication public class BootStrap {public static v…

SpringMVC工作原理

Spring MVC 概述 SpringMVC是一个基于MVC模式的Web框架&#xff0c;它是Spring Framework的一部分。SpringMVC主要用于在Java Web应用程序中实现Web层&#xff0c;提供了一套与平台无关的、可重用的Web组件。 Spring MVC是Spring框架提供的一个实现webMVC设计模式的轻量级框架…

11.文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景&#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词&#xff0c;可能需要先科普一下关于文件系统的知识&#xff0c;但是这里我们并不浪费笔墨介绍这个概念&#xff0c;请大…

Python自动化测试面试题分享(含答案)

1、如果页面元素经常发生需求变化&#xff0c;你是如何做? 利用po模式&#xff0c;业务逻辑和测试逻辑相分离&#xff0c;当某个页面经常发生变化只需要维护页面&#xff0c;包括元素定位表达式&#xff0c;封装业务方法&#xff1b;不需要修改测试逻辑&#xff1b; 页面经常…

什么是SEO?SEO还存在吗?

曾经火热的seo&#xff0c;至今为啥很少人知道呢&#xff1f;为啥说seo是曾经的火热&#xff0c;这还得从那时百度的算法来说起了&#xff0c;曾经的百度可以通过seo优化自己的网站来获得百度爬虫的爬取&#xff0c;从而在百度获得更高的排名和权重。 现在我们打开百度随便搜索…

C语言中常用的字符串函数(strlen、sizeof、sscanf、sprintf、strcpy)

C语言中常用的字符串函数 文章目录 C语言中常用的字符串函数1 strlen函数2 sizeof函数2.1 sizeof介绍2.2 sizeof用法 3 sscanf函数3.1 sscanf介绍3.2 sscanf用法3.3 sscanf高级用法 4 sprintf函数4.1 背景4.2 sprintf用法 5 strcpy函数5.1 strcpy介绍5.1 strcpy用法 1 strlen函…

【C语言题解】 | 572. 另一棵树的子树

572. 另一棵树的子树 572. 另一棵树的子树代码 572. 另一棵树的子树 该题目需要判断一二叉树是否为另一二叉树的子树 像此类&#xff0c;就不算是root的子树 此题的思路为&#xff1a; 传入subRoot&#xff0c;与root相比较&#xff0c;判断二者是否相同 若与root不相同&#…

Java学习笔记-day02-Flowable基础API小结

1.创建ProcessEngine 使用编码创建 Testpublic void processEngine01(){// 获取 ProcessEngineConfiguration 对象ProcessEngineConfiguration configuration new StandaloneProcessEngineConfiguration();// 配置 相关的数据库的连接信息configuration.setJdbcDriver("…

网安入门12-文件上传(黑白名单,00截断)

黑名单绕过 Pass-03 有的时候后端限制了一些黑名单&#xff0c;比如过滤后缀名.php 我们就可以用黑名单里没有的后缀名进行绕过&#xff0c;例如&#xff1a; 大小写&#xff1a;.phP .pHp .AsPphp1 .php2 .php3 .php9 .phtml&#xff08;成功率较高&#xff09;特殊文件名绕…

TypeScript基础(三)扩展类型-接口和类型兼容性

✨ 专栏介绍 TypeScript是一种由微软开发的开源编程语言&#xff0c;它是JavaScript的超集&#xff0c;意味着任何有效的JavaScript代码都是有效的TypeScript代码。TypeScript通过添加静态类型和其他特性来增强JavaScript&#xff0c;使其更适合大型项目和团队开发。 在TypeS…

一文详解VScode 的远程开发

VS code登录服务器后进行编码和调试&#xff0c;VS code上的所有功能都可以使用&#xff0c;和在本地开发基本无区别。 一、配置免密远程登录 因为是要远程登录&#xff0c;那么需要通过使用ssh进行密钥对登录&#xff0c;这样每次登录服务器就可以不用输入密码了。 先来一句官…

【复习】人工智能 第2章 知识表示

一、 知识的概念 &#xff08;1&#xff09;知识&#xff1a;把有关信息关联在一起所形成的信息结构。 注&#xff1a;事实与规则的区别&#xff1a; 事实 —— “雪是白色的” 大自然自带的 规则 —— “如果头痛且流涕&#xff0c;则有可能患了感冒” 有点推理意味的 &…

服务器监控软件夜莺使用(二)

文章目录 一、采集器安装1. Categraf简介2. Categraf部署3. 测试服务器部署4. 系统监控插件5. 显卡监控插件6. 服务监控插件 二、监控仪表盘1. 机器列表2. 系统监控3. 服务监控 三、告警配置1. 邮件通知2. 告警规则3. 告警自愈 一、采集器安装 1. Categraf简介 Categraf 需要…

QTableView和QTableWidget之间的联系 和 区别?什么时候该用QTableView,什么时候该用QTableWidget?

参考&#xff1a;tableview与tablewidget的区别_wx64f5321a2db60的技术博客_51CTO博客 QTableView 和 QTableWidget 是 Qt 中用于显示和编辑表格数据的两个不同的部件&#xff0c;它们之间存在一些重要的区别&#xff1a; 一、主要区别是&#xff1a;QTableView可以使用自定义…

拥有影响力,项目经理才能如鱼得水

优秀的项目经理&#xff0c;不仅需要具备卓越的组织和协调能力&#xff0c;还需要拥有足够的影响力&#xff0c;以便能够推动项目的顺利进行。然而&#xff0c;现实情况是&#xff0c;许多项目经理并没有意识到影响力的重要性&#xff0c;导致他们在工作中事半功倍&#xff0c;…

中国建设银行 关于解决微软升级导致插入网银盾无法自动打开企业网银的通知

关于解决微软升级导致插入网银盾无法自动打开企业网银的通知 发布时间&#xff1a;2023-10-18 尊敬的客户&#xff1a; 近期Windows操作系统升级会禁止使用IE浏览器&#xff0c;可能会导致您在插入网银盾后无法自动弹出企业网银登录页面&#xff0c;您可以通过以下方式解决&…

一篇文章带您了解如何实现WordPress主题/插件本地化翻译

要实现WordPress主题和插件的本地化翻译就需要了解什么是国际化和本地化以及WordPress是如何实现国际化和本地化的。 什么是国际化&#xff1f; 国际化是为软件&#xff08;在本例中为 WordPress&#xff09;提供多语言支持的过程。国际化通常缩写为 i18n&#xff0c;其中 18 代…

Zoho Mail企业邮箱:跨境协作的利器,荣登Top榜单

在全球化的商业环境中&#xff0c;高效的协作工具对于企业及个人来说都至关重要。邮件因其自身规格正式、全球通用等特点&#xff0c;在跨境通信场景中仍然是最高频使用的工具之一。 Zoho Mail企业邮箱因邮件抵达率高&#xff0c;数据加密严&#xff0c;纯净无广告&#xff0c;…