vue组件实例解析


Posted in Javascript onJanuary 10, 2017

实现此例您可以学到:

  • vue-cli的基本应用
  • 父组件如何向子组件传递值
  • 单文件组件如何引入scss
  • v-on和v-for的基础应用
  • 源码下载

一、搭建vue开发环境

1)更换镜像到cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

2)安装vue-cli

cnpm install -g vue-cli

3)初始化vue项目

命令模式进入项目所在的目录,如d:\test\,输入vue init 项目名称即可。如果你想引入vue2.0框架,必须把nodejs、webpack和npm升级到最新版本。

4)node-sass和sass-loader实现scss的编译

用cnpm安装node-sass和sass-loader,用于编译scss相关内容。

5)通过npm install 安装开发和运行依赖组件

进入刚创建好的目录,执行cnpm install安装所有的开发和运行依赖项

6)通过npm run dev支持调试版本

在安装成功后,直接运行npm run dev即可看到demo的运行界面。

注意:

1.按照上述步骤搭建最终可以创建好vue项目,但也遇到几个坑

2.安装的nodejs和webpack、npm不是最新版本

二、实现Tag组件

学习一个新框架,首先是看文档,最重要还是实践。写一个hello world过于简单,要玩就玩个大的。我们就来实现一个Tag(标签)组件领悟一下vue的强大。

组件需求

  1. 将用户输入的标签信息动态的添加到标签列表区域。
  2. 同名和空标签不能输入。
  3. 外部可以控制标签显示区域的宽度。

实现思路

  1. 一个输入框,用于接受标签内容的输入;
  2. 一个列表,用于展示所有输入的标签信息;
  3. 提供一个可设置属性,用于设置标签列表的宽度;

具体实现

1. 模板内容代码

<template>
 <div class="tag-wrap">
 <span>标签:</span>
 <input type="text" id="tag" name="tag" v-model="val" />
 <button id="apply" v-on:click="add" >添加</button>
 <ul class="tag-cont clear" v-bind:style="{width: width}">
 <li v-for="item in cont">{{item}}</li>
 </ul>
 </div>
</template>

1.1 template只是模板语言的标记,解析后不会生成到页面,所以内容需要用一个div包裹住;

1.2 template中可以访问Js代码中data()和Methods、props等相关属性;

1.3 props用于父组件向子组件传递值,此值可以动态传递;

1.4 v-on绑定事件,v-for用于迭代集合。

2. Js代码

<script>
 export default{
 name: 'tag',
 data () {
 return {
 cont: [],
 val: ''
 }
 },
 methods: {
 add: function () {
 let _val = this.val
 if (_val.length === 0 || this.cont.indexOf(_val) > -1) {
 return
 }
 this.cont.push(this.val)
 }
 },
 props: {
 width: {
 type: String,
 default: 'auto'
 }
 }
 }
</script>

2.1 使用v-model="val"实现输入自动更新val这个属性;

2.2 add方法获取val这个属性的值,然后判断是否为空,以及是否在已添加标签数据中存储,如果不存在则添加到标签数组中。

2.3 props的width类型和默认值,限制类型为String,默认值为auto。

3. Scss代码

<style lang='scss' scoped >
 @keyframes item-show{
 from{ opacity: 0; }
 }
 .clear{ 
 zoom: 1;
 }
 .clear:after{
 content: '';
 display: block;
 width: 0px;
 height: 0px;
 overflow: hidden;
 clear: both;
 }

 $back-color:#fed; 
 span{
 background: $back-color;
 }
 .tag-cont{
 list-style: none;
 margin: 10px auto;
 padding: 5px;
 border: 1px solid lightblue;
 }
 .tag-cont > li{
 float: left;
 padding: 5px;
 border:1px solid gray;
 border-radius: 10px;
 animation: item-show 1s;
 margin: 10px;
 } 
</style>

3.1 用lang来标记style标签内的Css实现

4. 在App.vue中引入Tag组件,并组件到Vue的Components(组件库)中,然后在template中以标签的形式引用即可,代码如下:

<template>
 <div id="app"> 
 <tag width="300px"></tag>
 </div>
</template>
<script>
import Tag from './components/Tag'
export default {
 name: 'app',
 components: {
 Tag
 }
}
</script>

5. 效果图

vue组件实例解析

学习总结

Tag组件其实是一个很小的组件,业务价值很低,主要用于Vue新手入门。主要实现Vue常用的父组件改变子组件的值,view改变model,model的变化反应到view上,事件的绑定等功能。

还需要继承深入了解,以及vuex管理vue组件的应用,还有组件之间的通信。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
如何用jquery控制表格奇偶行及活动行颜色
Apr 20 Javascript
详解AngularJS中的表达式使用
Jun 16 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
Mar 10 Javascript
Node.js的Web模板引擎ejs的入门使用教程
Jun 06 Javascript
详解小程序原生使用ES7 async/await语法
Aug 06 Javascript
js+html5 canvas实现ps钢笔抠图
Apr 28 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
Oct 11 Javascript
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 Javascript
node.js通过Sequelize 连接MySQL的方法
Dec 28 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
Vue全家桶入门基础教程
May 14 Vue.js
bootstrap table分页模板和获取表中的ID方法
Jan 10 #Javascript
React实现点击删除列表中对应项
Jan 10 #Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 #Javascript
微信小程序 slider 详解及实例代码
Jan 10 #Javascript
微信小程序 switch组件详解及简单实例
Jan 10 #Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 #Javascript
微信小程序 picker-view 组件详解及简单实例
Jan 10 #Javascript
You might like
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
第十五节--Zend引擎的发展
2006/11/16 PHP
php循环输出数据库内容的代码
2008/05/24 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中实现常量(Const)功能
2015/01/28 Python
python 中的int()函数怎么用
2017/10/17 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
中专毕业生求职简历的自我评价
2013/10/21 职场文书
施工安全协议书
2013/12/11 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript