less循环
样式循环
有些时候,在实际项目中,我们经常会将字体、颜色、边距等样式作为公共样式放到一个公共的文件中,然后定义一些列的样式,例如字体大小定义 12px、14px、16px 等等,这样一个一个写会比较麻烦,如果使用循环,几句代码就能实现:
.width(@i) when(@i <= 50) { .pt@{i} { padding-top: @i + 0px !important; } .pr@{i} { padding-right: @i + 0px !important; } .pb@{i} { padding-bottom: @i + 0px !important; } .pl@{i} { padding-left: @i + 0px !important; } .p@{i} { padding: @i + 0px !importa ...
el-tabs点击时传递item所有内容
添加::value="JSON.stringify(item)"
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane v-for="(item, index) in menuItems" :key="index" :label="item.moduleName" :value="JSON.stringify(item)" :name="item.moduleName" ></el-tab-pane></el-tabs>
使用el.$attrs.value
handleClick(el) { console.log(JSON.parse(el.$attrs.value));},
el-menu折叠时的bug
如图所示:在折叠时,菜单标题和右边的箭头没有消失
解决方法:
style不加scoped/*由于 element-ui 的<el-menu>标签本身希望里面嵌套的是<el-menu-item>,<el-submenu>,<el-menu-item-group>之一,但是却嵌套了<div>,而导致收折就隐藏不了文字*//*隐藏文字*/.el-menu--collapse .el-submenu__title span { display: none;}/*隐藏 > */.el-menu--collapse .el-submenu__title .el-submenu__icon-arrow { display: none;}
nginx知识点
反向代理
proxy_pass用于转发请求
server { listen 8080; #对外监听端口 server_name localhost; #主机名称 #请求路径 location / { root html; # Nginx默认值 index index.html index.htm; } # 静态化配置,所有静态请求都转发给 nginx 处理,存放目录为 my-project location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ { root /usr/local/var/www/my-project; # 静态请求所代理到的根目录 } # 动态请求匹配到path为'node'的就转发到8002端口处理 location /node/ { proxy_pass http://localhost:8002; # 充当服务代理 }}
ro ...
scss的基础使用
Sass(Syntactically Awesome Stylesheets)和 SCSS(Sassy CSS)都是用于样式表的预处理器,它们扩展了普通的 CSS 语法,提供了更多的功能和灵活性。以下是它们的主要区别:
语法格式:
Sass 使用严格的缩进来表示代码块,类似于 Python。
SCSS 使用更接近于常规 CSS 的花括号和分号的语法。
文件扩展名:
Sass 文件使用 .sass 扩展名。
SCSS 文件使用 .scss 扩展名。
语法风格:
Sass 更加简洁,省略了许多常见的符号,如花括号和分号。
SCSS 更接近于常规的 CSS 语法,因此更容易学习和迁移。
兼容性:
由于 SCSS 的语法更接近于 CSS,因此它更容易被现有的 CSS 代码接受,并且可以逐步地将现有的 CSS 文件重命名为 SCSS 并继续工作。
Sass 的语法相对较新,可能需要一些时间来适应。
选择:
选择使用 Sass 还是 SCSS 取决于个人偏好和项目要求。一些开发者喜欢 Sass 的简洁性,而另一些喜欢 SCSS 的类似 CSS 的语法。
在实际使 ...
小知识|npm scripts 如何将参数正确传递运行的脚本
问题
在公司项目的package.json文件中有个scripts命令:npm run component:add,在命令行输入npm run component:add -g aa -n bb -d cc后,显示的命令变成了node ./packages/scripts component:add aa bb ccc,-都不见了,甚至报错了
解决
这里需要用到--,将参数传递给实际的命令
npm run component:add -- -g aa -n bb -d cc
在npm scripts中,--的作用是告诉npm,之后的参数应该传递给运行的脚本,而不是npm自身。当运行npm run script-name -- arg1 arg2时,--之后的参数会被传递给script-name对应的脚本。
这是因为npm在运行脚本时,它会收集所有在npm run命令之后的参数,并将它们传递给实际执行的命令。但是,如果实际执行的命令也以-开头,npm可能会尝试解析这些参数,而不将它们传递给运行的脚本。
通过使用--,将告诉npm停止解析参数,并将其余的参数传递给脚本。这样,你就可以 ...
npm-workspaces
npm workspaces
指的是从单个顶级根包中管理本地文件系统中的多个包
npm、yarn、pnpm都提供了对workspaces的支持
初始化
创建项目文件夹
对其进行初始化:npm init -y
{ "name": "npm-workspaces", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": & ...
typescript笔记-day5
类型查询操作符
typeof:用于基本类型
类型守卫is
is 关键字 + 预期类型。如果这个函数成功返回为 true,那么 is 关键字前这个入参的类型,就会被这个类型守卫调用,方便后续的类型控制流分析。
function isString(input: unknown): input is string { return typeof input === "string";}function foo(input: string | number) { if (isString(input)) { // 正确了 (input).replace("linbudu", "linbudu599") } if (typeof input === 'number') { } // ...}
in
通过 key in object 的方式来判断 key 是否存在于 object 或其原型链上(返回 true 说 ...
typescript笔记-day4
类型别名
type用于定义类型别名
// 联合类型type IDType = string | number | boolean// 对象类型type PointType = { x: number y: number z?: number}// 函数类型type Handler = (e: Event) => void;const clickHandler: Handler = (e) => { };const moveHandler: Handler = (e) => { };const dragHandler: Handler = (e) => { };function printId(id: IDType) {}function printPoint(point: PointType) {}
工具类型
类型别名可以这么声明自己能够接受泛型(我称之为泛型坑位)
泛型参数的名称(上面的 T )也不是固定的。通常我们使用大写的 T ...
typescript笔记-day3
Top Type
any
会跳过类型检查器对值的检查,任何值都可以赋值给any类型,any类型的值也可以赋值给任何类型
可以给一个any类型的变量赋值任何的值,比如数字、字符串的值;
const arr: any[] = ["111", 234] //不推荐
unknown:
它用于描述类型不确定的变量
任何类型的值都可以赋值给unknown类型,但unknow类型只能赋值给any和unknown类型
any类型可以赋值给任意类型
let notSure: unknown = 4;let uncertain: any = notSure; // OKlet notSure: any = 4;let uncertain: unknown = notSure; // OKlet notSure: unknown = 4;let uncertain: number = notSure; // Error
Bottom Type
never
是整个类型系统层级中最底层的类型。
和 null、undefined 一样,它是所有类型的子类型,但只有 never ...