前端编码规范

文章目录

  • 一、背景
  • 二、内容
    • 1、注释规范
      • (1)文件注释
      • (2)函数注释
      • (3)单行注释
      • (3)多行注释
    • 2、命名规范
      • (1)项目命名
      • (2)目录命名
      • (3)`JS` 、`CSS` 、`SCSS` 、`HTML` 、`PNG` 文件命名
      • (4)命名严谨性
    • 3、`HTML`规范(`Vue Template` 同样适用)
      • (1)HTML 类型
      • (2)缩进
      • (3)分块注释
      • (4)语义化标签
      • (5)引号
      • (6)`Image`
    • 4、`CSS`规范
      • (1)命名
      • (2)选择器
      • (3)尽量使用缩写属性
      • (4)每个选择器及属性独占一行
      • (5)省略`0`后面的单位
      • (6)避免使用`ID`选择器及全局标签选择器防止污染全局样式
    • 5、`SCSS`规范
      • (1)代码组织
      • (2)避免嵌套层级过多
    • 6、`Javascript`规范
      • (1)命名
      • (2)代码格式
      • (3)字符串
      • (4)对象声明
      • (5)使用`ES6+`
      • (6)括号
      • (7)`undefined` 判断
      • (8)条件判断和循环最多三层
      • (9)`this`的转换命名
      • (10)慎用`console.log`
    • 7、支付宝小程序规范
      • (1)页面高度`100vh`
      • (2)组件样式名无效
      • (3)图片失真
      • (4)**`HTTP`**
      • (5)`location`定位
      • (6)地图
      • (7) `createSelectorQuery`
      • (8)`getSetting`授权
      • (9)`showActionSheet`弹窗列表
      • (10)`$parent`
      • (11)`textarea`
      • (12)`Swiper`
      • (13)`picker`多列
      • (14)富文本
      • (15)`Canvas`画布
  • 三、最后

一、背景

  1. 规范目的:为了提高工作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,在网站建设中,使结构更加清晰,代码简明有序,有一个更好的前端架构。
  2. 规范基本准则:符合web标准,使用具有语义的标签,使结构、表现、行为分离,兼容性优良。页面性能优化,代码简洁、明了、有序,尽可能的减少服务器的负载,保证最快的解析速度。

二、内容

1、注释规范

(1)文件注释

  • 使用说明

在文件中,键入desc后,按tab键就会生成文件注释,补充上文件说明。(详细配置步骤见下面的IDE配置说明)

image.pngimage.png

  • IDE配置说明

Webstorm js中,自定义js说明注释(文档描述、作者、创建日期):快捷键 Ctrl + Shift + S 打开Webstorm设置,搜索Live Template,找到JavaScript,如下:

image.png

点击右上角+-> Live Template,添加注释模板,出现以下界面,填写相关的信息:

image.png

模板内容,如我需要定义文档描述、作者、创建日期:

/*** @Description: * @author zling* @date $datetime$
*/

定义应用的内容,点击下方蓝色字更改’,选择JavaScriptTypeScriptVue

image.png

变量的设置:如日期变量$date$,点击右侧Edit variables中设置具体内容

image.png

变量设置如下:

名称:datetime
表达式:date("yyyy-MM-dd hh:mm:ss")

最后点击右下角【确定】,设置完成。

(2)函数注释

在函数声明上方键入 /** ,再按回车键:

image.png

第一行默认留空,此处手动填写函数用途说明,参数名后面的数据。类型说明需要手动添加,函数内有return注释会自动加上return参数:

image.png

添加注解后,调用函数时将鼠标光标放于括号内,按Ctrl + P 可以查看函数调用所需要的参数提示(在键入参数的过程中自动显示提示):

image.png

如果注解中设置了参数类型,Webstorm将在开发过程中调用函数时对参数进行类型检测,如果不符合预定义的类型,将给底部予波浪线警告提示:

image.png

(3)单行注释

  • 单独一行://(双斜线)与注释文字之间保留一个空格。
  • 在代码后面添加注释://(双斜线)与代码之间保留一个空格,并且//(双斜线)与注释文字之间保留一个空格。
  • 注释代码://(双斜线)与代码之间保留一个空格。
// 调用了一个函数;1)单独在一行
setTitle(); 
var maxCount = 10; // 设置最大量;2)在代码后面注释
// setName(); // 3)注释代码

(3)多行注释

  • 若开始(/)和结束(/)都在一行,推荐采用单行注释。
  • 若至少三行注释时,第一行为/,最后行为/,其他行以开始,并且注释文字与保留一个空格。
/*
* 代码执行到这里后会调用setTitle()函数
* setTitle():设置title的值
*/
setTitle();

2、命名规范

(1)项目命名

全部采用小写方式,以中线分隔。

正例:mall-management-system 
反例:mall_management-system / mallManagementSystem 

(2)目录命名

全部采用小写方式, 以中划线分隔,有复数结构时,要采用复数命名法, 缩写不用复数。

正例: scripts / styles / components / images / utils / layouts / demo-styles / demo-scripts / img / doc 
反例:script / style / demo_scripts / demoStyles / imgs / docs 【特殊】VUE 的项目中的components 中的组件目录,使用kebab-case 命名。
正例:head-search / page-loading / authorized / notice-icon 
反例:HeadSearch / PageLoading【特殊】VUE 的项目中的除 components 组件目录外的所有目录也使用kebab-case 命名。
正例:page-one / shopping-car / user-management 
反例:ShoppingCar / UserManagement

(3)JSCSSSCSSHTMLPNG 文件命名

全部采用小写方式, 以中划线分隔。

正例: render-dom.js / signup.css / index.html / company-logo.png 
反例:renderDom.js / UserManagement.html 

(4)命名严谨性

代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。

正例:henan / luoyang / rmb 等国际通用的名称,可视同英文 
反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量= 3 
杜绝完全不规范的缩写,避免望文不知义:
反例:AbstractClass “缩写”命名成AbsClass;condition “缩写”命名成condi,此类随意缩写严重降低了代码的可阅读性。

3、HTML规范(Vue Template 同样适用)

 // 标准代码翻译

(1)HTML 类型

推荐使用 HTML5 的文档类型申明:(建议使用 text/html 格式的HTML。避免使用XHTMLXHTML 以及它的属性,比如application/xhtml+xml 在浏览器中的应用支持与优化空间都十分有限)。

  • 规定字符编码
  • IE 兼容模式
  • 规定字符编码
  • doctype 大写
正例:
<!DOCTYPE html> 
<html> <head> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta charset="UTF-8" /> <title>Page title</title> </head> <body> <img src="images/company-logo.png" alt="Company"> </body> 
</html> 

(2)缩进

缩进使用2 个空格(一个tab);
嵌套的节点应该缩进。

(3)分块注释

在每一个块状元素,列表元素和表格元素后,加上一对HTML 注释。

(4)语义化标签

HTML5 中新增很多语义化标签,所以优先使用语义化标签,避免一个页面都是div 或者p 标签。

正例
<header></header> 
<footer></footer> 
反例
<div> <p></p> 
</div> 

(5)引号

使用双引号(" ") 而不是单引号( ') 。

正例:<div class="box"></div>
反例:<div class='box'></div>

(6)Image

移动端使用uniapp编码时,缩略图使用mode=aspectFill。保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。

4、CSS规范

(1)命名

  • 类名使用小写字母,以中划线分隔
  • id 采用驼峰式命名
  • scss 中的变量、函数、混合、placeholder 采用驼峰式命名
  • IDclass 的名称总是使用可以反应元素目的和用途的名称,或其他通用的名称,代替表象和晦涩难懂的名称。
不推荐:
.fw-800 { font-weight: 800; 
}
.red { color: red; 
}
推荐: 
.heavy { font-weight: 800; 
}
.important { color: red; 
}

(2)选择器

  • css 选择器中避免使用标签名

从结构、表现、行为分离的原则来看,应该尽量避免css 中出现HTML 标签,并且在css 选择器中出现标签名会存在潜在的问题。

  • 使用直接子选择器

很多前端开发人员写选择器链的时候不使用 直接子选择器(注:直接子选择器和后代选择器的区别)。有时,这可能会导致疼痛的设计问题并且有时候可能会很耗性能。然而,在任何情况下,这是一个非常不好的做法。如果你不写很通用的,需要匹配到 DOM 末端的选择器, 你应该总是考虑直接子选择器。

不推荐: 
.content .title { font-size: 2rem; 
}
推荐: 
.content > .title { font-size: 2rem; 
}

(3)尽量使用缩写属性

不推荐:
border-top-style: none; 
font-family: palatino, georgia, serif; 
font-size: 100%; 
line-height: 1.6; 
padding-bottom: 2em; 
padding-left: 1em; 
padding-right: 1em; 
padding-top: 0; 推荐:
border-top: 0; 
font: 100%/1.6 palatino, georgia, serif; 
padding: 0 1em 2em; 

(4)每个选择器及属性独占一行

不推荐:
button { width: 100px; height: 50px;color: #fff; background: #00a0e9; 
}推荐:
button { width: 100px; height: 50px; color: #fff; background: #00a0e9; 
}

(5)省略0后面的单位

不推荐:
div {padding-bottom: 0px; margin: 0em; 
}推荐:
div {padding-bottom: 0; margin: 0; 
}

(6)避免使用ID选择器及全局标签选择器防止污染全局样式

不推荐:
#header { padding-bottom: 0px; margin: 0em; 
}推荐:
.header { padding-bottom: 0; margin: 0; 
}

5、SCSS规范

(1)代码组织

将公共 scss 文件放置在style 文件夹
例: // color.scss ,common.scss
按以下顺序组织

  • @import;
  • 变量声明;
  • 样式声明;
@import "mixins/size.less"; 
@default-text-color: #333; 
.page { width: 960px; margin: 0 auto; 
}

(2)避免嵌套层级过多

将嵌套深度限制在3 级。对于超过4 级的嵌套,给予重新评估。这可以避免出现过于详实的CSS选择器。避免大量的嵌套规则。当可读性受到影响时,将之打断。推荐避免出现多于20 行的嵌套规则出现。

不推荐:
.main { .title { .name { color: #fff; } } 
}推荐:
.main-title { .name { color: #fff; } 
}

6、Javascript规范

(1)命名

采用小写驼峰命名lowerCamelCase,代码中的命名均不能以下划线,也不能以下划线或美元符号结束
反例:_name / name_ / name$ 
方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase 风格,必须遵从驼峰形式
正例:localValue / getHttpMessage() / inputUserId 

其中method 方法命名必须是 动词 或者 动词+名词 形式

正例:saveShopCarData /openShopCarInfoDialog 
反例:save / open / show / go 

*特此说明,增删查改,详情统一使用如下5 个单词,不得使用其他(目的是为了统一各个端)

add / update / delete / detail / get 附: 函数方法常用的动词: 
get 获取/set 设置, 
add 增加/remove 删除, 
create 创建/destory 销毁, 
start 启动/stop 停止, 
open 打开/close 关闭, 
read 读取/write 写入, 
load 载入/save 保存, 
begin 开始/end 结束, 
backup 备份/restore 恢复, 
import 导入/export 导出, 
split 分割/merge 合并,
inject 注入/extract 提取, 
attach 附着/detach 脱离, 
bind 绑定/separate 分离, 
view 查看/browse 浏览, 
edit 编辑/modify 修改, 
select 选取/mark 标记, 
copy 复制/paste 粘贴, 
undo 撤销/redo 重做, 
insert 插入/delete 移除, 
add 加入/append 添加, 
clean 清理/clear 清除, 
index 索引/sort 排序, 
find 查找/search 搜索, 
increase 增加/decrease 减少, 
play 播放/pause 暂停, 
launch 启动/run 运行, 
compile 编译/execute 执行, 
debug 调试/trace 跟踪, 
observe 观察/listen 监听, 
build 构建/publish 发布, 
input 输入/output 输出, 
encode 编码/decode 解码, 
encrypt 加密/decrypt 解密, 
compress 压缩/decompress 解压缩, 
pack 打包/unpack 解包, 
parse 解析/emit 生成, 
connect 连接/disconnect 断开, 
send 发送/receive 接收, 
download 下载/upload 上传, 
refresh 刷新/synchronize 同步, 
update 更新/revert 复原, 
lock 锁定/unlock 解锁, 
check out 签出/check in 签入, 
submit 提交/commit 交付, 
push 推/pull 拉, 
expand 展开/collapse 折叠, 
enter 进入/exit 退出, 
abort 放弃/quit 离开, 
obsolete 废弃/depreciate 废旧, 
collect 收集/aggregate 聚集 

常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长

正例:MAX_STOCK_COUNT 
反例:MAX_COUNT  

(2)代码格式

使用2 个空格进行缩进

正例:
if (x < y) { x += 10; 
} else { x += 1; 
}

不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性
说明:任何情形,没有必要插入多个空行进行隔开。

(3)字符串

统一使用单引号('),不使用双引号(")。这在创建HTML 字符串非常有好处:

正例: 
let str = 'foo'; 
let testDiv = '<div id="test"></div>'; 反例: 
let str = 'foo'; 
let testDiv = "<div id='test'></div>";

(4)对象声明

使用字面值创建对象
正例:let user = {}; 
反例:let user = new Object(); 
使用字面量来代替对象构造器
正例:
var user = { age: 0, name: 1, city: 3 
};反例:
var user = new Object(); 
user.age = 0; 
user.name = 0; 
user.city = 0; 

(5)使用ES6+

必须优先使用ES6+ 中新增的语法糖和函数。这将简化你的程序,并让你的代码更加灵活和可复用。比如箭头函数、await/async , 解构, letfor…of 等等。

(6)括号

下列关键字后必须有大括号(即使代码块的内容只有一行):
if, else, for, while, do, switch, try, catch, finally, with

正例:
if (condition) { doSomething(); 
}反例:
if (condition) doSomething(); 

(7)undefined 判断

永远不要直接使用undefined 进行变量判断;使用typeof 和字符串undefined对变量进行判断。

正例:
if (typeof person === 'undefined') { ... 
}反例:
if (person === undefined) { ... 
}

(8)条件判断和循环最多三层

条件判断能使用三目运算符和逻辑运算符解决的,就不要使用条件判断,但是谨记不要写太长的三目运算符。如果超过3 层请抽成函数,并写清楚注释。

(9)this的转换命名

对上下文this 的引用只能使用self 来命名。

(10)慎用console.log

console.log 大量使用会有性能问题,所以在非webpack 项目中谨慎使用log 功能。

7、支付宝小程序规范

(1)页面高度100vh

支付宝小程序页面height设置为100%不会撑满手机屏幕,需要使用100vh来撑满

(2)组件样式名无效

支付宝小程序组件上样式名的样式读不到,不要在组件上定义样式名class

(3)图片失真

background-size设置为100%后就显示正常

(4)HTTP

  • HTTP请求URL如果是使用new Date(),资源请求会报错,要使用(new Date()).valueOf()
错误:
url: `${ossHost}config.json?date=`+new Date()
data = Mon Feb 21 2022 10:13:41 GMT+0800 (中国标准时间)正确
url: `${ossHost}config.json?date=${(new Date()).valueOf()}`
data = 1645409646290
  • 支付宝小程序不支持delete接口请求

(5)location定位

支付宝小程序不支持stopLocationUpdateoffLocationChangeonLocationChange

(6)地图

  • 位置名,支付宝小程序必填
uni.openLocation({name: 位置名
});
  • 支付宝小程序使用此方法无效果
vm.mapContext.moveToLocation({latitude: vm.latitude,longitude: vm.longitude
})
  • 支付宝小程序调用会报异常,不要传this
错误
uni.createMapContext("trailMap", this)正确
my.createMapContext("trailMap")

(7) createSelectorQuery

SelectorQuery 对象实例支付宝不支持in这个属性

错误
uni.createSelectorQuery().in(this)正确
uni.createSelectorQuery()

(8)getSetting授权

  • 支付宝小程序不支持后台定位scope.userLocationBackground
  • 获取定位授权权限支付宝小程序是通过authSetting['location'],而不是['scope.userLocation']

(9)showActionSheet弹窗列表

支付宝小程序点击取消或者遮罩蒙版也会进入success,但是回调对象参数的tapIndex值是-1

(10)$parent

支付宝小程序中会报错,调不到方法$parent

this.$parent.goTop()

(11)textarea

  • textarea设置了maxlength="1000",支付宝小程序右下角自动就会有剩余可输入多少字数
  • 支付宝小程序弹出输入法后会把输入框顶到最上面,导致看不到输入的文字,需要设置enable-native="false"

(12)Swiper

  • 支付宝小程序swipercurrent改变,不会触发change事件
  • 支付宝小程序swiper-item不支持click

(13)picker多列

uniapp中的picker组件在支付宝小程序中不支持多列mode=multiSelector,推荐使用w-picker第三方组件

(14)富文本

支付宝小程序富文本显示使用mp-html

(15)Canvas画布

画布画图片时,支付宝需要传9个参数,微信小程序传5个参数就好

微信小程序
ctx.drawImage(code,uni.upx2px(260), // 在画布上放置图像的 x 坐标位置uni.upx2px(657), // 在画布上放置图像的 y 坐标位置uni.upx2px(210), // 要使用的图像的宽度uni.upx2px(210) // 要使用的图像的高度
)支付宝小程序
ctx.drawImage(code,uni.upx2px(0), // 开始剪切的 x 坐标位置,这一行支付宝小程序不能少uni.upx2px(0), // 开始剪切的 y 坐标位置,这一行支付宝小程序不能少228, // 被剪切图像的宽度,这一行支付宝小程序不能少228, // 被剪切图像的高度,这一行支付宝小程序不能少uni.upx2px(260), // 在画布上放置图像的 x 坐标位置uni.upx2px(657), // 在画布上放置图像的 y 坐标位置uni.upx2px(210), // 要使用的图像的宽度uni.upx2px(210) // 要使用的图像的高度
)

三、最后

本人每篇文章都是一字一句码出来,希望大佬们多提提意见。顺手来个三连击,点赞👍收藏💖关注✨。创作不易,给我打打气,加加油☕

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

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

相关文章

Bug 检查 0x7B:INACCESSIBLE_BOOT_DEVICE(未解决)

环境&#xff1a; HP ProDesk 480 G7 Win10 专业版 问题描述&#xff1a; INACCESSIBLE_BOOT_DEVICE bug 检查的值为0x0000007B。 此 bug 检查表明 Microsoft Windows 操作系统在启动过程中无法访问系统分区 原因&#xff1a; 1.INACCESSIBLE_BOOT_DEVICE bug 检查经常发生…

大数据Hadoop-HDFS_元数据持久化

大数据Hadoop-HDFS_元数据持久化 &#xff08;1&#xff09;在HDFS第一次格式化后&#xff0c;NameNode&#xff08;即图中的主NameNode&#xff09;就会生成fsimage和editslog两个文件&#xff1b; &#xff08;2&#xff09;备用NameNode&#xff08;即图中的备NameNode&…

【Lustre相关】功能实践-03-文件级冗余(FLR)

一、前言 DDN-03.11-File Level Redundancy (FLR) Category:FLR 1、功能介绍 在文件级冗余&#xff08;File Level Redundancy&#xff0c;FLR&#xff09;特性出现之前&#xff0c;Lustre文件系统数据冗余完全依赖于后端存储设备&#xff08;如RAID6&#xff09;。 Lustre在L…

SpringCloudSleuth+Zipkin 整合及关键包汇总

背景 整合了一下 SpringCloudSleuth Zipkin&#xff0c;本来是很简单的东西&#xff0c;但是最终导出依赖包时没注意&#xff0c;导致目标服务上始终没有纳入 Zipkin 的链路追踪中&#xff0c;本文记录这个过程及关键依赖包。 部署zipkin 官网下载最新的 zipkin 可执行包&a…

创建Asp.net MVC项目实现视图页面数据传值显示

MVC中视图传值 ViewData ViewBag TempData 举例创建三中传值方式实现页面数据展示 MVC中视图传值 Asp.net MVC中Controller向View传值有多种方式,这里简单说一下其中3种方式 ViewData、ViewBag和TempData ViewData ViewData存储数据&#xff0c;ViewData的声明和赋值方…

代码随想录算法训练营第五十九天| 503.下一个更大元素II 42. 接雨水

文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;代码随想录B站账号 状态&#xff1a;看了视频题解和文章解析后做出来了 503.下一个更大元素II class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:res [-1] * len(nums)stack []for i in…

Springboot 使用 阿里的 druid 连接池 启用 wall sql防火墙的情况下怎么支持多sql同时执行?

1、问题如上&#xff0c;看了不少网上的文章&#xff0c;在我这都不生效&#xff0c;网上主要的解决思路有两个。 第一个是&#xff1a;去掉配置文件中的 wall filter # 修改之前 spring.datasource.druid.filtersstat,wall,log4j# 修改之前 spring.datasource.druid.filte…

【Pytorch】Visualization of Feature Maps(5)——Deep Dream

学习参考来自&#xff1a; PyTorch实现Deep Dreamhttps://github.com/duc0/deep-dream-in-pytorch 文章目录 1 原理2 VGG 模型结构3 完整代码4 输出结果5 消融实验6 torch.norm() 1 原理 其实 Deep Dream大致的原理和【Pytorch】Visualization of Feature Maps&#xff08;1&…

一次Apollo Client升级导致的生产404 Not Found问题排查记录

概述 本文记录一次升级Apollo Client组件到1.7.0后遇到的重大生产事故。只想看结论的&#xff0c;可直接快进到文末。实际上&#xff0c;第一句话就是一个结论。 另&#xff0c;本文行文思路事后看起来可行略显思路清晰&#xff0c;实际上排查生产问题时如无头苍蝇&#xff0…

45、Flink 的指标体系介绍及验证(3)- 完整版

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

从源代码出发,Jenkins 任务排队时间过长问题的解决过程

最近开发了一个部署相关的工具&#xff0c;使用 Jenkins 来构建应用。Jenkins 的任务从模板中创建而来。每次部署时&#xff0c;通过 Jenkins API 来触发构建任务。在线上运行时发现&#xff0c;通过 API 触发的 Jenkins 任务总是会时不时在队列中等待较长的时间。某些情况下的…

Node.js案例 - 记账本

目录 项目效果 项目的搭建 ​编辑 响应静态网页 ​编辑 ​编辑 结合MongoDB数据库 结合API接口 进行会话控制 项目效果 该案例实现账单的添加删除查看&#xff0c;用户的登录注册。功能比较简单&#xff0c;但是案例主要是使用前段时间学习的知识进行实现的&#xff0c…

C++ AVL 树

AVL树的概念 当数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;此时二叉搜索树的搜索效率低下 解决方法&#xff1a;AVL树&#xff08;降低树的高度&#xff0c;从而减少平均搜索长度) 一棵AVL树或者是空树&#xff0c;或者是具有以下性质的二叉搜索树&#xff1…

JavaScript基础—函数、参数、返回值、作用域、变量、匿名函数、综合案例—转换时间,逻辑中断,转换为Boolean型

版本说明 当前版本号[20231129]。 版本修改说明20231126初版20231129完善部分内容 目录 文章目录 版本说明目录JavaScript 基础 - 第4天笔记函数声明和调用声明&#xff08;定义&#xff09;调用细节补充 参数形参和实参函数默认值 返回值作用域全局作用域局部作用域 变量全…

laraval6.0 GatewayWorker 交互通信

laravel 6.0 GatewayWorker 通讯 开发前准备下载 GatewayWorker 及操作方式前端demo测试效果项目中安装GatewayClient 开发前准备 GatewayClient 官网&#xff1a;https://www.workerman.net/ 当前使用的是宝塔操作 下载 GatewayWorker 及操作方式 前端demo 测试效果 项目中安…

纹理烘焙:原理及实现

纹理烘焙是计算机图形学中常见的技术&#xff0c;用于将着色器的细节传输到纹理中。 如果你的着色器计算量很大&#xff0c;但会产生静态结果&#xff0c;例如&#xff0c;这非常有用。 复杂的噪音。 NSDT在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器…

Ajax的使用方法

1,什么是Ajax&#xff1f; Ajax&#xff08;异步Javascript和XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。 2&#xff0c;Ajax的作用 Ajax可以使网页实现异步更新----即在不更新整个页面的情况下实现对某一部分进行更新。 简单来说Ajax就是用于连接…

【Python】yaml.safe_load()函数详解和示例

在Python中&#xff0c;PyYAML库提供了对YAML&#xff08;YAML Ain’t Markup Language&#xff09;文件的强大支持。YAML是一种直观的数据序列化标准&#xff0c;可以方便地存储和加载配置文件、数据日志等。 yaml.safe_load和yaml.load是Python的PyYAML库提供的两个函数&…

从零搭建AlibabaCloud微服务项目

1&#xff0c;创建maven项目工程如下 equipment-admin 后台equipment-applet 前台或小程序端或app、h5equipment-common 公共模块equipment-gateway 网关equipment-mapper mapper层操作数据库equipment-model 实体类对应数据库表 2&#xff0c;在父pom文件引入依赖 <proper…

基于Java SSM框架实现美食推荐管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现美食推荐管理系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…