- 博客(51)
- 资源 (1)
- 收藏
- 关注
原创 flutter开发核心 Future/stream/bloc
Future(异步操作) Future有三种状态未完成、完成带有值、完成带有异常,使用Future可以简化事件任务。Dart中,可以使用Future对象来表示异步操作的结果,Future返回类型是Future<T>有三种方法处理Future的结果:then: 处理操作执行结果或者错误并返回一个新的Future catchError: 注册一个处理错误的回调 whenComplete:类似final,无论错误还是正确,Future执行结束后总是被调用 使用then来回调,...
2021-09-13 14:04:32 586
原创 webpack中SplitChunksPlugin的作用
SplitChunksPlugin在讲这个插件前,跟大家区分下chunk和bundle的概念,-- chunk理解为“代码块”,例如node_module下的module,或者你自己import入页面的自定义js。-- bundle理解则可理解为已打包好的代码包,而代码包就是由很多chunk组成的了,就像vue-cli中build后会输出一个vender.js,这个js就是代码包了开始:Originally, chunks (and modules importe...
2021-02-23 10:49:37 1136 1
原创 Git提交本地和导出diff
Git提交本地和导出diff1.git status //查看修改2.git fetch //拉取最新代码3.git rebase //合并拉取的代,fetch到内容,一定要rebase。如果使用git pull 会自动合并4.git add /view.index //写入某文件到缓存区。// add . 所有修改文件写入缓存区5.git commit //提交到本地仓库中。 // i 插入描述内容, 按shift和:进入命令, wq 保存提交, q 退出6.git log -2 //查看提
2020-08-10 10:12:44 3414
原创 promise和async结合使用
await命令是强制其他代码等待,直到Promise完成并返回结果使用小贴士:async函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而await命令就是内部then命令的语法糖。
2020-07-30 17:06:30 1316
转载 一文看懂 区块链底层技术 及其 架构设计(附图谱)
前言 区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。无论你擅长什么编程语言,都能够参考这种设计去实现一款区块链产品。与此同时,梳理与之相关的知识图谱和体系,帮助大家系统的去学习研究。 基本概念 ...
2018-11-01 15:26:37 18621
原创 css小技巧 移动端背景高宽等比例自适应
移动端背景等比例缩放,一般实现方法是,直接使用css3的background-size,但是有缺陷,高度不能固定缩放,如果高度background-size: 100% 100%; 图片会变形,还有实现方法是用js来控制高度。如果用css来实现,在网上找半天终于找到一种方法,宽度100%,图片都能等比例小技巧,就是padding-bottom是按照父元素的宽度比计算的,而不是按高度算,...
2018-10-25 10:28:08 5284
转载 深度学习
编者按:本文来自微信公众号“清脑”(ID:QingNao_),作者 周岭。36氪经授权转载。胡适的英语老师、民国时期自学成才的出版家王云五先生在年轻的时候是这样自学英语写作的:找到一篇英文的名家佳作,熟读几次以后,把它翻译成中文,等过了一星期之后,再依据中文反过来翻译成英文,这个期间绝不查阅英语原文。翻译后再与原文比对,找出自己翻译的错误、失误和不够精良之处。如此反复练习,王云五先生练...
2018-08-15 16:19:28 303
原创 vue3和vue2 v-model 和sync语法糖区别
1.父组件使用方式和以前不一样了 文末有v2的用法自行对比2.这必须使用 v-model指令 冒号: 跟上属性的名字3.后面赋值还是一样的4.需要注意的是这种写法 在vscode里面语法检查会报错,这个不用管,因为这块的语法ESlint没有更新,但是不会影响运行的
2023-02-09 10:46:42 436
原创 递归和堆栈关系
我们在调用递归函数时,每一次的递归调用都会进入栈,最上层的函数调用只能访问自己的变量,不能访问其它调用变量。每一次的调用都会占据一定的内存来存储变量,如果递归没有终止的话,就会把内存占满,从而死机。因此,递归必须有一个终止条件。写递归,遵循这三要素来写,写出正确的递归函数
2022-11-11 13:47:51 1094
原创 call, apply, bind 用法和区别
call, apply, bind 用法和区别call() 和 apply()作用:调用函数,并修改函数运行时的this指向fn.call(thisArg, arg1, arg2, ...)fn.apply(thisArg, [arg1, arg2, ...])// thisArg 当前调用函数this的指向对象// arg1, arg2... 传递的参数1234调用函数this.name = "张三"function fn(x, y) { console.log(thi..
2021-11-11 15:00:14 747
原创 flutter 开发常用Widget
Text组件及其属性://基础格式。Text组件import 'package:flutter/material.dart'; void main() { runApp(MyApp());} class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Text Widgetdddddd',
2021-09-09 10:32:27 427
原创 web自动化程序selenium+chromedriver
前期准备安装node.js 下载node:https://nodejs.org/en/初始化项目安装selenium-webdrier 在自己本地创建一个文件夹selenium-begin 使用cmd 进入selenium-begin文件夹 输入 npm init 初始化项目,根据提示,用默认选项即可。 npm install selenium-webdriver --save</code> 即可自动帮我们下载 selen...
2021-01-27 10:31:49 298
原创 You may have an infinite update loop in a component render function 问题解决
You may have an infinite update loop in a component render function这个问题,一般是在循环中不停修改data中变量,原因是vue中的data()中的属性值是受监听 ,触发计算属性进行计算,出现死循环indexCurrent 值我是放data,就会出现这个问题,解决方法indexCurrent定义为全局...
2021-01-15 17:05:40 1270
原创 模板字符串
es6 的模板字符串,使用更简洁语法://模板字符串拼接let str = `He is ${name},he is a ${occupation}`;插入变量的时候也不需要再使用加号(+)了,而是把变量放入${ }即可。${}中可以放js任意的表达式1、运算表达式2、可以是对象的属性3、可以是函数的调用标签模板tagFn`他叫${name},身高${height}米。`;//标签+模板字符串//定义一个函数,作为标签 function tagFn(arr,v1,v2
2020-09-30 17:48:29 159
原创 路由守卫作用
守卫作用当我们路由切换到一个组件里面,如果没有权限,不让进入,有权限可以进入组件内部守卫1.beforeRouteEnter(to,from,next)当进入组件前 执行函数// to 去哪个路由// from 从哪个路由// next() true 允许进入 / false 不允许 / '/user' 进入user地址// beforeRouteEnter守卫不能访问this,通过 `vm` 访问组件实例 next(vm=>{})2.beforeRouteLeav.
2020-09-30 17:47:50 3271
原创 执行字符串javascript
1.平时底层是给JSON数据,但不排除给字符串js数据,这时候字符串代码就必须解析执行了,常用有俩种方法分别是eval()和new Function()2.new Function()和eval()的区别是,前者把传入的字符串封装为一个function对象的语句返回,直到调用这个返回的函数时,才会执行字符串所要执行的操作;后者则是直接把字符串当做js代码执行例: 底层如果只给js的一些变量数据,使用new Function 函数好一点,可以返回需要的数据模仿底层数据 var a = new Fun
2020-09-30 17:43:44 1655
原创 组件的check
1.在修复问题时发现,项目中基础组件可以从父组件传递数据到子组件,来控制子组件的check,可以用来简化多余check2.使用公共函数validInputBox 来检测组件input中的的内容, 调用check函数检测3.子value 双向绑定数据,根据单项父传子的validate中的规则来过滤value值是否合格,在把结果传回父async function validInputBox() { for (let i = 0; i < arguments.length; i++) {
2020-09-30 17:40:06 211
原创 Vue项目代理设置
1.在vue.config.js中的devServer 里设置proxy2.proxy 是对象,例: '/iss': { target: 'http://' + proxyIpAddress, // 设置你调用的接口域名和端口号.别忘了加http changeOrigin: true // 允许跨域 }, '/iss/config_file.html': { target: 'http://' + proxyIpAdd
2020-09-30 17:33:50 1281
原创 异步执行
异步,es5以前是使用回调函数,回调函数缺点是变成回调地狱,代码不简洁,现在一般使用es6的promise 和es7的 async, async 比promise更简洁1. promise的使用例子const makeRequest = () => getJSON() .then(data => { console.log(data) return "done" })makeRequest()2. async 是es7新增方法.
2020-09-30 17:33:12 163
原创 正则基本写法
1.常用的\ 是转义,和标记为特殊字符,无特殊匹配后面的字符 例:\- \* \- \+ 等,有特殊字符 例:\n 匹配换行符 \r 匹配回车符2.常用的* 是贪婪的,匹配前面子表达式 零次或后面所有3.常用的? 非贪婪,匹配前面子表达式,限制匹配,零次或一次,例:/^[0-9]?$/ 匹配一个0-9的数字4.^和$ 正则的开始和结束5.| 两项之间的一个选择,前面匹配到,后面就不起作用。¶正则使用,常见方法:replace(/\'/g,'-') 作用:一些字符替换另一些字符,或者替换一个与正则
2020-09-30 17:32:06 142
原创 常规for循环和forEach,map 等区别用法
1. 常规for 循环使用支持break 跳出循环,return跳出循环和执行函数返回值,而forEach 使用时用于改变数组,return无法跳出循环,break会报错 ,不能跳出循环和函数返回。map是return可以返回一个新数组,break会报错,不能跳出循环和函数返回。例:for return例:for break例:forEach , return 无效 例: map ,return 返回一个新数组,即使,第二个是为undefined...
2020-09-24 10:26:36 1430
原创 es6 的模板字符串,使用更简洁
语法://模板字符串拼接let str = `He is ${name},he is a ${occupation}`;插入变量的时候也不需要再使用加号(+)了,而是把变量放入${ }即可。${}中可以放js任意的表达式1、运算表达式2、可以是对象的属性3、可以是函数的调用标签模板tagFn`他叫${name},身高${height}米。`;//标签+模板字符串//定义一个函数,作为标签 function tagFn(arr,v1,v2){ conso
2020-08-13 16:31:30 219
原创 vue 强制刷新子组件
问题: 多个子组件的多份数据,在父级修改数据时,另一份数据在子组件中出现变动,但子组件未刷新解决: 只要让子组件强制刷新就可以获取到props传递过来的值了. 利用v-if的特性, 在父组件中强制刷新子组件.<Son v-if="sonRefresh"></Son>data(){ return { sonRefresh: true }}// 下面这段内容写在父组件获取值的地方this.sonRefresh= false;th...
2020-08-13 11:08:06 610
原创 项目中slot-scope的用法
插槽slot的作用,是给组件留位置可以在另一个组件中增加不需复用的内容。slot-scope这个属性,我在AT-GS950/28PS V2项目中发现之前我暂未用到,与正常插槽相比是可以传递数据,叫做作用域插槽在Table这个公共的组件中,都是插槽内容,slot-scope 可以获取到tableData这个数据,并且这个数先是用v-model传到公共组件table用value来接收,在用slot-scope的特性传回到父组件tip:父组件tip:子组件...
2020-08-11 14:01:25 3418
原创 vue组件的自调用(递归调用)
需求:封装一个树形组件,数据结构如下所示,但是层级不确定。treeData:[ {text:1,children:[ {text:2,children:[{text:5},{text:'55'}]}, {text:3}, {text:4}, ]} ]因为层级不确定,那么就存在组件递归调用的可能。通常我们在封装vue组件时会有一个name的属性,它就是用来进行递归调用的。<tem...
2020-07-27 18:21:39 1127
原创 获取本地ssh密钥
1.在当前用户c盘中的Administrator 下创建.shh文件夹,在.shh中在创建一个无后缀文件名,名字自己定义2.在当前页面,执行ssh-keygen 第一项填写刚才定义的文件地址3.在.ssh中创建config文件,里面填写host cameo_gituser githostname 172.22.102.205identityfile ~/.ssh/自己定义的文件名...
2020-07-27 16:42:55 1367
原创 vue的内置组件slot
vue的内置组件slotvue有很多内置的组件,有component,transition, transition-group, keep-alive, slot;其中slot(插槽)官方文档的解释为内容分发的出口,官方解释很抽象,我们不如直接来根据名字插槽来理解,即留出一个位置,你可以插入任何你想显示的东西例如文本或者hml标签为什么要用slot?vue最大的特性就是组件化,在实际项目开发中都会封装公用组件,增强代码复用性。而公用组件就是要可以在多处引用,这就要求网站多处的渲染解构或效果要完全
2020-07-27 16:35:11 183
原创 vuex中mutation和action的区别
一、vuex中mutation和action的详细区别const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } }, actions: { increment (context) { context.commit('increment') }
2020-06-23 14:43:55 1865
转载 Vue 优化
一、vue代码层面1、路由懒加载当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。2、代码模块化咱们可以把很多常用的地方封装成单独的组件,在需要用到的地方引用,而不是写过多重复的代码,每一个组件都要明确含义,复用性越高越好,可配置型越强越好,包括咱们的css也可以通过less和sass的自定义css变量来减少重复代码。3、for循环设置key值在用v-for进
2020-06-22 15:16:27 168
转载 Vue项目中自动将px转换为rem
一、配置与安装步骤:1、在 Vue 项目的 src 文件夹下创建一个 config 文件夹:2、在 config 文件夹中创建 rem.js:3、将以下代码复制到 rem.js 中:// 基准大小const baseSize = 32// 设置 rem 函数function setRem () { // 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。 const scale = document.documentElement.clien...
2020-06-22 14:41:33 2610 2
转载 Vue中extend组件的用法
Vue.extend的用法一、 extend创建的是一个组件构造器,而不是一个具体的组件实例 所以他不能直接在new Vue中这样使用: new Vue({components: first}) 最终还是要通过Vue.components注册才可以使用的。 创建一个div容器放置组件创建一个子组件创建一个父组件局部注册以及全局注册的示例写法结果为:二、在实例化extends组件构造器时,传入属性必须是propsDa...
2020-06-19 16:17:55 1445
原创 vuex直接修改state 与 用commit提交mutation来修改state的差异
一. 使用vuex修改state时,有两种方式: 1)可以直接使用 this.$store.state.变量 = xxx; 2)this.$store.dispatch(actionType, payload) 或者 this.$store.commit(commitType, payload)二. 异同点 1)共同点: 能够修改state里的变量,并且是响应式的(能触发视图更新) 2)不同点: 若将vue创建 store 的时候传入 strict: tr...
2020-06-18 12:00:36 887
原创 vuex mapState、mapGetters、mapActions、mapMutations的使用
例子:index.jsimport Vue from 'vue'import Vuex from 'vuex'import mutations from './mutations'import actions from './action'import getters from './getters'Vue.use(Vuex)const state = { userInfo: { phone: 111 }, //用户信息 orderList: [{ o.
2020-06-18 10:57:31 301
转载 uni-app开发之unipush推送
最近需要开发app,经过多方对比,最终选择了使用dcloud的uni-app,一套代码可以编译七个平台,最主要就是相比于apicloud来说支持本地打包,减少了很多可能会带来的限制。 也就想着,它最大的诟病是说社区不活跃,可是社区氛围也是需要大家一块积极贡献的,那么我们团队加进来也给他增加一点活跃度。做app免不了会需要推送,从服务器主动给客户端发信息联系,这是客户端app相对来说非常大的一个...
2020-04-13 17:23:53 1891
原创 原始值(primitive value)
简单的说:原始值是固定而简单的值,是存放在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置. 原始值是表示Javascript中可用的数据或信息的最底层形式或最简单形式。原始类型的值被称为原始值,是因为它们是不可细化的。也就是说,数字是数字,字符是字符,布尔值则是true或false,null和undefined就是null和undefined。这些值本身很简...
2020-02-28 19:42:41 4316 1
原创 Label的作用是什么
label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。<label for='Name'>Number:</label><input type=“text“name='Name' id='Name'/><label>Date:<input type='text' name=...
2020-02-08 00:48:47 779
原创 常见的浏览器内核
1.Trident内核:IE,MaxThon,TT,The World,360,搜狗浏览器等。[又称MSHTML]2.Gecko内核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等3.Presto内核:Opera7及以上。 [Opera内核原为:Presto,现为:Blink;]4.Webki...
2020-02-08 00:46:38 171
原创 `data-`属性的作用是什么?
`data-`为H5新增的为前端开发者提供自定义的属性,这些属性集可以通过对象的`dataset`属性获取,不支持该属性的浏览器可以通过`getAttribute`方法获取:需要注意的是:`data-`之后的以连字符分割的多个单词组成的属性,获取的时候使用驼峰风格。所有主流浏览器都支持 data-* 属性。即:当没有合适的属性和元素时,自定义的data属性是能够存储页面...
2020-02-05 21:58:36 540
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人