初始化
安装vue-cli
# installnpm install -g @vue/cli# ORyarn global add @vue/cli# testvue --version# upgradenpm update -g @vue/cli# ORyarn global upgrade --latest @vue/cli
文档: https://cli.vuejs.org/guide/installation.html
在 Windows 中,有时候会出现命令行输入 vue --version 显示命令找不到的错误。 这个时候只需要在环境变量 Path 中加入
C:\Users\<username>\AppData\Roaming\npm
创建项目
vue create shopping
然后选择默认生成项目即可。
安装依赖
npm install sass sass-loader --save-dev
这样,一个基本的 Vue 项目就完成了。
安装vscode 插件 vetur
关闭 eslint
Vue 文件
一个典型的 Vue 文件包含三个部分
<template>...</template><script>...</script><style lang=scss scoped>...</style>
<template> 包含的是 HTML 的结构<script> 暴露出组件对象的结构,并且包含了这个组件的业务逻辑<style> 指的是当前页面的 css, lang="scss" 表示使用的是 sass , scoped 表示的是只在当前页面有效。
项目主要的结构如下
public 放置一些静态文件
components 放置 vue 公共组件
App.vue 是项目的主要入口
main.js 主要是挂载一些 vue 的插件并声明了 App 为主要入口。
Vue 基础语法
我们可以通过一个简单的应用来学习 Vue 的基础语法
这是一个简单的投票系统,点击右上角,其数值会不断累加。 接下来我们就来实现这样一个应用。
安装bulma/font-awesome
npm install @fortawesome/fontawesome-free --savenpm install bulma --save
然后在 main.js 中加入
import "bulma/css/bulma.css"import "@fortawesome/fontawesome-free/css/all.css"
这样我们就成功引入了 bulma 和 fontawesome 两个框架, 它直接引入到了页面中
分解组件
我们的页面效果如下所示:
按上图所示,我们的组件可以分为两部分,一部分是 App 一部分是 submission-component
接下来实现 submission component
submission component
其代码骨架为:
<template><div><figure class="media-left"></figure><div class="media-content"></div><div class="media-right"></div></div></template><script>export default {name: "Submission"}</script><style></style>
在 App 中引入其他组件
template
<template><div id="app">...<Submission :submission="submission" />...</div></template>
script
<script>import Submission from "./components/Submission.vue"export default {name: 'App',...components: {Submission}}</script>
声明变量
Vue 在 HTML标签中声明变量使用的是 v-bind ,也可以使用 :src=xxx 类似的语法。
<a :href="submission.url">{{ submission.title}}</a>
属性中的变量可以直接写,文本中需要加大括号。
如果属性中,出现表达式则需要加大括号
<article :class="{'blue-border': submission.votes >=20 }"></article>
for 循环
<article v-for="submission in submissions" :key="submission.id" class="media"></article>
上面的代码会输出多个 article 标签,并且需要带上 :key=index 值, 这个是必须的。在有了key属性之后,Vue会记住元素们的顺序,并根据这个顺序在适当的位置插入/删除元素来完成更新,这种方法比没有key属性时的就地复用策略效率更高。 总体来说,当使用列表渲染时,永远添加key属性,这样可以提高列表渲染的效率,提高了页面的性能。
if 语句
<div v-if='loading' class='ui active inline loader'></div><button v-if="saveStatus === 'SAVING'" disabled class="ui button">
If 语句里面,可以是 boolean 变量或者是表达式,或者是一个函数。
事件处理
事件处理,我们一般会使用 @ 来表示,如下
<span class="icon is-smaill" @click="vote"></span>
如果有参数可以直接放进去
<span class="icon is-smaill" @click="vote(submission.id)"></span>
在 form 表单中,我们可以看到更多的事件处理。
