框架与工具 相关

框架与工具:

一句话概括RESTFUL

就是用URL定位资源,用HTTP描述操作

vue的生命周期

Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。

每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化、运行中、销毁。

实例、组件通过new Vue() 创建出来之后会初始化事件和生命周期,然后就会执行beforeCreate钩子函数,这个时候,数据还没有挂载呢,只是一个空壳,无法访问到数据和真实的dom,一般不做操作

挂载数据,绑定事件等等,然后执行created函数,这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数,在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取

接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染,然后执行beforeMount钩子函数,在这个函数中虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated,在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取

接下来开始render,渲染出真实dom,然后执行mounted钩子函数,此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了,可以在这里操作真实dom等事情…

当组件或实例的数据更改之后,会立即执行beforeUpdate,然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染,一般不做什么事儿

当更新完成后,执行updated,数据已经更改完成,dom也重新render完成,可以操作更新后的虚拟dom

当经过某种途径调用$destroy方法后,立即执行beforeDestroy,一般在这里做一些善后工作,例如清除计时器、清除非指令绑定的事件等等

组件的数据绑定、监听…去掉后只剩下dom空壳,这个时候,执行destroyed,在这里做善后工作也可以

vue数据流

单向数据流:简而言之,单向数据流就是model的更新会触发view的更新,view的更新不会触发model的更新,它们的作用是单向的。

vue响应式原理

当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter。这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue 能够追踪依赖,在属性被访问和修改时通知变更。

讲讲Vue的插槽slot 和scope slot

https://cn.vuejs.org/v2/guide/components-slots.html

订阅-发布者模式,数据劫持

vuex是做什么的?缺点?

vuex的优点

  1. 解决了非父子组件的消息传递(将数据存放在state中)
  2. 减少了AJAX请求次数,有些情景可以直接从内存中的state获取

vuex的缺点

  1. 刷新浏览器,vuex中的state会重新变为初始状态
  2. 使用起来需要同时操作多处,略显麻烦。所有官方也提出了对于单人开发的小项目不建议去使用。但很适合大型项目开发。

jquery和vue的本质区别

jQuery是使用选择器( D O M H T M L 便 D O M l a b e l )选取DOM对象,对其进行赋值、取值、事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的。比如需要获取label标签的内容:` (“lable”).val();`,它还是依赖DOM元素的值。

Vue则是通过Vue对象将数据和View完全分离开来了。对数据进行操作不再需要引用相应的DOM对象,可以说数据和View是分离的,他们通过Vue对象这个vm实现相互的绑定。这就是传说中的MVVM。

vue的最大特点

数据驱动

怎么实现数据驱动

数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom

vuejs在实例化的过程中,会遍历传给实例化对象选项中的data 选项的所有属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter。

同时每一个实例对象都有一个watcher实例对象,他会在模板编译的过程中,用getter去访问data的属性,watcher此时就会把用到的data属性记为依赖,这样就建立了视图与数据之间的联系。当之后我们渲染视图的数据依赖发生改变(即数据的setter被调用)的时候,watcher会对比前后两个的数值是否发生变化,然后确定是否通知视图进行重新渲染。

这样就实现了所谓的数据对于视图的驱动。

https://segmentfault.com/a/1190000013276124

https://www.cnblogs.com/cjm123/p/8593896.html

Vue的compute和watch区别

首先它们都是以Vue的依赖追踪机制为基础的,它们的共同点是:都是希望在依赖数据发生改变的时候,被依赖的数据根据预先定义好的函数,发生“自动”的变化

但watch和computed也有明显不同的地方:

watch和computed各自处理的数据关系场景不同

1.watch擅长处理的场景:一个数据影响多个数据

2.computed擅长处理的场景:一个数据受多个数据影响

https://www.cnblogs.com/jianxian/p/11993430.html

ant-design优点和缺点

优点:组件非常全面,样式效果也都比较不错。

缺点:框架自定义程度低,默认UI风格修改困难。

webpack用来干什么

WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。

https://www.cnblogs.com/shaozhu520/p/10399227.html

webpack原理

https://www.cnblogs.com/chengxs/p/11022842.html

node的事件方法讲讲看

Event模块是一个简单的事件监听器模式的实现,具有addListener/on,once,removeListenter、removeAllListener、emit等基本的事件监听模式方法的实现

https://blog.csdn.net/yin_you_yu/article/details/80104270

Node的IO异步线程

https://blog.csdn.net/charlene0824/article/details/51711154

非js写的Node.js模块是如何使用Node.js调用的

https://blog.csdn.net/qq_34832846/article/details/88029170

express

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。

https://www.runoob.com/nodejs/nodejs-express-framework.html

git

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  • **工作区:**就是你在电脑里能看到的目录。
  • **暂存区:**英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • **版本库:**工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

git相关命令

  • git init :命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行。在执行完成 git init命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。

  • git clone:使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

  • Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

    git add:git add 命令可将该文件添加到缓存。

  • git status:git status 以查看在你上次提交之后是否有修改。

  • git diff

    执行 git diff 来查看执行 git status 的结果的详细信息。

    git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。

  • git commit :执行 git commit 将缓存区内容添加到仓库中。

  • git reset HEAD:git reset HEAD 命令用于取消已缓存的内容。

  • git rm:如果只是简单地从工作目录中手工删除文件。

  • git mv:git mv 命令用于移动或重命名一个文件、目录、软连接。

  • git branch (branchname):创建分支命

  • git branch:会列出你在本地的分支

  • git checkout (branchname):切换分支命令

  • git merge :合并分支命令

  • git branch -d (branchname):删除分支命令

  • git log: 命令列出历史提交记录

  • git push [alias] [branch]:将你的 [branch] 分支推送成为 [alias] 远程仓库上的 [branch] 分支

  • git fetch:从远程仓库下载新分支与数据

发布了60 篇原创文章 · 获赞 121 · 访问量 7548

猜你喜欢

转载自blog.csdn.net/weixin_46124214/article/details/104780899