web前端开发规范、HTML规范、JavaScript规范、style规范
MENU
- 前言
- 目的
- HTML规范
- 用法规范
- 注释规范
- CSS规范
- 用法规范
- 书写顺序
- 样式覆盖
- 注释规范
- JavaScript规范
- 用法规范
- 组件选项
- 注释规范
- 命名规范
- 目录命名
- 图片命名
- 文件命名
- 方法命名
- 样式命名
- 常用词
- 工程结构
- 目录构建
- 代码风格
- Git规范
- 分支说明
- 使用说明
- 相关连接
前言
目的
规范的目的是为了编写高质量的代码,提高代码质量和可读性,增强团队协作开发效率,统一编码风格。
文档说明
本文旨在统一团队前端代码规范,参考腾讯、百度、字节跳动等前端规范,结合团队日常业务需求以及团队日常开发过程中的总结而制定,如果发现错误敬请指正
HTML规范
用法规范
1、语义化标签
标签语义化,切忌清一色的div元素。列表可以使用ul标签和li标签,文字使用p标签,标题使用h*标签等。HTML5推出了语义化的标签,建议使用:section、aside、header、footer、article等HTML5布局标签。
2、自定义标签
标签元素名统一小写,不可大小写混合,有结尾标签的必须添加结尾标签相呼应。对于没有结尾标签的要在标签末尾加上“/”。
规范写法
<my-owner-components />
<my-owner-components></my-owner-components>
不友好写法
<myOwnerComponents />
<myOwnerComponents></myOwnerComponents>
3、多特性分行写
为提高可读性,组件应用时换行,按照ref、class、传入、传出顺序书写。
<scrollref="scrollWrap"class="home-scroll-warp":data="homeData":pullDownRefresh="true":pullUpLoad="true"@pullingDown="pullingDownGetNewData"@pullingUp="pullingUpGetMore"> </scroll>
4、使用表达式
在模版中使用表达式,复杂情况使用计算属性或函数
优雅写法
<template><div v-show="handleLimit(data)">测试数据</div>
</template>
export default {name: "Index",data() {return {};},methods: {/*** 显示判断* @param {Object} data 判断数据*/handleLimit(data) {return data.type !== "dir";},},
};
别扭写法
<div v-show="data.type !== 'dir' && dzqz && hasBtn && attrs.mode !== 'ended'">测试数据</div>
5、避免重复
避免过多重复代码,如果超过三行类似的代码,配置数据再循环遍历。
6、代码嵌套
根据元素嵌套规范,每个块状元素独立一行,内联元素可选。
规范写法
<div><h1></h1><p></p>
</div><p><span></span><span></span></p>
颠倒写法
<div><h1></h1><p></p>
</div><p><span></span><span></span>
</p>
推荐写法
<div><h1></h1><p></p>
</div><p><span></span><span></span>
</p>
7、活用v-show和v-if
v-show不会改变dom树,也就是说不会导致重排。
v-if会改变dom树,会导致重排。
注释规范
规范注释
<div><!-- test注释 --><div class="test">测试数据</div><!-- 组件注释 --><gd-custom-table ref="refTest"></gd-custom-table><!-- 其他注释 --><div>其他注释</div>
</div>
不友好注释
<div><div>测试数据</div><!-- 注释 -->
</div>
CSS规范
css部分,因为样式有原生写法和预处理写法scss/sass/less/stylus。所以情况比较多,也比较复杂,本文档统一使用scss。类名定义有多个单词时使用下划线区分,禁止使用横线连接,横线在Visual Studio Code编辑器中双击无法选中。
用法规范
1、避免
●避免使用标签选择器。因为在vue.js中,特别是在局部组件,使用标签选择器效率特别低,损耗性能,建议直接定义class;
●非特殊情况下,禁止使用id选择器定义样式。有JavaScript逻辑的情况除外;
●避免使用important选择器;
●避免大量的嵌套规则,控制在3级之内,对于超过4级的嵌套,考虑重写或新建子项;
●避免使用id选择器及全局标签选择器,防止污染全局样式。
2、推荐使用
●提取公用样式进assets文件的styles里,按模块/功能区分
|assets
|-- styles
| |-- common 放置公用样式,如重置,混合,复写element样式等
| |-- modules 放置模块样式
●推荐使用直接子选择器
/* 推荐 */
.jdc {
}.jdc li {
}.jdc li p {
}/* 不推荐 */
* {
}#jdc {
}.jdc div {
}
●使用scoped关键字,约束样式生效的范围
<style lang="scss" scoped>
.app_wrapper {
}
</style>
●使用变量
可复用属性尽量抽离为页面变量,易于统一维护。
<style lang="scss" scoped> // CSS .class_name {color: red;border-color: red; }// SCSS $color: red; .class_name {color: $color;border-color: $color; } </style>
●使用混合(mixin)
根据功能定义模块,然后在需要使用的地方通过@include调用,避免编码时重复输入代码段。
<style lang="scss" scoped> // CSS .jdc_1 {-webkit-border-radius: 5px;border-radius: 5px; } .jdc_2 {-webkit-border-radius: 10px;border-radius: 10px; }// SCSS @mixin radius($radius: 5px) {// 当前代码可写入公用样式库mixin文件中-webkit-border-radius: $radius;border-radius: $radius; } .jdc_1 {// 参数使用默认值@include radius; } .jdc_2 {@include radius(10px); } </style>
●样式原子化(强烈推荐使用,也是本文档使用的方式)
需要在assets文件夹的styles里新建文件:display.css、width.css、height.css、margin.css、padding.css、color.css、background.css、font.css、public.css等,如有其它需要可继续创建文件,比如border.css。public.css文件用来引入其它子文件,最终把public.css文件引入到项目全局即可,并且public.css文件中可以写一些公共的样式,例如
text-align: center;
等。
<style lang="scss" scoped>
// margin
.mlr_a {margin-left: auto;margin-right: auto;
}.m_6 {margin: 6px;
}.ml_6 {margin-left: 6px;
}.mr_6 {margin-right: 6px;
}.mt_6 {margin-top: 6px;
}.mb_6 {margin-bottom: 6px;
}// padding
// padding与margin类似
// ...// display
.d_f {display: flex;
}.d_g {display: grid;
}.fd_c {flex-direction: column;
}.jc_s {justify-content: start;
}.jc_e {justify-content: end;
}.jc_sa {justify-content: space-around;
}.jc_c {justify-content: center;
}.ai_c {align-items: center;
}// width
.w_100 {width: 100px;
}.w_100vh {width: 100vh;
}.w_100_ {width: 100%;
}// height
// height与width类似// font
.fs_18 {font-size: 18px;
}.fw_600 {font-weight: 600;
}.fw_700 {// 700等与boldfont-weight: 700;
}.fw_bold {font-weight: bold;
}// color
.color_af {color: #afafaf;
}.color_333 {color: #333333;
}.color_362589 {color: #362589;
}.color_rgb_255 {color: rgb(255, 255, 255);
}.color_rgb_12_33_76 {color: rgb(12, 33, 76);
}.color_rgba_12_33_76_5 {// rgba中的a为1时改为rgb或者不标注1// 标注1表示的是0.1color: rgb(12, 33, 76, 0.5);
}// background
// background与color类似
.b_333 {background: #333333;
}.bc_333 {background-color: #333333;
}
</style>
书写顺序
css属性书写顺序,先决定定位宽高显示大小,再做局部细节修饰。
推荐顺序,定位属性(或显示属性,display)=>宽高属性=>边距属性(margin,padding)=>字体,背景,颜色等,修饰属性的定义,这样定义为了更好的可读性,让别人只要看一眼就能在脑海中浮现最终显示的效果。
●布局定位属性:display/position/float/clear/visibility/overflow
●自身属性:width/height/margin/padding/border/background
●文本属性:color/font/text-decoration/text-align/vertical-align/white- space/break-word
●其他属性(css3):content/cursor/border-radius/box-shadow/text-shadow/background: linear-gradient.class_name {position: fixed;top: 100px;left: 0;right: 0;bottom: 0;display: block;width: 100%;height: 100%;margin: 10px;padding: 10px;font-size: 14px;color: #000;background-color: red;border-radius: 2px;line-height: 1.42; }
样式覆盖
组件内部需要覆盖UI框架样式,必须在最外层组件加类名。
<template><div class="input_area_container"><el-input class="name_input"></el-input></div> </template><style lang="scss" scoped> .input_area_container {.name_input {.el-input__inner {font-size: 16px;}} } </style>
注释规范
单行使用“// ”,双斜杠后面要加一个空格
多行使用 “/* 注释内容 */”,前后要有空格。// 注释内容 .pha-element {width: 20px;// 这里需要换行.pha-element-l {/* 这里是多行注释这elementUi原样式类*/color: blue;} }
JavaScript规范
用法规范
●在vue-cli脚手架使用框架自带的指向src开发目录的“@”符号引入文件资源;
●使用计算属性规避v-if和v-for用在一起;
●统一使用单引号;
●坚持单一原则,函数内仅做该函数应该做的,尽量避免通过传入标记控制不同行为;
●优先考虑三目运算符,但谨记不要写超过3层的三目运算符;
●对于无用代码必须及时删除,例如:一些调试的console语句、无用的弃用功能代码,如在开发分支可提交打印代码,但要注意打印格式;
●条件语句避免负面条件,特指调用某一函数;// 推荐 function isUserNotBlocked(user) {}// 不推荐 if (!isUserNotBlocked(user)) { }
●请求数据的方法,使用try…catch错误捕捉,注意执行回调。
●请求数据尽量使用async/await进行数据结构在使用,尽量少用then。/** * 接口请求 * @param req 接口api * @param params 参数 */ async handleList() {try {this.loading = true;let { result, total } = await getList(this.paramsQuery);this.list = result;this.total = total;} catch (error) {throw new Error(erroe);} finally {this.loading = false;} }
组件选项
根据官方的推荐按照以下定义顺序使用。
export default {// 这个名字推荐:大写字母开头驼峰法命名name: "ExampleName",// Props定义props: {},// 组件定义components: {},// 指令定义directives: {},// 混入Mixin定义mixins: [],data() {// Data定义return {// Data属性的每一个变量都需要在后面写注释说明用途,就像这样dataProps: "",};},// 计算属性定义computed: {},// 属性变化监听器watch: {},// 生命钩子函数,按照他们调用的顺序created() {},// 挂载到元素mounted() {},// 使用keep-alive包裹的组件激活触发的钩子函数activated() {},// 使用keep-alive包裹的组件离开时触发的钩子函数deactivated() {},// 组件方法定义methods: {// 公共方法的定义,可以提供外面使用handleFn() {},// 私有方法,下划线定义,仅供组件内使用。多单词,注意与系统名字冲突_handleFn() {},},
};
注释规范
函数/方法注释必须包含说明,有参数和返回值时必须使用注释标识,它的作者、 依赖关系和兼容性等信息。
1、单行注释,双斜线后应跟一个空格,且缩进与上下文的代码保持一致;禁止在行位注释,除非迫不得已,尽量在上一行添加注释
// 这是一个判断
if (condition) {
}
2、多行注释,一般用于注释难以理解的、可能存在错误的、逻辑强的代码,且缩进一致
/*** 数组求和* @param {Array} list 源数组* @returns 返回求和后的值*/
handleSum(list) {let sum = 0;sum = list;return sum;
}
3、函数注释,写明传入参数名称,类型,推荐完整注释以下格式
/**
* @Description 根据字典编码获取选项名称
* @Author lint
* @Date 2020-09-08
* @param {String} key 编码
* @param {String} val 值
* @returns {String} 字典名称
*/
handleDictText(key, val) {/*** @Description 加入购物车* @Author lint* @Date 2020-09-08* @param {Number} goodId 商品id* @param {Array<Number>} specs sku规格* @param {Number} amount 数量* @param {String} remarks 备注* @returns <Promise> 购物车信息*/apiProductAddCard = (goodId, specs, amount, remarks) => {return axios.post("***", { goodId, specs, amount, remarks });};const item = this.dictData[key].find((k) => k.dictKey === val);return item ? item.dictValue : "";
}
4、文件注释
/*** @Description: 文件名称* @Author: lint* @Date: 2020-09-08*/
5、命名要求
●变量的定义尽量使用let或cons,推荐使用let;
●基本类型的变量名尽量在名称后添加Val或Value,例如:let nameVal;
●引用数据类型尽量在变量名称后添加Obj或Arr或List,例如:let optionArr;
●函数或方法应该在名称前添加handle前缀,例如:handleList() {};
●接口请求API的命名在前面添加请求类型,例如:getList、postAdd、putUpdate、deleteItem等。请求类型要全部大写,例如:GET、POST、PUT、DELETE等。
命名规范
目录命名
按照小驼峰命名,首字母小写。
项目文件夹:projectName
样式文件夹:styles/test.css或style/demo.scss
脚本文件夹:js/test.js或demo.ts
图片命名
图片使用img,图标使用icon。
●img_功能/类型_编号
●icon_功能/类型_编号
文件命名
1、按照小驼峰命令,英文单词过长或超出2个以上,可缩略至前四位
// 业务统计
approvalStatistical// 缩略
approvalStat
2、有复数含义,采用复数命名
pages
componets
filters
mixins
images
3、存放images、styles、icons等静态资源,静态资源命名格式为小驼峰或下划线,文件名为小驼峰,图片、图标或svg可以使用下划线
4、组件进行目录划分,目录命名为小驼峰,公用组件加上gd前缀
|components
|-- gdCustomCheck
| |-- index.vue
|-- gdCustomTable
| |-- index.vue
方法命名
method方法命名不同于文件命名,尽量完整英文命名,语义表达需完整清楚。
1、按照小驼峰命名法,可使用常见动词约定
●can判断是否可执行某个动作,函数返回一个布尔值。true(可执行);false(不可执行)
●has判断是否含有某个值,函数返回一个布尔值。true(含有此值);false(不含有此值)
●is判断是否为某个值,函数返回一个布尔值。true(为某个值);false(不为某个值)
●get获取某个值,函数返回一个非布尔值
●set设置某个值,无返回值、返回是否设置成功或者返回链式对象load加载某些数据,无返回值或者返回是否加载完成的结果
2、语义化英文命名,仅组件内部使用方法前加上_(下划线)区分
export default {methods: {// 组件方法定义// 公共方法的定义,可以提供外面使用publicbFunction() {},// 私有方法,下划线定义,仅供组件内使用。多单词,注意与系统名字冲突_privateFunction() {},},
};
3、引入组件,首字母大写的驼峰法命名。推荐使用ES6的方式引入
import Article from "xxx";
import ArticleDetail from "xxx";
4、变量,使用驼峰式命名,优先使用let、const、避免使用var
let userName = "luffy";
const userInfo = {name: "luffy",
};
5、常量,字母全部大写,以下横线_划分
const Api = {// 获取事项分类ITEMS_OFONE_TYPE: "***",// 获取事项列表SOLUTION_LIST: "***",
};
样式命名
class命名以小写字母开头,小写字母、下划线(横线在Visual Studio Code编辑器中双击无法选中)和数字组成。不建议使用驼峰法命名class名称。
包裹层:.xx_wrap
列表:.xx_list
列表项:.xx_list_item
左边内容:.xx_left
中间内容:.xx_middle
右边内容:.xx_right
某个页面:.xx_page
某个盒子:.xx_box
常用词
1、常用动词
简写 | 说明 |
---|---|
Get/set | 取值/给值 |
Add/remove | 增加/移除 |
Show/hide | 显示/隐藏 |
view | 查看 |
browse | 浏览 |
edit | 修改 |
save | 保存 |
delete | 删除 |
find | 查询 |
undo | 撤销 |
redo | 重做 |
clean | 清除 |
index | 索引 |
observe | 观察 |
Send/receive | 发送/接收 |
Refresh/synchronize | 刷新/同步 |
2、常用缩写
数据类型/标签 | 简写后缀 |
---|---|
object | obj |
array | arr |
json | json |
function | fn |
message | msg |
button | btn |
工程结构
目录构建
|-- api 所有api接口
| |-- https 封装的公用请求方法,除非必要不可修改,影响全局
|-- assets 静态资源,images, icons, styles等
| |-- images 全局公用图片
| |-- icons 全局公用icons
| |-- styles 全局公用样式
|-- components 公用组件
| |-- base 基础组件,导航,按钮,标签等组件
| |-- business 业务组件,封装可复用的页面或功能组件
|-- constants 常量管理
|-- plugins 插件管理
|-- router 路由,统一管理
|-- store vuex, 统一管理
|-- utils 工具管理
| |-- utlis 公共 JS 工具函数
| |-- array 数组类工具函数
| |-- store 存储类工具函数
| |-- filters 过滤器工具函数
| |-- ...
|-- views 视图目录(所有业务逻辑的页面)
文件说明
1、views里每个模块文件夹,都建一个文件说明,说明该视图模块;
2、api文件内采用ts写法,其中加入类型推断model,写清接口参数及参数类型;
3、提交代码时候要把断点,打印等去除;
4、文件、变量命名要尽量与后端保持一致;
5、无特殊情况统一用以下插件/工具/库,如需引用其他库,统一放置plugins文件内,注意按需引入。
●elementUI框架
●sass/css预处理器
代码风格
Eslint是识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误,说白了就是用来检测代码风格的。在中大型项目中对维护项目的规范性、健壮性、可读性尤其有用。Vue CLI 3已经整合ESLint与著名的Airbnb JavaScript Style Guide,只要跟着Vue CLI 3的Wizard,我们也能轻易地将ESLint与Airbnb整合进Vue方案中。
1、依据以下三条原则,可以依据ESLint所有的配置项,定制出ESLint配置,原则上是对开发有益的都要开启
●能够帮助发现代码错误的规则,全部开启
●配置不应该依赖于某个具体项目,而应尽可能的合理
●帮助保持团队的代码风格统一,而不是限制开发体验
2、接入项目的方法
●在Visual Studio Code中安装Eslint和Prettier两个插件
●执行npm install husky lint-staged eslint eslint-plugin-vue
Git规范
目前按照我们正常开发的项目,master分支作为主干分支,及生产环境,多人协同开发时一定要按照分支规范去建立和提交分支。
分支说明
●master分支:主干分支,与线上正式版本保持一致
●dev分支:开发分支,始终与master分支保持一致
●feature分支:版本开发分支(多个)
●test分支:版本测试分支(多个,对应feature)
●release分支:预发布分支
●bug分支:用来修改bug的分支
使用说明
●多人在同一个分支上开发时,分支名称可按照版本号命名,注意记录版本号对应功能点;
●dev分支可提交打印说明,注意打印说明格式,其他分支不可提交;
●提交时尽量书写提交代码修改的地方或功能,不要提交无用信息。
相关连接
1、CSDN-前端开发规范详解
2、稀士掘金-前端代码规范 --代码规范篇
3、稀士掘金-前端开发规范V2022.3
相关文章:
web前端开发规范、HTML规范、JavaScript规范、style规范
MENU 前言目的 HTML规范用法规范注释规范 CSS规范用法规范书写顺序样式覆盖注释规范 JavaScript规范用法规范组件选项注释规范 命名规范目录命名图片命名文件命名方法命名样式命名常用词 工程结构目录构建代码风格 Git规范分支说明使用说明 相关连接 前言 目的 规范的目的是为…...
骨传导耳机会影响听力么?盘点骨传导耳机的好处与坏处都有哪些?
先说结论,使用骨传导耳机是不会影响听力的!并且由于骨传导耳机的特殊传声原理,相比于传统的入耳式耳机,骨传导耳机拥有更多的优点,下面带大家了解一下骨传导耳机的优点和缺点都有哪些。 一、骨传导耳机的优点是什么&a…...
前端与VR/AR:代码的魔法穿越
摘要: 前端开发者们,快戴上VR头盔,准备好进入未知的虚拟世界!本文将深度解析前端如何携手VR/AR技术,创造出更为奇妙的用户体验,同时以幽默的笔调诠释这场代码与虚拟现实的魔法邂逅。 引言 在前端的世界中…...
elment Loading 加载组件动态变更 text 值bug记录
先上效果图: 倒计时4分钟组件方法 // 倒计时 4分钟getSencond() {this.countDown 4分00秒this.interval setInterval(() > {this.maxTime--;let minutes Math.floor(this.maxTime / 60);let seconds Math.floor(this.maxTime % 60);minutes minutes < 10 ? 0 minu…...
Typora免费版安装教程(仅供学习)
目录 一、Typora简介二、Typora安装三、Typora补丁四、Typora使用体验五、总结 一、Typora简介 Typora是一款非常流行的Markdown编辑器,它能够将Markdown文本转化为漂亮的排版,并且支持实时预览。Typora具有简单易用的界面,使得用户可以轻松地…...
SSM项目实战-前端-添加分页控件-调正页面布局
1、Index.vue <template><div class"common-layout"><el-container><el-header><el-row><el-col :span"24"><el-button type"primary" plain click"toAdd">新增</el-button></el-…...
C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现
常用字符函数和字符串函数的了解和模拟实现 前言1. 字符分类函数2. 字符转换函数3. strlen的使用和模拟实现4. strcpy的使用和模拟实现5. strcat的使用和模拟实现6. strcmp的使用和模拟实现7. strncpy函数的使用8. strncat函数的使用9. strncmp函数的使用10. strstr的使用和模拟…...
nodejs+vue+elementui网上家电家用电器数码商城购物网站 多商家
基于vue.js的恒捷网上家电商城系统根据实际情况分为前后台两部分,前台部分主要是让用户购物使用的,包括用户的注册登录,查看公告,查看和搜索商品信息,根据分类定位不同类型的商品,将喜欢的商品加入购物车&a…...
32.768KHz时钟RTC晶振精度PPM值及频差计算
一个数字电路就像一所城市的交通,晶振的作用就是十字路口的信号灯,因此晶振的品质及其电路应用尤其关键。数字电路又像生命体,它的运行就像人身体里的血液流通,它不是由单一的某个器件或器件单元构成,而是由多个器件及…...
SQL Server 数据库,创建数据表
2.3表的基本概念 表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似,都是 按行和列的格式组织的,每行代表一条唯一的记录,每列代表记录中的一个字段.例如,在包含公 司员工信息的表中,每行…...
Vue3引入markdown编辑器--Bytemd
字节跳动开源了一款markdown编辑器,bytemd,项目地址:GitHub - bytedance/bytemd: ByteMD v1 repository 安装 npm i bytemd/vue-next 引入方式如下,再main.js中引入样式 import bytemd/dist/index.css 直接封装一个Markdown编…...
JS实现基数排序
基数排序(Radix Sort)作为一种非比较性的排序算法,以其独特的思想和高效的性能而受到广泛关注。本文将深入研究基数排序的原理、实现方式等。 什么是基数排序 公众号:Code程序人生,个人网站:https://creato…...
【蓝桥杯】二分查找
二分查找 题目描述 输入 n n n 个不超过 1 0 9 10^9 109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a 1 , a 2 , … , a n a_1,a_2,\dots,a_{n} a1,a2,…,an,然后进行 m m m 次询问。对于每次询问,给出一…...
大于2T磁盘划分并挂接
需要挂接9T多的磁盘做数据磁盘,记录下操作过程 1、使用fdisk -l识别到磁盘 # fdisk -l|grep 9.5 TiB Disk /dev/sdd: 9.5 TiB, 10453950398464 bytes, 20417871872 sectors Disk /dev/sdf: 9.5 TiB, 10453950398464 bytes, 20417871872 sectors Disk /dev/sdh: 9.…...
蓝桥杯每日一题2023.12.3
题目描述 1.移动距离 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题需要对行列的关系进行一定的探究,所求实际上为曼哈顿距离,只需要两个行列的绝对值想加即可,预处理使下标从0开始可以更加明确之间的关系,奇数行时这一行的数字需…...
Nacos源码解读04——服务发现
Nacos服务发现的方式 1.客户端获取 1.1:先是故障转移机制判断是否去本地文件中读取信息,读到则返回 1.2:再去本地服务列表读取信息(本地缓存),没读到则创建一个空的服务,然后立刻去nacos中读取更新 1.3:读到了就返回,同时开启定时…...
SAP系统邮件功能配置 SCOT <转载>
原文链接:https://zhuanlan.zhihu.com/p/71594578 相信SAP顾问或多或少都会接到用户要求SAP系统能够定时发送邮件的功能,定时将用户需要的信息已邮件的方式发送给固定的人员。 下面就来讲一下SAP发送邮件应该如何配置: 1、RZ10做配置&#…...
数据结构——二叉树(相关术语、性质、遍历过程)
遍历操作 二叉树的层次遍历-CSDN博客 二叉树的基本操作-CSDN博客 二叉树的先序遍历非递归实现-CSDN博客 后序遍历的非递归方式实现-CSDN博客 二叉树:已知先序中序求后序或者其他(秒解)-CSDN博客 因为之前发过一遍,我就不复制…...
详细学习Pyqt5的9种显示控件
Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图(Item View) 快速弄懂Pyqt5的4种项目部件(Item Widget) 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…...
SpringBoot+vue美食外卖点餐系统的研究与设计
目录 前言😃:一、项目简介二、技术选型三、系统功能架构四、功能实现商家端功能实现(1)商家端登录界面(2)工作台界面(3)数据统计界面(4)订单界面(…...
行业分析:轻轨行业发展现状及市场投资前景
轻轨是城市轨道建设的一种重要形式,也是当今世界上发展最为迅猛的轨道交通形式。轻轨的机车重量和载客量要比一般列车小,因此叫做“轻轨”。 城市轻轨具有运量大、速度快、污染小、能耗少、准点运行、安全性高等优点。城市轻轨与地下铁道、城市铁路及其…...
智安网络|语音识别技术:从历史到现状与未来展望
语音识别技术是一种将语音信号转化为可识别的文本或命令的技术,近年来得到了广泛应用和关注。 一. 语音识别的发展现状 1.历史发展 语音识别技术的起源可以追溯到20世纪50年代,但直到近年来取得了显著的突破和进展。随着计算机性能的提升和深度学习算法…...
揭秘预付费电表怎么无线收费——方便快捷收费
【摘要】针对目前市场上普遍以Ic卡作为售电介质的预付费售电系统存在的问题,介绍了一种新型的无线预付费售电系统及其构成,并给出了整个系统设计的完整方案。整个系统包括用户终端和电力管理系统端,它们之间通过双工通信可以将用户用电信息和…...
OpenCV-Python:图像卷积操作
目录 1.图像卷积定义 2.图像卷积实现步骤 3.卷积函数 4.卷积知识考点 5.代码操作及演示 1.图像卷积定义 图像卷积是图像处理中的一种常用操作,主要用于图像的平滑、锐化、边缘检测等任务。它可以通过滑动一个卷积核(也称为滤波器)在图像…...
创建Vue项目
安装node 官网: https://nodejs.org/en/download/ 安装的过程没有什么需要注意的,可以把安装路径调整一下。 使用以下命令查看 node 的版本 v20.10.0 ,验证是否安装成功。 node -v 创建Vue项目 在存放项目的目录下打开cmd,输入以…...
T-SQL的多表查询
前面讲述过的所有查询都是基于单个数据库表的查询。如果一个查询需要对多个表进行操作,就称为联接查询,联接查询的结果集或结果称为表之间的联接。 联接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征…...
适合学生备考的护眼台灯有哪些?五款公认优质台灯推荐
根据近两年的卫计委数据统计,我国的近视率全球第一。其中小学生平均近视率36%,初中平均近视率71.6%,高中生平均近视率81%。看到这些数据真让作为家长的我们触目惊心。 而这里面,先天的遗传近视并不多,很多的学生近视都…...
机器人学英语
我的prompt i want to you act as an english language teacher/asistant to help me study english, you could teach me in such a way: you ask me questions and i answer them, and you help me correct the grammer or word mistakes in my expression and polish my par…...
51综合程序03-DS1302时钟
文章目录 DS1302时钟芯片一、DS1302时钟芯片的工作原理1. 芯片特点2. 引脚说明3. 寄存器地址4. 读数据的时序图5. 写数据的时序图 二、综合实例LCD1602显示 DS1302时钟芯片 一、DS1302时钟芯片的工作原理 1. 芯片特点 实时计算年、月、日、时、分、秒、星期,直到2…...
redis的缓存击穿,缓存穿透,缓存雪崩
Redis是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多种数据结构,如字符串、哈希表、列表、集合和有序集合。此外,Redis还支持各种操作,如读取和写入数据、删除和更新数据等。 Redis的特点…...
如何用浏览器访问本地的wordpress/小程序怎么开发自己的小程序
链接:https://www.luogu.org/problemnew/show/P3919 分析 很明显我们可以用主席树来维护,所谓主席树就是可持久化线段树,能够查询历史版本而且可以实现修改操作,反正就是复制了一遍。其原理就是动态开点复制前驱版本,在…...
保定投递网站建设/百度推广账号注册流程
浏览器字体变得很小该如何恢复?有些用户不清楚自己操作了什么,结果网页字体变得非常小,那么该如何恢复网页字体的原来大小呢?下面给大家分享网页字体大小复原的操作方法。解决方法:1、打开ie浏览器,选择“I…...
包头住房与城乡建设局网站/百度seo排名优化公司推荐
C#概览 C#语言是微软于2000年发布,基于.NET Framewrok框架的、面向对象的高级语言。经过近十三年的发展,经历了5次大的升级,最新版本为C#5.0(对应于.NET Framework 4.5),下面是C#语言发展过程的简单性总结:C#版本.NET …...
重庆网站开发建设/seo网站推广是什么
我会持续分享一些编程和机器学习相关的心得或理解,感兴趣的可以关注下^-^!!!趣闻震惊:YOLO之父宣布退出CV界:出于道德考虑,不希望算法用于军事和隐私这意味着,经过多个版本的迭代,越来越好的yolo将不会迎来…...
wordpress文章文件/网页制作的基本步骤
医疗样品收集管市场的企业竞争态势 该报告涉及的主要国际市场参与者有ELITech Group、Radiometer Medical、F.L. Medical、Sarstedt、Improve Medical、BD、ALIFAX、Nuova Aptaca、PLASTI LAB、O InterVacTechnology、Biosigma、Vital Diagnostics、ENVASES FARMACEUTICOS、Ten…...
前潮网络网站建设/网络营销的八种方式
接触React项目快两个月了,还在研究摸索各种知识点的过程中,充实且幸福。 在项目中学习新知识,还是很有效率的,一边写项目,一边实验新的知识点,比如react hooks!嘻嘻嘻~~~ 写了好一段时间class组…...