- 博客(22)
- 收藏
- 关注
原创 使用babel实现简版webpack
const fs = require('fs');const path = require('path');const parser = require('@babel/parser');const traverse = require('@babel/traverse').default;const babel = require('@babel/core');//模块分析 用于分析...
2020-03-22 22:59:34 190
原创 简单实现vue的响应式和双向绑定
首先我们先大概讲一下思路 我们需要5个类 可以理解成无人类 不同人拥有不同的技能1. mvvm 用来整合 可以理解成boss2. compiler 用来把数据编译到指定的元素例如我们给一个input添加了v-model='person.name'属性 那么compiler要做的就是找到person.name对应的值并把这个值赋给input的value3. watcher 用来观察dat...
2020-03-22 17:36:43 173
原创 前端知识梳理 —— js
内置类型js中分为七种内置类型 七种内置类型又分为基本类型和对象类型基本类型有六种:null undefined boolean string number symbol其中js中数字类型是浮点型 没有整型 并且浮点型是基于IEEE 754标准实现 在使用过程中会遇到精度不准的bugNaN也属于number类型 并且NaN不等于自身对象类型是引用类型 所以会存在浅拷贝和深拷贝的问题le...
2020-03-11 14:52:22 199
原创 惰性函数
定义:惰性载入表示函数执行的分支只会在函数第一次掉用的时候执行,在第一次调用过程中,该函数会被覆盖为另一个按照合适方式执行的函数,这样任何对原函数的调用就不用再经过执行的分支了。上面一坨可能看起来不那么优雅 下面我们直接亮代码我们就以一个简单的需求来介绍惰性函数吧需求:函数返回第一次调用的时间戳 之后不管执行多少次 函数返回的都是第一次调用的时间戳var t = null;functi...
2020-01-18 10:12:04 285
原创 call和apply的实现
话不多说 直接进入正题call的实现功能分析: 改变this指向 并且可以传参实现分析:我们知道方法谁调用的this就指向谁 而call是改变this指向foo.call(obj); //这里call将foo函数中的this指向了objobj.foo(); //这里我们通过obj调用foo 所以foo函数中的this也指向obj所以我们便可以通过这种方式实现 下面直接上代码Fun...
2020-01-17 11:12:12 267
原创 深入理解js中的对象
ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征。 ECMA-262定义这些特性是为了实现 JavaScript 引擎用的,因此在 JavaScript 中不能直接访问它们。为了表示特性是内部值,该规范把它们放在了两对儿方括号中,例如[[Enumerable]]。以上是高程3的原话 意思就是es给对象属性定义了一些特性...
2019-12-27 11:11:20 169
原创 js中的类型转换
类型转换对于刚开始接触js的朋友是一个非常头痛的的事情 而现在我争取用一篇博客让你搞懂js中常见的类型转换=> Boolean布尔类型转化为布尔类型其实比较简单空字符 => false0 => falseNaN => falseundefined => falsenull => false其他的均为true=> NumberStrin...
2019-12-26 17:28:12 171
原创 4. vue源码分析——响应式原理
数据驱动是vue的一个核心思想 这个在2.vue源码分析——数据驱动已经了解过了 这次我们来了解vue的响应式原理 所谓响应式就是当我们数据发生变化时 视图会根据数据的变化重新渲染 使得我们在开发过程中可以通过修改数据来实现视图更新1. 响应式对象 上...
2019-12-18 13:47:07 165
原创 3.vue源码分析——组件化
组件化是vue中另一个核心思想 所谓组件化 就是把页面拆分成多个组件 每个组件依赖的css js 模板 图片等资源放在一起开发维护 组件是资源独立的 组件在系统内部可以复用 组件和组件之间可以相互嵌套1. createComponent上一篇我们了解了普通vnode的生成 现在我们来看看组件vnode的创建 依然是通过_createElement函数创建 里面会做一层判断 得知是组件时调用cr...
2019-12-18 11:20:49 410
原创 2. vue源码分析——数据驱动
数据驱动是vue的一个核心思想 本篇我们的目标就是要搞懂我们写入的插值表达式是怎样渲染成dom的 这期间究竟发生了什么1. new Vue发生了什么在看之前 我希望你已经了解了vue的执行流程 不了解的朋友可以看我的上一篇博客这里我们先从src/core/instance/inde.js文件开始当我们new Vue时 首先vue做了警告处理 然后初始化了options 但是我们在这里并没...
2019-12-16 17:04:57 527
原创 1. vue源码分析——准备工作
本次源码分析的vue版本为2.x版本 在分析vue源码之前 我们需要先准备一些必要的知识 这样看源码时才不会出现一些疑惑 下面我们进入正题1. 认识flow我们都知道js是动态类型语言 它的灵活性有目共睹 但这也意味着我们在写js代码的时候很容易写出一些非常隐蔽的隐患代码 为了解决这个问题 vue使用了flow类型检查工具 之所以选择flow 主要因为babel和eslint都有对应的插件以及...
2019-12-16 14:51:53 455
原创 mongoDB安装和使用
**安装地址:**https://www.mongodb.com/download-center/community然后选择自己的系统和需要安装的版本 选择好了之后直接download就行了下载完成之后打开一路next然后选择需要安装的地址 我选在c盘这里默认是会安装图形化管理工具 由于选中安装太慢 我们这里把他去掉 如果想要安装可以在去官网下载有些人安装时会出现一下问题我们可...
2019-12-11 16:15:39 238
原创 express路由及中间件原理
本来可以写一些注释方便阅读的 但是由于我不想把一页代码分成几页 于是去掉了注释 并进行了把一些代码写成了一行 在此说声抱歉
2019-12-06 17:43:25 190
原创 网络知识
OSI七层模型:应用层:提供网络与用户软件之间的接口服务表示层:提供格式化的表示和转换数据服务 比如加密和压缩会话层:提供访问验证和会话管理在内的建立和维护应用之间通信的机制传输层:提供建立 维护和取消传输连接功能 负责可靠的数据传输网络层:处理网络间路由 确保数据及时传送数据链路层:负责无错传输数据 确认帧 发错重传 ip解析成mac物理层:提供机械 电气工能和过程特性TCP...
2019-12-05 17:34:14 165
原创 node中的fs核心模块
通过fs模块实现文件内容的拷贝:所用api:fs.open(path[, flags[, mode]], callback)fs.read(fd, buffer, offset, length, position, callback)fs.write(fd, buffer[, offset[, length[, position]]], callback)代码如下:通过fs模块实...
2019-12-04 17:40:11 123
原创 字符发展历史
基础知识:计算机存储的数据基本单位是位(bit) 也是所谓的二进制数据(0 和 1)计算机传输的数据基本单位是字节(byte) 一个字节由八个位组成 因此一个字节有256种表现形式js中的进制:0b 二进制0o 八进制0x 十六进制js中的进制转换:把任意进制转化为十进制parseInt()把十进制转化为任意进制toString()ASCII:最开始的电脑只在美国...
2019-12-03 17:49:12 280
原创 node中的events
events模块是node内置的核心模块 这个模块是node中一个非常重要的核心模块 node中所有能触发事件的对象都是这个类的实例下面我们简单了解一下实例的常用方法实例的常用方法:addListener(event, listener)on(event, listener)once(event, listener)removeListener(event, listener)re...
2019-12-03 10:23:57 463
原创 node基础
node特点:1. 异步单线程:我们知道php和java这些后端语言是多线程 但为什么node却采用了异步单线程呢 这样做的好处是什么呢优点:节约服务器内存(线程越多占用的内存越多)节约上下文切换的时间(由于多线程实现原理是通过切换时间片来实现的 所以线程越多 需要切换的次数就越多 耗费的时间越长)不存在锁的问题 (java通常会通过给进程加锁来解决多个线程访问同一资源的问题 而单线...
2019-12-02 15:51:37 262
原创 vue在mounted钩子中获取元素为undefined
为什么会出现在mounted钩子函数中获取元素失败呢原因:我们的dom中的数据是通过异步获取到的 而mounted钩子函数只会执行一次并且在他执行的时候数据还没有请求过来 所以获取不到dom解决方法:我们可以watch与dom相关的数据 这里我们异步获取的数据是list因为我们watch数据变化后dom不会立即更新 这里需要加上nextTick这样我们就可以获取到dom元素了**...
2019-11-29 18:18:59 4468
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人