返回顶部
首页 > 资讯 > 前端开发 > VUE >如何实现Vue.js中的iViewUI框架非工程化
  • 773
分享到

如何实现Vue.js中的iViewUI框架非工程化

2024-04-02 19:04:59 773人浏览 八月长安
摘要

如何实现vue.js中的iViewUI框架非工程化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为了快速体验 MVVM 模式,我选择了非工程化

如何实现vue.js中的iViewUI框架非工程化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

为了快速体验 MVVM 模式,我选择了非工程化方式来起步,并选择使用 Vue.js,以及基于它构建的 iView UI 框架。

一、 MVVM 模式

Vue.js 比较显著的特征是解耦了视图和数据,也就是说视图的变化不再需要命令式编程去显式改变,只要修改完数据就能立即自动同步,这是比较大的一个思维模式的转变,另一个就是组件化思维俯首皆是,这样开发一个应用就相当是在搭积木。

其实以上对 Vue.js 所阐述的优点也正是 MVVM 模式的写照,它原是由 mvc 所衍生,即当视图层发生变化时,会自动更新到视图模型上,反之亦然,这就是常说的双向绑定,上一张图吧:

如何实现Vue.js中的iViewUI框架非工程化

甭管这图是否好理解,通俗地来讲,MVVM 这种模式拆分了视图和数据,这样我们在开发时只要关心数据本身即可,然后视图 DOM 这方面会由 Vue.js 自动解决。

二、非工程化起步

为了能支撑起一个最基本的应用,需要引入以下几个必要文件:

  1. vue.min.2.5.3.js,vue.js 库

  2. iview.2.7.0.CSS,iView 样式文件

  3. iview.min.2.7.0.js,iView 库

  4. iview /locale/zh-CN.js 语言包

  5. iview /font 字体包

下载 Vue.js

来到 GitHub 上的 Vue 项目,直接下载 Zip 源码

如何实现Vue.js中的iViewUI框架非工程化

在 dist 目录中就可以找到 vue.js 文件:

如何实现Vue.js中的iViewUI框架非工程化

根据不同的环境选择一个版本即可,至此第 1 步就搞定了。

下载 iView 系列文件

在 iView 官网的“组件” / “安装” 页面的开头处发现了这个链接:https://unpkg.com/iview/**,通过它可以查看到 dist** 目录:

如何实现Vue.js中的iViewUI框架非工程化

必要文件都在这里,这些文件无法打包下载,我采取的笨办法是逐个点开,然后复制其中的内容。

在获取 iView 相关的 js 和 css 方面还有一个办法,仔细观察官网给出的 CDN 地址分别为:

Http://unpkg.com/iview/dist/iview.min.js
http://unpkg.com/iview/dist/styles/iview.css

我尝试将它们放在浏览器里进行访问:

如何实现Vue.js中的iViewUI框架非工程化

发现地址有变更,不过这并无大碍。

至此,将各个文件放在期望的位置即可:

如何实现Vue.js中的iViewUI框架非工程化

该图中各文件的摆放并不是很严谨,大家按自己习惯来即可。

三、实例演练

完成以上的准备工作后,就可以结合 iView UI 来正式开发了,接下来基于 table 表格组件演示一下购物车的基本操作。

引入资源

经过起步工作的筹备,可以在新建页面中逐个地引入这些资源。

html head 部分

<head>
 <meta charset="UTF-8">
 <title>购物车实例</title>
 <link rel="stylesheet" href="iViewContent/iview.2.7.0.css" rel="external nofollow" >
 <script src="utility_js/vue.min.2.5.3.js"></script>
 <script src="utility_js/iview.min.2.7.0.js"></script>
 <script src="iViewContent/locale/zh-CN.js"></script>
 <script>
 iview.lang('zh-CN');
 </script>
</head>

按一贯的方式引用,样式居前,随后紧跟着 vue.js 和 iView.js,以及 iView 中文语言包 zh-CN.js,然后立即调用 lang 方法使其生效。

绑定数据

首先把数据绑定起来,从而看一看整体效果,至于其他的行为操作先不管:

如何实现Vue.js中的iViewUI框架非工程化

HTML body 部分

<body>
 <div id="app">
 <i-table id="datatable1"
   size="small"
   :columns="columns"
   :data="cartList"
   stripe
   highlight-row>
 </i-table>
 </div>
 <script src="iViewUI_cart.js"></script>
</body>

组件 i-table 最核心的两个属性分别是 columns 和 data,columns 是列定义,data 则为数据。

这两个属性都添加了冒号(:)语法糖,它指代的是 v-bind 指令,表示这个属性的值是动态绑定的,这样在运行过程中发现数据有变更时,表格视图也会迅速的变更。

iViewUI_cart.js 脚本部分

var cart = new Vue({
 el: '#app',
 data: function () {
 return {
  cartList: [
  {id: 1, name: 'iPhone X', price: 8300.05, count: 1},
  {id: 2, name: 'MacBook Pro', price: 18800.75, count: 3},
  {id: 3, name: 'Mate 10 Porsche', price: 16600.00, count: 8}
  ],
  columns: [
  {
   title: '名称',
   key: 'name'
  },
  {
   title: '单价',
   key: 'price'
  },
  {
   title: '数量',
   key: 'count'
  }
  ]
 }
 },
 methods: {}
});

该文件是与页面对应的业务脚本,整个文件就负责 new 一个 Vue 实例,并将其赋值给了变量 cart,可以看到的 data 包含了两个属性,即表示数据源的 cartList 和 列定义的 columns,二者正好与上述 i-table 的核心属性相映射。

再次值得注意的是 data,它的值需要以匿名函数的形式进行书写,即:

function () {
 return {}
}

如此,在其 columns 中出现的 Render 函数体内才能正常通过 this 访问到 methods 中定义的方法。当然本次演示是通过 cart 对象来访问,故不受此影响。

运行页面后,数据即可绑定成功。

添加操作所需按钮

数据呈现出来后,就可以补充必要的按钮了:

如何实现Vue.js中的iViewUI框架非工程化

这一步简单,只需要修改一下 columns 属性,追加一项“操作”列,添加三个按钮:

{
 title: '数量',
 key: 'count'
},
{
 title: '操作',
 render: (h, params) => {
 return h('div', [
  h('Button', {
  props: {
   type: 'primary',
   size: 'small'
  },
  style: {
   marginRight: '5px'
  },
  on: {
   click: () => {
   console.info('减少数量');
   cart.reduceQuantity(params.row.id);
   }
  }
  }, '-'),
  h('Button', {
  props: {
   type: 'primary',
   size: 'small'
  },
  style: {
   marginRight: '5px'
  },
  on: {
   click: () => {
   console.info('增加数量');
   cart.increaseQuantity(params.row.id);
   }
  }
  }, '+'),
  h('Button', {
  props: {
   type: 'error',
   size: 'small'
  },
  style: {
   marginRight: '5px'
  },
  on: {
   click: () => {
   console.info('删除当前项');
   cart.deleteItem(params.row.id);
   }
  }
  }, '删除')
 ]);
 }
}

在这里使用到了 Render 函数,该函数的内部机制略显复杂,作为初步演示只需依样画葫芦即可。

说到 Render 函数,还需要再强调一下在其内部对 methods 中所定义方法的调用,如果试图通过 this 来调用方法(比如 reduceQuantity),那么 Vue 实例中 data 的值需要使用匿名函数的方式来表达;反之,若是通过 Vue 实例 cart 来调用,则无此顾虑,即 data 的值使用一贯的对象大括号({})来表达即可。

添加操作所需方法

操作按钮已经添加成功了,那就需要有对应的方法去执行,在 Vue.js 中,方法都定义在 methods 属性中。

减去数量

首先关注一下“减去数量”的定义:

methods: {
 reduceQuantity: function (id) {
 for (let i = 0; i < this.cartList.length; i++) {
  if (this.cartList[i].id === id) {
  this.cartList[i].count--;
  break;
  }
 }
 }
}

通过遍历找到目标记录,并将其 count 属性减一,如同 MVVM 的定义,当数据变更的时候,视图也跟随着变化。

但凡是存在于购物车内的商品,其数量至少应该为 1,为防止减到 0,不妨再加一个判断使其逻辑更为完美:

methods: {
 reduceQuantity: function (id) {
 for (let i = 0; i < this.cartList.length; i++) {
  if (this.cartList[i].id === id) {
  if (this.cartList[i].count > 1) {
   this.cartList[i].count--;
  }
  break;
  }
 }
 }
},

增加数量

methods: {
 increaseQuantity: function (id) {
 for (let i = 0; i < this.cartList.length; i++) {
  if (this.cartList[i].id === id) {
  this.cartList[i].count++;
  break;
  }
 }
 }
}

只需要针对 count 属性做 +1 操作即可。

删除

deleteItem: function (id) {
 for (let i = 0; i < this.cartList.length; i++) {
 if (this.cartList[i].id === id) {
  // 询问是否删除
  this.$Modal.confirm({
  title: '提示',
  content: '确定要删除吗?',
  onOk: () => {
   this.cartList.splice(i, 1);
  },
  onCancel: () => {
   // 什么也不做
  }
  });
 }
 }
}

在删除逻辑中,当遍历到目标记录时,会询问用户是否真的要删除当前记录,这里用到了 $Modal 对话框,如果用户点击确定,那么就执行真正的删除,看一看效果:

如何实现Vue.js中的iViewUI框架非工程化

非常漂亮考究的 iView Modal 对话框,令人赏心悦目,一见倾心。

看完上述内容,你们掌握如何实现Vue.js中的iViewUI框架非工程化的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网VUE频道,感谢各位的阅读!

--结束END--

本文标题: 如何实现Vue.js中的iViewUI框架非工程化

本文链接: https://lsjlt.com/news/81256.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何实现Vue.js中的iViewUI框架非工程化
    如何实现Vue.js中的iViewUI框架非工程化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为了快速体验 MVVM 模式,我选择了非工程化...
    99+
    2024-04-02
  • PHP 重定向:如何在容器化的框架中实现?
    在现代的 Web 开发中,重定向是一个非常常见的功能,它允许我们将用户重定向到一个新的 URL,以便实现各种功能,比如登录、注册、购买等。在 PHP 中,重定向可以通过 header 函数来实现,但是在容器化的框架中,如何实现重定向呢?本...
    99+
    2023-09-17
    重定向 容器 框架
  • 如何在PaddlePaddle框架中实现强化学习算法
    在PaddlePaddle框架中实现强化学习算法通常可以通过以下步骤进行: 安装PaddlePaddle框架:首先需要安装Pad...
    99+
    2024-03-08
    PaddlePaddle
  • 在实际工作中如何应用Brainstorm框架
    Brainstorm框架是一个有助于组织思路和促进创意的工具,可以在实际工作中以以下方式应用: 解决问题:当团队面临困难或挑战时...
    99+
    2024-03-14
    Brainstorm
  • Spring框架如何优化Java中的异步编程?
    随着互联网的快速发展,用户对于响应速度的要求也越来越高。因此,在开发Web应用程序时,异步编程成为了不可或缺的技术。Spring框架作为Java开发中最受欢迎的框架之一,也在异步编程方面提供了很好的支持。本文将介绍Spring框架在Jav...
    99+
    2023-08-08
    对象 异步编程 spring
  • Ajax框架中SSM整合框架如何实现ajax校验
    这篇文章主要介绍了Ajax框架中SSM整合框架如何实现ajax校验,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。刚学习了ssm框架,ajax...
    99+
    2024-04-02
  • 从头写React-like框架的工程搭建实现
    最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurr...
    99+
    2024-04-02
  • vue.js中select下拉框如何实现绑定和取值
    这篇文章将为大家详细讲解有关vue.js中select下拉框如何实现绑定和取值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、绑定select下拉框的代码很简单send...
    99+
    2024-04-02
  • android中如何实现Router路由框架
    这篇文章主要为大家展示了“android中如何实现Router路由框架”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“android中如何实现Router路由框架”这篇文章吧。Router路由框架...
    99+
    2023-05-30
    android router
  • Java框架中,Unix对象如何实现?
    Java作为一种强大的编程语言,已经成为许多企业和开发者的首选。在Java应用程序开发中,框架的使用是非常常见的。Unix对象是Java框架中的一个重要概念,下面我们来探讨一下Java框架中Unix对象如何实现。 Unix对象是一种用于描述...
    99+
    2023-11-09
    框架 unix 对象
  • PHP 中的 Laravel 框架: 如何实现异步编程的最佳实践?
    Laravel 是一个广受欢迎的 PHP 框架,它提供了许多有用的功能和工具,让开发人员可以更轻松地构建高质量的 Web 应用程序。其中一个最重要的功能是异步编程,它可以帮助我们更有效地处理请求和响应。在本文中,我们将介绍 Laravel...
    99+
    2023-10-20
    关键字 异步编程 laravel
  • 如何在PHP框架API中实现高效的异步编程?
    PHP框架API一直以来都是Web开发的重要工具,但是在实际应用中,随着Web应用的复杂度不断提高,API的异步编程需求也越来越强烈。而针对这个问题,我们可以采用以下几种方法实现高效的异步编程。 一、使用协程 在异步编程中,协程是一种轻量级...
    99+
    2023-10-12
    框架 api 异步编程
  • Java函数如何在Spring框架中实现?
    Spring是一个开源的Java应用程序框架,它提供了一种简单的方法来开发企业级Java应用程序。其中,函数的实现是Spring框架中的一个重要组成部分。在本文中,我们将介绍如何在Spring框架中实现Java函数。 函数的定义 在J...
    99+
    2023-09-16
    函数 spring 框架
  • Python和Spring框架如何实现二维码缓存的优化?
    二维码是一种广泛应用于现代社会中的技术,其可以用于快速扫描获取信息。然而,由于二维码的生成需要耗费大量的计算资源,因此在高并发场景下,二维码的生成可能会成为系统的瓶颈。为了解决这一问题,我们可以使用缓存技术对二维码进行优化。本文将介绍如何...
    99+
    2023-10-07
    spring 缓存 二维码
  • 如何在Java中实现Shell框架的重定向?
    在Java中实现Shell框架的重定向是一项非常有用的技能,它可以让我们将Shell命令的输出结果重定向到文件中,或者将文件内容作为Shell命令的输入。本文将介绍如何在Java中实现Shell框架的重定向。 一、Java中的Process...
    99+
    2023-06-14
    重定向 shell 框架
  • 如何在Linux系统中使用Go编写编程算法以实现Spring框架的优化?
    近年来,Spring框架在Java编程领域中的地位越来越重要。但是,在高并发和大数据应用场景下,Spring框架的性能问题也越来越凸显。为了解决这些问题,开发者们开始使用Go语言编写算法来优化Spring框架。 本文将介绍如何在Linux系...
    99+
    2023-08-30
    spring 编程算法 linux
  • 如何在Spring框架中实现动态代理
    这篇文章给大家介绍如何在Spring框架中实现动态代理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。动态代理,是一种通过运行时操作字节码,以达到增强类的功能的技术,也是Spring AOP操作的基础,关于AOP的内容,...
    99+
    2023-05-31
    spring 动态代理
  • 如何在PaddlePaddle框架中实现推荐系统
    在PaddlePaddle框架中实现推荐系统可以通过以下步骤进行: 准备数据集:首先需要准备好推荐系统所需的数据集,包括用户行为...
    99+
    2024-03-08
    PaddlePaddle
  • 编程算法中的PHP、HTTP和Spring框架:如何实现高效率?
    在现代编程中,算法是实现高效率的核心。PHP、HTTP和Spring框架是编写高效算法的重要组成部分。在本文中,我们将探讨如何使用这些工具来实现高效率的编程算法。 PHP算法 PHP是一种流行的开源服务器端脚本语言,可以用于编写Web应用...
    99+
    2023-10-06
    http spring 编程算法
  • 如何在Java框架中实现高效的分布式编程算法?
    在当今互联网时代,分布式编程已经成为了一种必不可少的开发方式。而Java作为一种广泛使用的编程语言,在分布式编程领域也有着广泛的应用。本文将介绍如何在Java框架中实现高效的分布式编程算法。 一、分布式编程的概念 分布式编程是指将一个程序分...
    99+
    2023-11-04
    框架 编程算法 分布式
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作