- 博客(56)
- 收藏
- 关注
原创 uni-app。在一个页面多次使用editor组件产生的问题。
uni-app。在一个页面多次使用editor组件产生的问题。如果一个页面中多次使用editor组件,文本的操作只会生效第一个editor组件。废话不多说,直接上代码:<template> <view> <editor id="editor1"></editor> <editor id="editor2"></editor> </view></template>解:分别给不同
2021-08-31 10:51:47 874 1
原创 javascript二分查算法。
算法条件:1、必须采用顺序存储结构(如:数组)。2、必须按关键字大小有序排列(数组里的值,要么从大到小,要么从小到大算法思路:1、将数组分成前后两半(也称折半算法)。2、拿到数组的中间值(middle),最后用需要查找的值(target)来进行与中间值(middle)比较大小,比完大小后才能查出,自己需要的值是在前半部分数组,还是后半部分。因为此时数组要么都是从大到小,要么是从小到大。****(总的来说:middle > target)3、折半第一次如果还找不到,则继续折半查找。图1:
2021-01-05 23:54:51 177
原创 javascript理解作用域(一)。
最近看了本书籍(你不知道的javascript上卷),总结一下对作用域的看法。你可能觉得这是一句声明:var a = 1;但引擎认为这里有两个完全不同的的声明:1、编译器在编译时的处理。2、引擎在运行时的处理。什么是编译器?负责语法分析及代码生成等脏活累活。什么是引擎?从头到尾负责整个js程序的编译及执行过程。理解了上面的内容后,我们来看看编译器与引擎是如何处理以下代码。var a = 1;编译器:遇到var a,编译器会询问作用域在同一个作用域的集合中是否存在相同的变量。如果存
2020-10-14 01:22:54 147
原创 js 前增量++i与后增量i++的区别。
前增量:对操作数进行增量计算,并且返回计算后的值。let i = 1;// 此时++1为2,下面相当于k = 2;k = ++i; // i=2 k=2后增量:也对操作数进行增量计算,不过并不是返回计算后的值,而是返回未做增量的值。 let i = 1; // i++后返回1的值,也就是未做增量的值,相当于k = 1; k = i++; // i=2 k=1;...
2020-09-20 16:21:43 660
原创 js新特性可选链?.操作符。
官方:可选链操作符提供了一种方法来简化被连接对象的值访问。(目前还是需要通过babel来进行转码)说人话就是:假如我访问一个对象的层次为三层,在访问第二层的时候就给我返回了null或者undefined,这时候访问不就乱套了,这时候得一层一层的判断得多麻烦,列子如下:let obj = { children:{ name:"李四" }}当我需要访问的时候:let obj = { children:{ name:"李四" }}// 这么写没毛病,但是
2020-09-20 15:58:56 912
原创 ES6 proxy实现vue双向绑定。
<!--html代码,其他的就省--> <div id="app"> <div>{{name}}</div> <div>{{age}}</div> <input type="text" v-model="name" /> <input type="text" v-model="age" /> </div> <script..
2020-09-19 23:53:47 187
原创 el-table快速区分全选与否。
这里一些绑定属性什么的就直接过滤了。当然还有很多种方法,这里只是简单举个例子。// 通过class-name来定义一个类名<el-table @select-all="handleSelectAll"> <el-table-column type="selection" class-name="isCheck"></el-table-column></el-table>methods:{ handleSelectAll(){ let d
2020-09-11 21:08:41 1851
原创 js数组快速降维的一种方法。
直接上代码:let arr = [1,2,3,[2],[3,[4,[7]]]];arr.toString();// 1,2,3,2,3,4,7
2020-06-26 11:18:11 193
原创 批量异步更新策略。
什么叫批量异步更新?假设你每次setter触发某个数据的时候,对应的Watcher对象会被放入一个队列中,等到下一次tick的时候,将队列中的Watcher对象全部拿出来执行。(关于Watcher在我的另一篇文章有介绍(收集依赖))。第一个tick:执行全局的script代码开始。UI render结束,本轮tick也就结束了。举个关于批量异步更新的例子:let has = {}; // 用来判断是否存在相同的watcherlet queue = []; // 可以理解为队列的容器let wat
2020-05-28 18:07:16 321
原创 Vue响应式系统之收集依赖原理。
为什么要收集依赖?举个例子:// 假设我们有多个Vue对象// 这个全局变量需要在所有Vue对象都能进行展示let obj = { count:0}let vm1 = new Vue({ template:`<div>{{count}}</div>`, data:obj})let vm2 = new Vue({ template:`<div>{{count}}</div>`, data:obj})//这时候我们要对象全局
2020-05-27 17:24:52 241
原创 Vue源码理解之响应式。
Vue响应式原理依赖Object.defineProperty,这也是vue不兼容ie8及以下的原因。function proxy(data,r){ const _this = this; // 此时拿到的是vue对象 Object.keys(data).forEach(key=>{ // 拿到对象的所有key值,返回一个数组,然后遍历 // 参数一:要定义属性的对象、参数二:要定义或修改的属性的名称 // 参数三:要定义或修改的属性描述符 Object.definePr
2020-05-26 14:59:10 128
原创 ES6箭头函数,避免使用场景。
话不多说,直接上代码!一、ele.addEventListener('click',()=>{ // ele==》元素 console.log(this); // 注意:这里的this指向window});ele.addEventListener('click',function(){ // ele==》元素 console.log(this); // 注意:这里的this...
2019-11-29 17:59:05 217 1
原创 BIMFACE之Glodon.Web.Graphics。
颜色,可采用RGB或十六进制实现<script>var GlodonColor = new Glodon.Web.Graphics.Color(r,g,b,透明度);var GlodonRed = new Goldon.Web.Graphics.Color(255,0,0,1); // 使用var GlodonReds = new Glodon.Web.Graphics....
2019-05-01 13:23:46 355
原创 BIMFACE之SectionBox。
剖切盒:<script>// 剖切盒配置var SectionBoxConfig = new Glodon.Bimface.Plugins.Section.SectionBoxConfig(); SectionBoxConfig.viewer; // 剖切的三维视图// 创建剖切盒对象var SectionBox = new Glodon.Bimface.Pl...
2019-05-01 13:17:29 417
原创 BIMFACE之Measure。
测量类的配置:<script>// 配置var MeasureConfig = new Glodon.Bimface.Plugins.MeasucreConfig(); MeasureConfig.viewer; // viewer3D或viewer2D对象 MeasureConfig.color; // 测量线和端点的颜色 MeasureConfig.m...
2019-04-30 18:55:57 365
原创 BIMFACE之Annotation。
绘制批注管理器。目前只有RVT RVT集成模型,IFC IGMS dwg可用<script>// 批注的配置var AnnotationMangerConfig = new Glodon.Bimface.Plugins.Annotation.AnnotationManagerConfig(); AnnotationManagerConfig.viewer; ...
2019-04-30 18:44:13 347
原创 BIMFACE之Marker3D。
某个具体被添加到视图中的三维标签,由Marker3DContainer管理。图片默认大小 128128px 要求比例是1:1图片在模型浏览器时显示的默认大小 3232px<script>// 三维标签的配置项var Marker3DConfig = new Glodon.Bimface.Plugins.Marker3D.Marker3DConfig(); Mar...
2019-04-30 17:39:49 709
原创 BIMFACE之Marker3DContainer。
在viewer3D视图上添加三维标签时,首先要创建一个三维标签的容器,用以添加,删除各种三维标签。目前只有RVT RVT集成模型 SKP IFC IGMS可用。<script>// 三维标签的配置项var marker3DContainerConfig = new Glodon.Bimface.Plugins.Marker3D.Marker3DContainerCon...
2019-04-30 17:23:28 410
原创 BIMFACE之Walkthrough。
路径漫游管理器<script>//路径漫游的配置项var walkthroughConfig = new Glodon.Bimface.Plugins.Walkthrough.WalkthroughConfig(); walkthroughConfig.stopCallback; // 属性为回调函数 walkthroughConfig.time; // 漫游...
2019-04-30 17:05:12 448
原创 BIMFACE之Drawable。
在viewer2D或viewer3D的视图上添加外部元素时,首先要创建一个外部元素的容器,用以添加,删除各种元素。目前只有rvt与rvt集成模型,skp,IFC,IGMS,dwg可用。<div id='domId'></div><button id='drawableBt'>删除</button><script>var dr...
2019-04-30 16:36:10 550 2
原创 BIMFACE之3D。
操作三维模型:<div id='domid' style='宽高'></div><script>var domId = document.getElementById('domShow'); // 获取元素idvar config = new Glodon.Bimface.Viewer.Viewer3DConfig(); // 配置项 conf...
2019-04-30 13:39:54 1804 7
原创 第二天学习BIMFACE。
操作矢量图:<script>var domShow = document.getElementById("domId"); // 老样子 还是获取idvar viewConfig = new Glodon.Bimface.Viewer.ViewerDrawingConfig(); // 配置项 viewConfig.domElement = domShow; // 设置...
2019-04-30 08:42:07 721
原创 第一天学习BIMFACE。
首先注册登陆到BIMFACE官网,直接输入名称即可找到。想要成为开发者,先创建免费应用,拿到APP证书。随后在控制台里面的应用管理,找到源文件-上传文件,上传你想要上传的文件,注意文件类型是否匹配。上传好了会出现你所上传的文件信息,找到发起转换,并点击。随之在同级找到文件转换并点击,再找到获取viewToken并点击,出现一个弹窗并点击复制,复制的便是viewToken了。好,现在我们打...
2019-04-29 19:13:51 3625
原创 面试总结。
vue中加key有什么用?为了给Vue一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素。let与const的作用?let是块级作用域,不存在变量提升。不能重复定义。存在暂时性死区。const是一个常量。常量不允许改变,都是块级作用域。存在暂时性死区。不存在变量提升,不能重复定义。axios与ajax的区别及axios的优点?区别:axios基于一个promise的...
2019-04-24 21:38:06 132
原创 面试总结。
今天去面试了,也顺利拿到了offer,总结一下。<body> <input id="check" type="checkbox">顶层 <input id="check1" type="checkbox">二层 <input class="check2" type="checkbox">三层 <input cl...
2019-04-23 23:09:05 114
原创 Vuex的五大特性。
vuex一般用于单页应用、加入购物车、音乐播放器、组件之间的状态、登录状态。state就是一个仓库,数据源的存放处。它是响应式的,如果从组件里获取数据,数据源发生改变,组件也随之发生改变。getter可以对state进行操作,相当于state数据的计算属性。也可以在组件中复用。mutation同步执行。修改state数据的唯一途径。直接变更state状态。action可以包含异...
2019-04-23 00:21:13 3331
原创 javascript之递归。
(function f(n){ return ( (n<1)? n*f(n-1):n )})(6); // 720为什么print 720呢?每次计算都会回调自身,递归是逆向思维,从下往上算。6 * (n-1) ==> 6 * 120 = 720 结果5 * (n-1) ==> 5 * 24 = 120 return 1204 (n-1) ==&g...
2019-04-21 11:38:04 243
原创 js基础算法题。
数组去重:<script>function arr(arrs){if(arrs instanceof Array){ // 判断是否为数组var result = [];for(var i = 0;i<arrs.length;i++){ // 遍历数组中的每个值 if(result.indexOf(arrs[i])<0){ // 判断result是否有a...
2019-04-19 17:04:13 467
原创 javascript继承写一个监听事件。
function Element(el){this.el = document.getElementById(el);}Element.protptype.addEventListeners= function(type,select,fn){ if(fn==null){ fn = select; select = null;}var that = this.el;that...
2019-04-18 12:16:02 335
原创 Vue介绍(面试可能会问到)。
什么是MVVM:M:model数据层V:viewDOM层VM:view-model处理数据界面的中间层,指vuevue是什么?vue是js的MVVM库,只关注视图层,以数据为驱动,vue将自身和DOM进行绑定,DOM与数据同步变化。它有什么特点:1、简洁:html+json数据+vue实例组成2、数据驱动:DOM与数据同步变化3、组件化:组件复用,维护性高4、轻量:代码量小...
2019-04-17 09:44:13 1336
原创 Vue生命周期。
beforecreate:实例创建之前。数据未初始化,不能获取到Vue实例里面的任何数据。created:实例已经创建完毕。vue实例里面的数据可以访问到,但是this.$el挂载点未初始化。beforeMount:this.$el挂载点已初始化,模板还未渲染到页面Mounted:用户看到的是模板已经渲染到页面。beforUpdate:vue实例里面的message数据更新之前。...
2019-04-17 09:13:59 124
原创 今天遇到的几个Vue面试题。
1、怎么定义vue-router的动态路由以及如何获取过来的参数:在router文件下的index.js,在path属性中添加/:id。使用router对象的params.id来获取参数2、vue-router有哪几种钩子函数?三种:全局钩子函数:router.beforeEach(to,from,next),用于页面跳转前判断拦截。组件内的钩子:beforeRouteEnter 、b...
2019-04-16 21:29:18 196
原创 H5之canvas详解。
使用:注意绘制的顺序,否则不会生效。fillRect参数: x坐标 y坐标 宽度 高度arc参数: x坐标 y坐标 r半径 起始角 结束角 设置顺时针(false)还是逆时针(true)<canvas id='square' width10 height=20><canvas id='circle' width=10 height=10>&...
2019-04-11 13:23:27 1893
原创 javascript客户端储存。
localStorage:localStorage储存的数据是永久性的,除非自己刻意删除。localStorage的作用域受限制,如果用firefox访问,下次用另一个浏览器再次访问的时候,是无法获取上次的数据。非同源文档无法共享数据。同源主要是通过主机名、协议、端口来确定。使用:// 以userName储存一个张三localStorage.setItem('userName','张三...
2019-04-10 11:43:14 196
原创 jQuery插件扩展。
jQuery.fn是所有jQuery对象的原型对象。如果要给该对象添加一个函数,该函数会成为jQuery方法。jQuery可以写成$,看个人爱好。jQuery.fn.println = function(){ // 添加一个println函数,也就是给jq添加一个方法// 将所有的参数合并,空格分隔的字符串var msg = Array.prototype.join.call(a...
2019-04-09 15:22:39 209
原创 jQuery选择器大全。
过滤器:#id:匹配id属性为id的元素。通常作为独立选择器使用。.class:匹配class属性,含有class属性的单词的所有元素。[attr]:匹配拥有attr属性所有的元素。[attr=val]:匹配拥有attr属性且值为val的所有元素。[attr!=val]:匹配没有attr属性,或者attr的值不为val的所有选择器。[attr^=val]:匹配attr属性值...
2019-04-09 14:49:38 100
原创 jQuery所有工具函数及两个属性。
$.browser属性:browser属性是一个属性,可用于客户端嗅探。浏览器为IE,该对象会拥有一个msie属性,值为true。如果是firefox与其相关,会有一个值为true的mozilla属性。还有一个浏览器版本号,version属性。$.contains():接收两个文档元素作为参数。如果第一个元素包含第二个,则返回true,否则false。$.each():可以遍历数组元素与...
2019-04-09 11:17:59 311
原创 jQuery.ajax详解。
$.ajax({type:'GET', // 请求方法url:url, // 获取的地址data:null, // 不给url添加任何数据dataType:'script', // 一旦获取到数据,立刻当做脚本执行success:callback // 完成时调用回调函数})type:指定的HTTP请求方法。默认为get,另一个是post,还可以指定其他的请求方法,DE...
2019-04-09 00:03:29 442
原创 javascript之Ajax详解。
XMLHttpRequset使用:每一个实例都表示一个独立的请求、响应,且这个对象的属性和方法允许指定请求细节和提取响应的数据。使用前必须实例化XMLHttpRequest对象。var requset = new XMLHttpRequest();IE7之前的版本不支持XMLHttpRequset()构造函数,但能以下模拟:if(window.XMLHttpRequest ...
2019-04-08 14:21:44 187
原创 javascript事件处理程序详解。
事件处理程序:addEventListener();document对象和所有文档元素都定义了一个名叫addEventListener()方法,使用这个方法人可以为事件目标注册事件处理程序。接收三个参数,第一是要注册处理程序的事件类型,可以是字符串或名字,但不可以带处理程序属性的on前缀。第二是指定类型的事件发生时调用的函数。第三是布尔值,一般会给这个参数为false,如果为true,那么函数...
2019-04-07 20:41:23 243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人