react用过react的开发者可能知道,react是没有模板的,直接就是一个渲染函数,它中间返回的就是一个虚拟DOM树,React推荐的做法是 JSX + inline style, 也就是把HTML和CSS全都写进JavaScript了,即'all in js' 。JSX实际就是一套使用XML语法,用于让我们更简单地去描述树状结构的语法糖 。在react中,所有的组件的渲染功能都依靠JSX 。你可以在render()中编写类似XML的语法,它最终会被编译成原生JavaScript 。不仅仅是 HTML 可以用 JSX 来表达,现在的潮流也越来越多地将 CSS 也纳入到 JavaScript 中来处理 。JSX是基于 JS 之上的一套额外语法,学习使用起来有一定的成本 。
构建工具vuevue提供了CLI 脚手架,可以帮助你非常容易地构建项目 。全局安装之后,我们就可以用 vue create命令创建一个新的项目,vue 的 CLI 跟其他 CLI不同之处在于,有多个可选模板,有简单的也有复杂的,可以让用户自定义选择需要安装的模块,还可以将你的选择保存成模板,便于后续使用 。
极简的配置,更快的安装,可以更快的上手 。它也有一个更完整的模板,包括单元测试在内的各种内容都涵盖,但是,它的复杂度也更高,这又涉及到根据用例来选择恰当复杂度的问题 。
reactReact 在这方面也提供了 create-react-App,但是现在还存在一些局限性:
- 它不允许在项目生成时进行任何配置,而 Vue CLI 运行于可升级的运行时依赖之上,该运行时可以通过插件进行扩展 。
- 它只提供一个构建单页面应用的默认选项,而 Vue 提供了各种用途的模板 。
- 它不能用用户自建的预设配置构建项目,这对企业环境下预先建立约定是特别有用的 。
数据绑定vuevue是实现了双向数据绑定的mvvm框架,当视图改变更新模型层,当模型层改变更新视图层 。在vue中,使用了双向绑定技术,就是View的变化能实时让Model发生变化,而Model的变化也能实时更新到View 。
Vue采用数据劫持&发布-订阅模式的方式,vue在创建vm的时候,会将数据配置在实例当中,然后通过Object.defineProperty对数据进行操作,为数据动态添加了getter与setter方法,当获取数据的时候会触发对应的getter方法,当设置数据的时候会触发对应的setter方法,从而进一步触发vm的watcher方法,然后数据更改,vm则会进一步触发视图更新操作 。
reactreact是单向数据流,react中属性是不允许更改的,状态是允许更改的 。react中组件不允许通过this.state这种方式直接更改组件的状态 。自身设置的状态,可以通过setState来进行更改 。在setState中,传入一个对象,就会将组件的状态中键值对的部分更改,还可以传入一个函数,这个回调函数必须向上面方式一样的一个对象函数可以接受prevState和props 。通过调用this.setState去更新this.state,不能直接操作this.state,请把它当成不可变的 。调用setState更新this.state,它不是马上就会生效的,它是异步的 。所以不要认为调用完setState后可以立马获取到最新的值 。多个顺序执行的setState不是同步的一个接着一个的执行,会加入一个异步队列,然后最后一起执行,即批处理 。
setState是异步的,导致获取dom可能拿的还是之前的内容,所以我们需要在setState第二个参数(回调函数)中获取更新后的新的内容 。
diff算法vuevue中diff算法实现流程
- 在内存中构建虚拟dom树
- 将内存中虚拟dom树渲染成真实dom结构
- 数据改变的时候,将之前的虚拟dom树结合新的数据生成新的虚拟dom树
- 将此次生成好的虚拟dom树和上一次的虚拟dom树进行一次比对(diff算法进行比对),来更新只需要被替换的DOM,而不是全部重绘 。在Diff算法中,只平层的比较前后两棵DOM树的节点,没有进行深度的遍历 。
- 会将对比出来的差异进行重新渲染
- DOM结构发生改变-----直接卸载并重新create
- DOM结构一样-----不会卸载,但是会update变化的内容
- 所有同一层级的子节点.他们都可以通过key来区分-----同时遵循1.2两点
(其实这个key的存在与否只会影响diff算法的复杂度,换言之,你不加key的情况下,diff算法就会以暴力的方式去根据一二的策略更新,但是你加了key,diff算法会引入一些另外的操作)
推荐阅读
- 腾讯会议电脑上怎么用
- 杜仲雄花茶的泡法,金银花茶的功效作用
- 菊花能用水煮着喝吗,孕妇能喝玫瑰花茶吗
- 如何防止服务器被入侵?
- 超实用的18个Java8日期处理的实践!建议收藏!
- 雪菊花茶功效与作用有哪些,菊花茶的功效有哪些
- 喝茉莉薄荷茶的好处有哪些,玫瑰花茶的副作用有哪些
- 不得不知道的一些docker知识,devops使用太频繁了
- 喝洛神花茶的功效与好处,洛神花茶的功效及其作用
- 用胖大海泡水次几个,玫瑰花茶泡水喝的功效