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 相关文章推荐
实例:尽可能写友好的Javascript代码
Oct 09 Javascript
document.forms[].submit()使用介绍
Feb 19 Javascript
JavaScript中Function详解
Feb 27 Javascript
jQuery插件slider实现拖动滑块选取价格范围
Apr 30 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
深入理解JS addLoadEvent函数
May 20 Javascript
javascript实现瀑布流动态加载图片原理
Aug 12 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
Oct 28 Javascript
Angular2开发环境搭建教程之VS Code
Dec 15 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
VueJs里利用CryptoJs实现加密及解密的方法示例
Apr 29 Javascript
小程序如何使用分包加载的实现方法
May 22 Javascript
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代码DOS造成用光网络带宽
2011/03/01 PHP
php在文件指定行中写入代码的方法
2012/05/23 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
学习Node.js模块机制
2016/10/17 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
js常见遍历操作小结
2019/06/06 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
Python帮你识破双11的套路
2019/11/11 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
python实现文法左递归的消除方法
2020/05/22 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
环境工程毕业生自荐信
2013/11/17 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
教师考核表个人总结
2015/02/12 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
公司财务部岗位职责
2015/04/14 职场文书
公司酒会致辞
2015/07/30 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
如何用python反转图片,视频
2021/04/24 Python