wwwxuewen 2019-06-28
前端没有数据库的概念,不能永久保存, 那么前端数据应该怎么管理呢。
1、 原始方法
直接在view中定义要使用的数据, 然后传值显示。
let data = ['test','test']; <div>{ data[0] }</div> //借助js框架将data可以传递到html中 <div>{ data[1] }</div> //借助js框架将data可以传递到html中
2、 前端动态管理数据
在view中初始化数据, 也相当于是在view中定义要使用的数据
Function (name) { return this.name = name; }; function init() { let initData1 = new Function('test1'); let initData2 = new Function('test2'); return initData = [initData1, initData2]; }; init(); <div>{ initData[0]</div> //借助js框架将data可以传递到html中 <div>{ initData[1]</div> //借助js框架将data可以传递到html中
通过函数来生成数据的好处, 方便数据的处理。
比如通过点击事件想在添加一个数据, 则可以通过js调用函数, 生成一个新数据,
那么怎样将生成的新数据传递给html呢???
以前的方法:
可是如果页面需要更新的地方太多, 直接通过js操作dom修改dom值, 会惨不忍睹。
<div> { initDataType } <div>{ initDataType.type }</div> <div>{ initDataType.name }</div> <div>{ initDataType.id }</div> </div>
对于上面这样的情况,则每个dom都要处理的话, 页面负担重, 代码上也会很麻烦。
现在的方法:
(riotjs的例子)[https://github.com/zhangchch/...]
这个例子中,就是通过js初始化数据,然后通过js事件,更新数据,
更新数据后, 指定更新某个组件(只是更新这个组件,不会影响其他组件,也不会更新整个页面),同时也会更新这个组件的子组件。
那么这个过程中数据是怎么管理的呢?
course.tag
这个组件的数据存储在courseList,studentsList
这两个数组中。
先初始化两个数组的数据。
当通过某个事件改变这两个数组的数据的时候, 比如courseList
添加想添加一个元素。
某个地方点击添加courseList
, 携带添加的值, 触发添加函数添加一个courseList
元素,
然后将这个添加的courseList
元素放入courseList
数组中, 最后更新这个组件。
也就是说通过操作courseList,studentsList
这两个数组,来管理数据的。(更新相应组件)
student-item
组件中,通过取消订阅某个course事件,
哪个学生取消哪个订阅,
这个做法是在具体的两个对应的组件中修改数据,然后各自更新自己的组件。
对总的courseList,studentsList
没有任何操作,也就是说courseList,studentsList
没有发生变化。
这个做法是点对点的操作。
redux的思想:student取消订阅某个course, 去更新courseList,studentsList
, 然后更新course.tag
这个组件,自动去刷新子组件。
这个也是点到点的数据操作, course-item
组件中发布某个消息, 携带学生,消息等参数, 传递给student-item
, 然后各自更新自己的组件。
组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可;<div><a href="#">登录</a> | &