- 博客(31)
- 收藏
- 关注
原创 Vue封装第三方组件
v-bind="attrs的妙用是在创建更高级别的组件,在封装第三方组件时,可以自动将在父作用域中使用的v−bind的属性自动绑定,并向下传入被封装的使用了v−bindattrs"的妙用是在创建更高级别的组件,在封装第三方组件时,可以自动将在父作用域中使用的v-bind的属性自动绑定,并向下传入被封装的使用了v-bind="attrs的妙用是在创建更高级别的组件,在封装第三方组件时,可以自动将在父作用域中使用的v−bind。
2023-02-28 20:02:31 443
原创 大文件上传
1.获取上传文件2.前端上传大文件时使用 Blob.prototype.slice 将文件切片,文件切片后存入数组 fileChunkList。3.并发上传多个切片,最后发送一个合并的请求通知服务端合并切片4.使用 Vue 计算属性根据每个切片的进度算出整个文件的上传进度)
2023-02-28 15:53:03 158
原创 Vue的响应式原理
Vue 通过 defineProperty 完成了 Data 中所有数据的代理,并创建了一个Dep对象。Dep对象用来依赖收集,它实现了一个发布订阅模式,完成了数据Data和渲染视图Watcher的订阅。Data通过obsever转换成getter和setter的形式来追踪变化。
2023-02-18 22:06:47 107
原创 全局作用域和函数作用域
变量的声明提前-使用var关键字声明的变量,会在所有代码声明之前被声明(但是不会赋值),但是如果声明变量时不使用var关键字,则变量不会被声明提前。函数的声明提前-使用函数声明形式创建的function函数(){ },它会在所有代码执行之前就创建,所以我们可以在函数声明前来调用函数。-使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用。-全局作用域中的变量都是全局变量,在页面的任意的部分都可以访问到(2)函数作用域:......
2022-06-15 15:23:04 300
原创 枚举对象中的属性
使用for…in语句,对象中有几个属性,循环体就会执行几次。每次执行时,会将对象中的一个属性的名字赋值给变量。语法:for(var 变量 in 对象){}
2022-06-14 22:45:58 133
原创 立即执行函数,let和var
定义立即执行函数:声明一个函数,并马上调用这个匿名函数就叫做立即执行函数。立即执行函数表达式与立即执行函数相关的面试题为什么alert总是3?因为i是贯穿整个作用域的,而不是给每一个li分配一个i,点击事件onclick使事件异步,用户一定是在for运行完了之后,才点击,此时i已经变成3了。那么怎么解决这个问题,可以用立即执行函数,给每个li创建一个独立的作用域。let和var的区别let是es6中新增的命令,也是用来声明变量的。let和var的区别体现在作用域上。var的作用域被规定
2022-06-14 13:55:32 229
原创 电子邮件的正则
电子邮件hello @abc.com.cn任意字母数字下划线 .任意字母数字下划线 @ 任意字母数字 . 任意字母(2-5位) .任意字母(2-5位)\w{3,} ( .\w+)* @ [A-z0-9]+ ( .[A-z]{2,5}){1,2}
2022-06-13 21:01:21 273
原创 JS-Object类型
Object对象其实就是一组数据和功能的集合。对象的分类:1.内建对象:由ES标准中定义的对象。比如:Math String Number Boolean Function Object…2.宿主对象:由JS的运行环境提供的对象,目前来讲主要是指浏览器提供的对象。比如:BOM DOM3.自定义对象:由开发人员自己创建的对象。使用new关键字调用的函数,是构造函数constuctor,构造函数是专门用来创建对象的函数2、使用对象字面量创建使用对象字面量来创建一个对象:let obj={}使用对象
2022-06-07 12:00:04 470
原创 js数据类型-4.Number
Number数据类型使用IEEE754格式来表示整数和浮点数值。为了支持各种数值类型,ECMA-262定义了不同的数值字面量格式。十进制:最基本的数值字面量,直接在代码里输入。var intNum=55;八进制:在严格模式下是无效的,第一位必须是零(0),然后是八进制数字序列(0~7),如果字面值中的数值超出了范围,那么前导零将会被忽略,后面的数值被当作十进制数解析。var octa1Num1=070; //八进制的56var octa1Num2=079; //无效的八进制数--
2022-05-31 21:58:55 163
原创 js数据类型-3.Boolean
Boolean类型只有两个字面值:true和false。true不一定等于1,false不一定等于0.true和false是区分大小写的,False,True都不是Boolean值。可以对任何数据类型的值调用Boolean()函数,而且总会返回一个Boolean值,下表给出了各种数据类型及其对应的转换规则。数据类型转换为true的值转换为false的值String任何非空字符串" "(空字符串)Number任何非零数字值0和NaNObject任何对象
2022-05-31 14:41:09 125
原创 js数据类型-2.Null
Null 类型是第二个只有一个值的数据类型,这个特殊的值就是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof检测null值时返回object的原因,如下所示:var car=null;alert(car); //object实际上,undefined值是派生自null值的,因此ECMA-262规定对他们的相等性测试要返回true;alert(undefined==null); //truealert(undefined===null); //false
2022-05-31 11:21:39 143
原创 js数据类型-1.Undefined
Undefined类型只有一个值undefined,在使用var声明变量但是未对其初始化时,这个变量的值就是undefined。例如var message;alert(message==undefined);//true上面的例子等价于var message=undefined;alert(message==undefined);//true未声明的变量和尚未定义的变量是不一样的,例如var message; //该变量声明之后默认取得了undefined值 //var
2022-05-31 09:56:40 903
原创 js-数据类型
1.5种简单数据类型(也称基本数据类型):Undefined Null Boolean Number String2.一种复杂数据类型-Object,本质上是由一组无序的名值对组成的ECMAScript不支持任何创建自定义类型的机制 也就是不可以自己定义数据类型3.检测给定变量的数据类型-typeoftypeof是一个操作符而不是函数,所以typeof后有无括号都可。var message="some string";alert(typeof message..
2022-05-30 19:13:17 105
原创 js-<script>元素
向HTML页面插入Javascript的主要方法,就是使用<script>元素。所有<script>元素都会按照他们在页面中出现的先后顺序依次被解析。HTML5为<script>定义了下列6个属性。async:可选。表示应该立即下载脚本,但不应妨碍页面的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。 charset:可选。表示通过src属性指定的代码的字符集,由于大多数浏览器会忽略他的值,因此这个属性很少有人使用。 src: ..
2022-05-30 15:44:07 277
原创 Navigator operation requested with a context that does not include a Navigator.
Flutter命名路由跳转报错Navigator operation requested with a context that does not include a Navigator.解决办法路由跳转功能写在stateful组件中,只需在stateful外层套一个stateless组件。import 'package:login/pages/dataPage.dart';void main() { runApp( MyApp());}class MyApp extends Stat
2022-05-09 16:27:01 1059
原创 flutter ValueListenableBuilder ValueNotifier
在开发应用程序的时候有些数据是全局的,贯穿整个应用程序,比如用户信息,我 们希望当这些数据发生变化时,应用程序任何页面的数据都更新, ValueListenableBuilder 组件就是解决此问题的。对于像字符串或整数这样的简单的变量,只要将它们包装在ValueNotifier中,ValueNotifier(0);ValueNotifier('Hello');基本用法如下ValueNotifier<String> _name=ValueNotifier<String>(.
2022-04-12 15:09:15 2080
原创 flutter inheritedModel
如果你需要让一个深度嵌套的widget来访问最外层widget中的数据,使用inheritedWidget是一种很好的方法。class MyAncestor extends InheritedWidget{const MyAncestor(this.colorOne,this.colorTwo,Widget child,):super(child:child);final Color colorOne;final Color colorTwo;@overridebool updateS
2022-04-07 11:24:29 1802
原创 flutter stream
Stream可以说是构成Dart响应式流编程重要组成部分。还记得之前文章中说过的Future吗,我们知道每个Future代表单一的值,可以异步传送数据或异常。而Stream的异步工作方式和Future类似,只是Stream代表的是一系列的事件,那么就可能传递任意数据值,可能是多个值也可以是异常。比如从磁盘中读取一个文件,那么这里返回的就是一个Stream。此外Stream是基于事件流订阅的机制来运转工作的。首先,在Dart单线程模型中,要实现异步就需要借助类似Stream、Future之类的API实现.
2022-04-07 10:24:06 1909
原创 flutter:fadeInImage占位符淡入图片
从本地存储加载占位图, Flutter加载本地资源文件需要将本地资源放入assets中,assets就是一个资源目录,名字可以自定义.这个assets里面你可以放你需要的一些资源文件:图片,json文件等,也可以添加自定义字体等,其配置在pubspec.yaml文件中,如下图:在flutter中引入本地图片(字体), 我们先在项目根目录建立一个images(fonts)文件夹, 把本地图片资源(字体)拖进去,在pubspec.yaml中配置, 特别注意, 一定要注意缩进, 否则无法读取图片路径。在页.
2022-04-06 16:14:13 1110
原创 flutter :CustomScrollView+SliverGrid+SliverList
在实际业务场景中经常见到这样的布局,顶部是网格布局(GridView),然后是列表布局(ListView),滚动的时候作为一个整体,这时候就需要使用CustomScrollView+SliverGrid+SliverList来实现。CustomScrollView是使用Sliver组件创建自定义滚动效果的滚动组件。使用场景:(1)ListView和GridView相互嵌套场景(2)一个页面顶部appBar,然后是GridView,最后是ListView,这 3个区域以整体来滚动,AppBar具有吸顶效果
2022-04-06 15:39:21 1282
原创 flutter报错:unimplemented handling of missing static target flutte
报错内容unimplemented handling of missing static target flutte解决办法:不要热加载,点绿色的三角箭头
2022-04-02 11:24:02 1077
原创 Flutter轮播图
AndroidStudio Flutter 运行报错Error: Cannot run with sound null safety, because the following dependencies don’t support null safety解决方法Run --> Edit Configurations --> Add Additional Run args --> --no-sound-null-safety
2022-03-25 14:34:13 1403
原创 flutter命名路由报错
Flutter路由配置时遇到的bug:报错Could not find a generator for route RouteSettings(“XXX”, null) in the _WidgetsAppState.原因在工程中使用命名路由时 使用“/”作为根路径,//配置路由final routes={‘/’:(context)=>Tabs(),‘/appBarDemo’:(context)=>AppBarDemoPage(),‘/tabBarController’:(cont
2022-03-21 11:09:28 4449 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人