vue 日常开发小细节 (element-ui 相关 2 )

1 循环块 (表头动态变化 / 多个规律label)

<el-table-column v-for="item in ['1','2','3']" :key="item" :label="item" prop="noticeType">  </el-table-column>

 

2 多个数组生成法

 Array.apply(null, { length: 20 }) 长度为 20 新数组        Array.apply(null, Array(20))     Array.from(Array(20))

扩展讲解

Array.apply(null, {length: 10})和Array(10)有什么区别?

var arr1 = Array.apply(null, {length: 10});
var arr2 = Array(10);

0 in arr1  //true
0 in arr2  //false

arr1.map(function(item, index){console.log(index)}) //0, 1, 2, 3...
arr2.map(function(item, index){console.log(index)}) //undefined...


首先Array(1,2,3,4),生成一个数组[1,2,3,4]
然后是apply的问题,要求第二个参数是一个数组
那么Array.apply(null,[1,2,3,4])生成的和上述的一样的[1,2,3,4]数组
但apply有个奇怪的地方,当第二个参数是一个带有length属性的对象时,会当成一个数组使用
所以Array.apply(null,{length:4})生成[undefined,undefined,undefined,undefined]
相当于Array.apply(null,[undefined,undefined,undefined,undefined])
View Code

 

3 render 基本使用(组件使用 / 大项目直接查看某个组件)

import businessSwitch from '@/views/business/businessSwitch.vue'
render: function (createElements) {
// createElements 是一个 方法,调用它,能够把 指定的 组件模板,渲染为 html 结构
return createElements(businessSwitch)
// 注意:这里 return 的结果,会 替换页面中 el 指定的那个 容器
// 包含 template , 与 template 不同时使用
}

 

4  查看引用插件

package.json - package-lock.json - 淘宝镜像
- package.json 查看仓库实际地址

 

5  babel的转译

babel的转译过程也分为三个阶段:parsing、transforming、generating

ES6代码输入 ==》 babylon进行解析 ==》 得到AST
==》 plugin用babel-traverse对AST树进行遍历转译 ==》 得到新的AST树
==》 用babel-generator通过AST树生成ES5代码

 

6  toString()   String()  区别

toString()方法;数值、字符串、对象、布尔;都有toString方法;
这个方法唯一能做的就是返回相应的字符串;其中null和undefined没有toString()方法;
String()属于强制转换, null转换的结果为null;undefined转换的结果为undefined;
其余的如果有toString()方法,即调用该方法,返回相应的结果;

6.1  toString() 和 valueOf()

toString() 方法返回反映这个对象的字符串
valueOf()方法如果存在任意原始值,它就默认将对象转换为表示它的原始值;
对象是复合值,而大多数对象无法真正表示为一个原始值,
因此默认的valueOf()方法简单地返回对象本身,而不是返回一个原始值。
undefined和null没有toString()和valueOf()方法

 

7 地址解析

地址 - 回车 - dns 解析 ip - 连接(三次握手)
- http 请求 - 响应 - 解析 渲染 - 关闭 tcp 连接

 

8 去除eslint 校验

在.eslintrc.js文件中找到'@vue/standard'配置将其删除

 

9  获取 ref 组件下 dom

this.$refs['mesServer'].$el.getElementsByTagName('input')[0];

9.1 清除校验结果

this.$refs['categoryForm'].resetFields();

this.$refs['searchFrom2'].clearValidate(['businessChannel','merchantOrderNo']);

 

10  Set Map 

Set 对象类似于数组,且成员的值都是唯一的。
Map 对象是键值对集合,和 JSON 对象类似,但是 key 不仅可以是字符串还可以是对象

 

11 postcss  sass less

SASS等工具:源代码 -> 生产环境 CSS  (组合成正常 css)
PostCSS:源代码 -> 标准 CSS -> 生产环境 CSS  (兼容性前缀)

 

12 css  ime-mode: disabled;  限制输入法切换 (k8s 框架 命令行竟然是监听键盘的按下 ... ,表单都没有的那种。。)

contenteditable="true"  可编辑文本域

 

13  tofixed方法  Math.round(x)

tofixed方法
银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法
四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一
Math.round(x) (向上取值)
3.5 将舍入为 4,而 -3.5 将舍入为 -3

 

14  pdf.js  加载 二进制流文件 (防止原始文本被下载 / 统一放置于阿里云  -  设置允许跨域访问)

https://mozilla.github.io/pdf.js/getting_started/

 

15  post请求中常见的content-type的值有四种

application/x-www-form-urlencoded    表单提交的数据类型,jquery的ajax默认也是这个

multipart/form-data    文件上传时要使用的数据类型

application/json    json 格式的数据类型,也是axios的默认类型

text/xml

 

16  一个类数组对象转换为一个真正的数组

有length属性、属性名必须为数值型或字符串型的数字

Array.from(str) 、  Array.from(set) \  Array.prototype.splice.call( )   原型 slice \ [...arguments]

 

17   复制到剪切板(谷歌兼容)

function copyStr(str){
let createInput = document.createElement("input");
createInput.value = str;
document.body.appendChild(createInput);
createInput.select(); // 选择对象
document.execCommand("Copy"); // 执行浏览器复制命令
createInput.style.display = "none";
}

 

18 除了变异方法,vm.set() 也可以实现 动态刷新数据

 

19  == 类型转换 规则顺序

布尔 - 数值, 字符串 - 数值 , 对象 - valueOf() - ...
Number(null) - 0 , Number(undefined) - NaN

 

20  自定义表单校验规则  -  抛出 error 

{ required: true, trigger: 'blur', validator: this.validMoney }

 

21  浮层中使用 日期选择控件 bug( 默认日期选不中、选中页面值不改变 ) 

- form 之外 定义新数据
- 数据一次性绑定 this.form={type:1} 替代 this.form={}、this.form.type=1
- this.$set(this.categoryForm,'plantCode','hello')

 

22   死循环问题

import { Message } from 'element-ui'
if(!store.getters.addRouters.length){
Message.warning('无权限,请配置')
return false
}
/ 计数 > 2 - return false

 

23  本机映射 ( 免DNS ) 

C:\windows\system32\drivers\etc\hosts 

 

24 vscode  源代码管理 - 看不到文件修改记录

-  右键 勾选项目

 

25 webpack  -  通用模板 title 配置

<title><%= htmlWebpackPlugin.options.title %></title>

 

26  父子组件传值,涉及到复杂对象 

-  使用计算属性(兼 new map() )、JSON.stringify 化 (bug:map转成数组)

 

27 ['1','2'].map(parseInt)   -   [1, NaN]

-  return / Number 替换 parseInt 函数

 

28 Object.assign({},obj)  拷贝

Object.assign({},obj) 拷贝 - 第一层深拷贝、第二层往后浅拷贝(赋值引用地址)
替代方案 - JSON.parse(JSON.stringify(obj1)) / 递归循环

 

29 node app.js 开启服务,后台运行 ( 开启守护进程来执行 )

node app.js & 

 

30 监听对象

methods:{
watchDeep(){
this.$watch("obj",()=>{
console.log("事件监听");
},{
deep:true
})
}
}

posted @ 2019-12-26 10:39  justSmile2  阅读(562)  评论(0编辑  收藏  举报