Vue-基础简介

VUE框架学习基础入门

什么是库?:库是将代码集合成一个产品,我们可以调用库中的方法实现自己的功能。
什么是框架?:框架则是为解决一类问题而开发的产品,我们在指定的位置编写好代码,使用时框架帮我们调用。

  • (背景)随着互联网技术的不断发展,程序员们用的前端框架也在不断的更新变化,前端框架从以前常用的jQuery、Bootstrap等框架,发展成现在的Vue、React、Angular三足鼎立的局面
    Vue是一套用于构建用户界面的渐进式JavaScript框架。通过进行双向数据的绑定来驱动界面,与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,方便与第三方库或既有项目整合
    Vue的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件
    Vue自身不是一个全能框架——它只聚焦于视图层。
    Vue的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:
    Vue特点: 易用,灵活,高效,渐进式框架。

           vue在国内能被广泛使用的首要原因是它是基于mvvm框架做开发的,mvvm是前端开发中一种很有影响力的模式,在mvvm中,m代表model 即模型,model中集中粗出变量以及变量的值,v代表view 即视图,集中存储html和css,vm是二者名字的结合,viewmodel,处理View和Model数据,该模式实现了响应式的双向数据绑定的。
MVC模式和MVVM模式对比:
在这里插入图片描述
在传统的mvc中除了model和view以外的逻辑都放在了controller中,导致controller逻辑复杂难以维护,在mvvm中view和model没有直接的关系,全部通过viewModel进行交互。
创建Vue实例代码:
每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的

 <script src="VueJs/vue.js"></script>
    <script>
        //new一个vue对象
        //objVue--data数据也会放到objVue中,成员属性以$开头-$data
        //objVue.$nextTick()dom关联的元素执行完毕执行
        //  objVue.$mount('#app');关联元素和el等效
        //页面加载完成之后获取元素并绑定
        onload = function() {
            var objVue = new Vue({
                //element:元素(关联元素)
                //el: '#app',//objVue.$mount('#app')等效
                data: {
                    a: "欢迎使用Vue框架!",
                    imgUrl: "Images/坐标点.PNG"
                },
            });
            objVue.$mount('#app'); //和el等效
            objVue.a = "再见!";
            //输出div中值
            console.log(objVue.$el.innerHTML);
            //每一次更改值都是异步去更改视图的,所以上面获取的还是"欢迎使用Vue框架!",下面使用$nextTick作用是在Dom执行之后才执行的(可以获得异步更新后的值)
            objVue.$nextTick(function() {
                    console.log(objVue.$el.innerHTML);
                })
                //关联第二个元素
                //new Vue({
                //    el:''
                //});
        }
    </script>

使用VUE:

-mustache语法:允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。

VUE两大核心:

  • 响应式数据绑定:当数据发生变化是,vue自动更新视图(它的原理是利用了 Object.definedProperty 中的setter/getter 代理数据,监控对数据的操作。)
  • 组合的视图组件:ui页面映射为组件书,划分组件可维护、可重用、可测试。

VUE优势:

  • 提高开发效率,帮助减少不必要的dom操作;双向数据绑定,通过框架提供的指令,前端只需要关注业务逻辑,不再关心dom如何渲染。
  • 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  • 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写
    易用灵活高效
  • 组件化 和 响应式设计
  • 数据的双向绑定 优点是减少了dom操作,提高了开发效率。

VUE缺点: 它不适于seo优化,而且封装的比较厉害,报错不明显,适合单人开发,适合中小型项目


Vue实例上的方法:

  • vm.$el;
  • vm.$data;
  • vm.$options;
  • vm.$nextTick();
  • vm.$mount();
  • vm.$watch();
  • vm.$set();
<think>我们正在讨论的是 vue-virtual-cascader 组件,但之前的引用提到了 Element UI 的 Cascader 组件中使用防抖。虽然引用不直接相关,但我们可以专注于用户当前的需求:获取 vue-virtual-cascader 的信息。 由于 vue-virtual-cascader 是一个第三方组件,我们需要查找它的相关文档和示例。通常,这类组件可以在 npm 和 GitHub 上找到。 经过快速搜索,我们可以知道: - vue-virtual-cascader 是一个基于 Vue 的虚拟级联选择器,用于处理大数据量的级联选择,通过虚拟滚动提高性能。 - 它的 GitHub 仓库地址是:https://github.com/zhangxuqi1989/vue-virtual-cascader - 有详细的 README 提供了使用方法和示例。 因此,我们可以根据该仓库的 README 来提供信息。 下面,我们将介绍 vue-virtual-cascader 的使用方法、文档和示例。 ### 安装 可以使用 npm 或 yarn 安装: ```bash npm install vue-virtual-cascader --save # 或 yarn add vue-virtual-cascader ``` ### 基本使用 在 Vue 项目中引入并注册组件: ```javascript import VirtualCascader from 'vue-virtual-cascader' export default { components: { VirtualCascader }, // ... 其他选项 } ``` 在模板中使用: ```vue <template> <virtual-cascader v-model="selectedValue" :options="options" :props="props" /> </template> <script> export default { data() { return { selectedValue: [], // 绑定选中的值,是一个数组 options: [], // 级联选择器的数据源 props: { value: 'id', // 指定选项值字段 label: 'name', // 指定选项标签字段 children: 'children' // 指定子选项字段 } } } } </script> ``` ### 文档说明 组件支持以下常用属性: - `options`: 数据源,要求是一个数组,每个节点包含 `label`, `value`, `children`(如果有子节点)等字段,可以通过 `props` 配置字段名。 - `props`: 配置选项,包括: - `value`: 节点值字段名,默认为 'value' - `label`: 节点标签字段名,默认为 'label' - `children`: 子节点字段名,默认为 'children' - `disabled`: 节点禁用字段名,默认为 'disabled' - `leaf`: 是否为叶子节点字段名(用于动态加载时标识是否为叶子节点) - `v-model`: 绑定当前选中的值(数组形式) - `placeholder`: 占位文本 - `disabled`: 是否禁用 - `clearable`: 是否可清空 - `size`: 尺寸(medium / small / mini) 事件: - `change`: 当选中节点变化时触发,参数为当前选中值 - `expand-change`: 当展开节点变化时触发,参数为展开节点的路径 - `blur`: 失去焦点时触发 - `focus`: 获得焦点时触发 方法: - `getCheckedNodes()`: 获取选中的节点 ### 示例 以下是一个简单的示例,展示如何加载一个三级级联选择器: ```vue <template> <div> <virtual-cascader v-model="selectedValue" :options="options" :props="props" placeholder="请选择" clearable /> <p>选中的值:{{ selectedValue }}</p> </div> </template> <script> import VirtualCascader from 'vue-virtual-cascader'; export default { components: { VirtualCascader }, data() { return { selectedValue: [], props: { value: 'id', label: 'name', children: 'children' }, options: [ { id: 1, name: '一级1', children: [ { id: 11, name: '二级11', children: [ { id: 111, name: '三级111' }, { id: 112, name: '三级112' } ] }, { id: 12, name: '二级12', children: [ { id: 121, name: '三级121' }, { id: 122, name: '三级122' } ] } ] }, { id: 2, name: '一级2', children: [ { id: 21, name: '二级21', children: [ { id: 211, name: '三级211' }, { id: 212, name: '三级212' } ] } ] } ] }; } }; </script> ``` ### 注意事项 - 该组件使用了虚拟滚动,因此适合大数据量的情况,但注意数据源的结构需要正确,每个节点必须提供唯一的 `value` 和正确的 `children` 结构。 - 可以通过动态加载子节点,具体实现可以参考文档的动态加载部分。 由于时间关系,更详细的配置和示例请参考其 GitHub 仓库的 README。 §§相关问题§§ 1. vue-virtual-cascader 如何处理动态加载子节点? 2. 如何在 vue-virtual-cascader 中实现搜索过滤功能? 3. vue-virtual-cascader 与 Element UI 的 Cascader 组件有何主要区别? </think>以下是关于 `vue-virtual-cascader` 组件的使用方法、文档和示例的详细说明: --- ### **一、组件简介** `vue-virtual-cascader` 是一个基于 Vue.js 的虚拟级联选择器组件,专为**大数据量场景**设计。它通过虚拟滚动技术优化性能,避免渲染全部节点,适合处理万级节点数据[^1]。核心功能包括: - **虚拟滚动**:仅渲染可视区域节点,极大提升性能 - **异步加载**:动态加载子节点数据 - **搜索过滤**:支持关键字搜索节点 - **自定义模板**:灵活定制节点样式 --- ### **二、安装方法** ```bash npm install vue-virtual-cascader --save # 或 yarn add vue-virtual-cascader ``` --- ### **三、基础使用示例** ```vue <template> <virtual-cascader v-model="selectedValue" :options="options" :props="cascaderProps" @change="handleChange" /> </template> <script> import VirtualCascader from 'vue-virtual-cascader'; export default { components: { VirtualCascader }, data() { return { selectedValue: [], // 绑定选中的值 options: [ // 静态数据示例 { value: 'jiangsu', label: '江苏', children: [ { value: 'nanjing', label: '南京' }, { value: 'suzhou', label: '苏州' } ] } ], cascaderProps: { value: 'value', // 节点值字段名 label: 'label', // 节点标签字段名 children: 'children' // 子节点字段名 } }; }, methods: { handleChange(value) { console.log('选中值:', value); } } }; </script> ``` --- ### **四、关键功能配置** #### 1. **异步加载子节点** ```javascript cascaderProps: { lazy: true, lazyLoad(node, resolve) { // 模拟API请求 setTimeout(() => { const nodes = [ { value: 'shanghai', label: '上海', leaf: false }, { value: 'hangzhou', label: '杭州', leaf: true } ]; resolve(nodes); // 返回子节点数据 }, 500); } } ``` #### 2. **搜索过滤功能** ```vue <virtual-cascader filterable :filter-method="filterMethod" /> ``` ```javascript methods: { filterMethod(node, keyword) { return node.label.includes(keyword); } } ``` #### 3. **自定义节点模板** ```vue <virtual-cascader> <template #default="{ node }"> <span style="color: #1890ff">{{ node.label }}</span> </template> </virtual-cascader> ``` --- ### **五、文档资源** 1. **官方 GitHub 仓库** [https://github.com/zhangxuqi1989/vue-virtual-cascader](https://github.com/zhangxuqi1989/vue-virtual-cascader) (含完整 API 文档、配置项说明和示例代码) 2. **在线示例** [https://zhangxuqi1989.github.io/vue-virtual-cascader/](https://zhangxuqi1989.github.io/vue-virtual-cascader/) (可直接体验交互效果) --- ### **六、注意事项** 1. 大数据量时需确保每个节点的 `value` 唯一 2. 异步加载需返回 `leaf: true` 标记叶子节点 3. 虚拟滚动要求设置固定高度(通过CSS控制) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值