Vue单文件组件开发实现过程详解


Posted in Javascript onJuly 30, 2020

第一步:配置环境

安装cnpm

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

安装@vue/cli

cnpm install -g @vue/cli

检查版本是否正确

vue --version

Vue单文件组件开发实现过程详解

使用vue.server和vue.build对*.vue文件进行快速原型开发,需要安装vue serve

cnpm install -g @vue/cli-service-global

新建一个App.vue文件测试安装是否成功:

<template>2 <h1>Hello world!</h1>3 </template>

在该文件当前路径运行:

vue serve App.vue

打开浏览器输入localhost:8080看到如下画面则运行成功

Vue单文件组件开发实现过程详解

环境安装到此结束,接下来用一个简单案例来学习vue的单文件组件开发。

第二步:简单案例实战

以一个物品清单为例:

Vue单文件组件开发实现过程详解

该案例由4个组件构成,分别是:

1. addItem.vue 添加物品

2. item.vue 物品实例

3. items.vue 物品列表

4. changeTitle 改变标题

首先,创建一个项目demo:

vue create demo

项目默认目录如下,启动主页在public, vue源码(包括组件)都存放到src

Vue单文件组件开发实现过程详解

然后分别编写各组件代码

1. addItem.vue:

<template>
  <div class="input-group">
    <input type="text" class="form-control" placeholder="add shopping list item" v-model="newItem">
    <span class="input-group-btn">
      <button class="btn btn-primary" @click="emitAdd">
        <i class="fa fa-plus-square-o fa-lg"> </i><span>Add</span>
      </button>
    </span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      newItem: ''
    }
  },
  methods: {
    emitAdd() {
      this.$emit('addItem', this.newItem);
    }
  }
}
</script>

<style>
</style>

2. item.vue:

<template>
  <li :class="{'removed': item.checked}" class="list-group-item">
    <div class="checkbox">
      <label>
        <input type="checkbox" v-model="item.checked">
        <span>{{ item.text }}</span>
      </label>
    </div>
  </li>
</template>

<script>
export default {
  props: ['item']
}
</script>

<style>
.removed {
  color: gray;
}

.removed span {
  text-decoration: line-through;
}
</style>

3. items.vue:

<script>
import item from './item'

export default {
  props: ['items'],
  components: {
    item
  }
}
</script>

<template>
  <ul class="list-group">
    <item v-for="item in items" :key="item.id" :item="item"></item>
  </ul>
</template>

<style>
</style>

4. changeTitle.vue:

<template>
  <div>
    <em>Change the title here:</em>
    <input type="text" :value="title" @input="onInput">
  </div>
</template>

<script>
export default {
  props: ['title'],
  methods: {
    onInput(event) {
      this.$emit('input', event.target.value);
    }
  }
}
</script>

最后修改App.vue,导入上面的组件:

<template>
  <div id="app" class="container">
    <h1>{{ title }}</h1>
    <add-item @addItem="add"></add-item><br>
    <items :items="items"></items>
    <div class="footer">
      <hr>
      <change-title :title="title" v-model="title"></change-title>
    </div>
  </div>
</template>

<script>
import addItem from './components/addItem'
import items from './components/items'
import changeTitle from './components/changeTitle'

export default {
  name: 'app',
  components: {
    addItem,
    items,
    changeTitle
  },
  data() {
    return {
      items: [
        {id: 1, text: 'Bananas', checked: true},
        {id: 2, text: 'Apples', checked: false}
      ],
      title: 'My Items List'
    }
  },
  methods: {
    add(text) {
      this.items.push({
        text: text,
        checked: false
      });
    }
  }
}
</script>

<style>
</style>

需要注意的是:每个组件必须只有一个根元素。我这里需要在public/index.html引入bootstrap样式和font-awesome图标字体。

运行程序:

cnpm run serve

最后附上运行截图:

Vue单文件组件开发实现过程详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js Html结构转字符串形式显示代码
Nov 15 Javascript
用innerhtml提高页面打开速度的方法
Aug 02 Javascript
JavaScript动态修改弹出窗口大小的方法
Apr 06 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
Oct 21 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
Nov 22 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
Jul 12 Javascript
JS本地刷新返回上一页代码
Jul 25 Javascript
微信小程序 开发之全局配置
May 05 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
Sep 18 Javascript
Vue项目路由刷新的实现代码
Apr 17 Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
jQuery操作事件完整实例分析
Jan 10 jQuery
vue实现从外部修改组件内部的变量的值
Jul 30 #Javascript
在vue中实现嵌套页面(iframe)
Jul 30 #Javascript
Vue文本模糊匹配功能如何实现
Jul 30 #Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 #Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
Jul 30 #Javascript
Vue Render函数原理及代码实例解析
Jul 30 #Javascript
vue - props 声明数组和对象操作
Jul 30 #Javascript
You might like
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
python使用socket连接远程服务器的方法
2015/04/29 Python
python3.6编写的单元测试示例
2019/08/17 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
python range实例用法分享
2020/02/06 Python
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
社区包粽子活动方案
2014/01/21 职场文书
团队精神的演讲稿
2014/05/14 职场文书
初中同学会活动方案
2014/08/22 职场文书
出生公证书
2015/01/23 职场文书
小学教师党员承诺书
2015/04/27 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
python模板入门教程之flask Jinja
2022/04/11 Python
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers