写参数默认值:
function person(name,age,gender='female') {
console.log(name,age,gender);
}
VUE单独为组件设置body的css样式:
beforeCreate() {
document.querySelector('body').setAttribute('style','background-color:#fff')
},
beforeDestroy() {
document.body.removeAttribute('style');
}
CSS overflow禁止滚动页面:
$('body').css('overflow','hidden'); // 禁止滚动
JS padLeft padRight 自动补齐
string.padEnd() string.padStart()
export function formatDate(ISOString, seperator = '.') {
const date = new Date(ISOString);
if (date.toString() === 'Invalid Date') return ISOString;
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
return [year, month, day].join(seperator);
}
父元素设置了flex布局:display:flex;
如何让子元素靠右呢?
方法一:
flex:1;
text-align: right;
方法二:
margin-left: auto;
CSS var()函数
www.runoob.com/cssref/func…
npm update 会把所有带有^符号的,升级到最新版本
NPM依赖包版本号~和^和*的区别:
~ 会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
^ 会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
* 这意味着安装最新版本的依赖包
package.json package-lock.json
下拉加载更多:
const scrollHeight = document.querySelector('#handleList').scrollHeight;
const scrollTop = document.querySelector('#handleList').scrollTop;
const clientHeight = document.querySelector('#handleList').clientHeight;
关键点-判断是否滚动到了页面最底部:scrollHeight <= scrollTop + clientHeight
git删除指定文件夹
www.cnblogs.com/syq816/p/93…
例如删除apply文件夹:git rm -r 'src/foreignAffairs/pages/apply'
vuex-class
set get用于响应式数据
get visible() {
return this.value;
}
set visible(val) {
this.$emit('input', val);
}
VUE中:style与:class三元运算符使用
style三元表达式
<p :style="{'color':(checkIndex3===m.txt ? 'red' : 'blue')}">
{{m.txt}}
</p>
class三元表达式
<i class="iconfont" :class="[isShow ? 'icon-xy' : 'icon-ab']">
</i>
const { licenceFile = {}, licenceList = [], recordList = [] } = res;
css reset:
html,body{
font-size: 62.5%;
}
// 1rem = 10px; 方便按设计稿编码
vue filters过滤器的使用
Vue学习--MVVM模型
string.startsWith(searchvalue, start)
运算符:
www.runoob.com/jsref/jsref…
juejin.cn/post/694599…
<!-- 工作交接人 -->
<handover-person v-show="showPerson" :showPerson.sync="showPerson" @closeMyself="closePerson"></handover-person>
// .sync
// vue中的.sync修饰符用法及原理详解
// vue修饰符sync作用:允许子组件修改父组件的数据,可以使用this.$emit('update:isShow', false)修改
// https://cn.vuejs.org/v2/guide/components-custom-events.html#sync-%E4%BF%AE%E9%A5%B0%E7%AC%A6
将多个数组里面的对象拼接进一个数组
Object.assign
concat
www.runoob.com/js/js-obj-a…
less的函数
定义使用公共的函数和数据
const { isPass } = data 等价于 const isPass = data.isPass;
代码规范之 lint-staged
Native APP ,Web APP,Hybrid APP三者对比:www.woshipm.com/pmd/159965.…
data和computed最核心的区别在于data中的属性并不会随赋值变量的改动而改动,而computed会。
监听本地存储的变化:
window.addEventListener('storage', (e) => {
console.log('699***', e);
//变化时触发事件
const i = JSON.parse(window.localStorage.getItem('itemname'));
console.log(i);
if (i) {
this.$refs.pickerRef.changdata(i.handoverJob);
// this.itemum = i.handoverJob.um;
const $this = this;
this.$nextTick(() => {
App.zzcbRefreshByBack($this.getParam);
});
// this.$refs.pickerRef.um = i.handoverJob.um;
}
console.log('703', i.handoverJob.um);
}, false);
beforedestory的时候删除监听值:
beforedestory() {
window.localStorage.removeItem('itemname');
window.removeEventListener('storage');
},
VS Code 插件
Chinese (Simplified):简体中文
ESLint: ECMAScript/JavaScript 代码检查与报告
Auto Rename Tag:自动同步 HTML 标签名称
Vetur:Vue 开发工具,包含语法高亮、Emmet、错误检测、格式
Vue 2 Snippets: Vue2 代码片段
HTML Snippets: HTML 代码片段
markdownlint: Markdown 格式检查
Image preview:显示图像预览
Markdown Preview Enhanced: Markdown 预览
TSLint: TS 检查
TSLint Vue: Vue TS 检查
koroFileHeader: 头部注释和函数注释
Git History: 查看 Git 历史记录
GitLens: vscode 集成 Git
Auto Close Tag: 自动闭合 HTML 标签
Bracket Pair Colorizer 2: 成对的括号用相同颜色匹配
Color Highlight: CSS 颜色值高亮
Guides: 列指导线
Highlight Matching Tag: 高亮当前焦点匹配的 HTML 标签
Path Intellisense: 引用文件时,路径自动智能提示
TODO Highlight: todo 高亮
JS map和forEach:
相同点:都不会改变原数组
不同点:map有返回值,返回一个新数组;forEach没有返回值
forEach()允许callback更改原始数组的元素
vue-property-decorator用法
vue为什么要求组件模板只能有一个根元素? template标签只能有一个根元素?
<template>
<div></div>
</template>
TS interface和type的区别
void表示一个函数什么也不返回
npm install的实现原理?
nodejs
v-model双向绑定原理
proxy
父组件:
<component v-bind:is="curConfigComponent"
v-model="componentData" ref="curRef" @modalSubmit="modalSubmit">
</component>
子组件:
@Prop({ type: Object, default: () => ({}) }) value!: any;
@Prop({ type:Array, default: ()=> [] }) value!:any[];
因为TS的语法很严格,所以以上相当于const定义了一个变量,当为空的时候为any
vue/cli,webpack脚手架
npm ci安装包之前,会删掉node_modules文件夹
配路由的时候加上webpackChunkName,webpack打包会打包到子js里面去,实现不同页面按需加载
手写JS实现ajax功能
JS实现继承的多种方式
JS之Object.create和new的区别:blog.csdn.net/sinat_27514…
Object.fromEntries
@Prop({ type: Boolean, default: false }) showIconAction?: boolean // 隐藏清除按钮
// ?代表这个属性可能存在也可能不存在
@Prop({ type: Boolean, default: false }) hideAdd!: boolean // 隐藏添加按钮
// !代表这个属性一定存在
css设置字体为缩放,必须先设置:display:inline-block;
npm run fix-memory-limit 扩大运行内存
git statsh cherypick
<style lang="less" scoped>
@deep: ~">>>";
.wrapper-cert-type-config {
@{deep} tr {
&:hover>td:nth-child(2) button {
color: #657dbc!important;
}
}
}
</style>
Promise.reject()
developer.mozilla.org/zh-CN/docs/…
MDN:
developer.mozilla.org/zh-CN/docs/…
proxy
export可以是多个,导出多个;但是export default 只能导出1个,只能有1个
import data from './mock-data/basic'; 这种写法,是data只有一个的导出
import { data } from './mock-data/basic'; 这种写法,不是export default,而是导出了多个,data只是其中一个