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 相关文章推荐
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
js 可拖动列表实现代码
Dec 13 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 Javascript
基于Jquery实现键盘按键监听
May 11 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
Nov 07 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
Jul 19 Javascript
JavaScript的查询机制LHS和RHS解析
Aug 16 Javascript
js实现从右往左匀速显示图片(无缝轮播)
Jun 29 Javascript
vue实现折线图 可按时间查询
Aug 21 Javascript
JavaScript实现缓动动画
Nov 25 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
php MySQL与分页效率
2008/06/04 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
python实现屏保计时器的示例代码
2018/08/08 Python
Python 读写文件的操作代码
2018/09/20 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
出纳的岗位职责
2013/11/09 职场文书
营业员演讲稿
2013/12/30 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
教师新年寄语
2014/04/03 职场文书