框架与工具:
一句话概括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的优点
- 解决了非父子组件的消息传递(将数据存放在state中)
- 减少了AJAX请求次数,有些情景可以直接从内存中的state获取
vuex的缺点
- 刷新浏览器,vuex中的state会重新变为初始状态
- 使用起来需要同时操作多处,略显麻烦。所有官方也提出了对于单人开发的小项目不建议去使用。但很适合大型项目开发。
jquery和vue的本质区别
jQuery是使用选择器( (“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:从远程仓库下载新分支与数据