Vue学习总结(全)

Vue项目的创建安装

# 全局安装 vue-cli
$ cnpm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack my-project
# 这里需要进行一些配置,默认回车即可
This will install Vue 2.x version of the template.

For Vue 1.x use: vue init webpack#1.0 my-project

? Project name my-project
? Project description A Vue.js project
? Author runoob 
? Vue build standalone
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Setup unit tests with Karma + Mocha? Yes
? Setup e2e tests with Nightwatch? Yes

   vue-cli · Generated "my-project".

   To get started:
   
     cd my-project
     npm install
     npm run dev
   
   Documentation can be found at https://vuejs-templates.github.io/webpack

进入项目,安装并运行:

$ cd my-project
$ cnpm install
$ cnpm run dev
 DONE  Compiled successfully in 4388ms

> Listening at http://localhost:8080

Vue项目目录结构

目录/文件 说明
build 项目构建(webpack)相关代码
config 配置目录,包括端口号等。我们初学可以使用默认的。
node_modules npm 加载的项目依赖模块
src 这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件:assets: 放置一些图片,如logo等。components: 目录里面放了一个组件文件,可以不用。App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录。main.js: 项目的核心文件。
static 静态资源目录,如图片、字体等。
test 初始测试目录,可删除
.xxxx文件 这些是一些配置文件,包括语法配置,git配置等。
index.html 首页入口文件,你可以添加一些 meta 信息或统计代码啥的。
package.json 项目配置文件。
README.md 项目的说明文档,markdown 格式

Vue模块语句

插值表达式
  • 数据绑定最常见的形式就是使用 {{…}}(双大括号)的文本插值:
  • 使用 v-html 指令用于输出 html 代码
  • HTML 属性中的值应使用 v-bind 指令。缩写为 :
  • v-on 指令,它用于监听 DOM 事件。 缩写为 @
  • v-model 指令来实现双向数据绑定
修饰符

修饰符是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定,.stop阻止事件冒泡,.prevent阻止默认事件发生

过滤器

Vue.js 允许你自定义过滤器,被用作一些常见的文本格式化

过滤器函数接受表达式的值作为第一个参数。

以下实例对输入的字符串第一个字母转为大写:

<div id="app">
  {{ message | capitalize }}
div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: 'runoob'
  },
  filters: {
    capitalize: function (value) {
      if (!value) return ''
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)
    }
  }
})
script>

条件判断

<div id="app">
    <div v-if="type === 'A'">
      A
    div>
    <div v-else-if="type === 'B'">
      B
    div>
    <div v-else-if="type === 'C'">
      C
    div>
    <div v-else>
      Not A/B/C
    div>
    <h1 v-show="ok">Hello!h1>
div>
    
<script>
new Vue({
  el: '#app',
  data: {
    type: 'C',
    ok: 'true'
  }
})
script>

我们也可以使用 v-show 指令来根据条件展示元素

循环语句

v-for 可以绑定数据到数组来渲染一个列表:

<div id="app">
  <ol>
    <li v-for="site in sites">
      {{ site.name }}
    li>
  ol>
div>
 
<script>
new Vue({
  el: '#app',
  data: {
    sites: [
      { name: 'Runoob' },
      { name: 'Google' },
      { name: 'Taobao' }
    ]
  }
})
script>

v-for 可以通过一个对象的属性来迭代数据:

<div id="app">
  <ul>
    <li v-for="value in object">
    {{ value }}
    li>
  ul>
div>
 
<script>
new Vue({
  el: '#app',
  data: {
    object: {
      name: '菜鸟教程',
      url: 'http://www.runoob.com',
      slogan: '学的不仅是技术,更是梦想!'
    }
  }
})
script>

提供第二个的参数为键名:

<div id="app">
  <ul>
    <li v-for="(value, key) in object">
    {{ key }} : {{ value }}
    li>
  ul>
div>

第三个参数为索引:

<div id="app">
  <ul>
    <li v-for="(value, key, index) in object">
     {{ index }}. {{ key }} : {{ value }}
    li>
  ul>

v-for 也可以循环整数:

<div id="app">
  <ul>
    <li v-for="n in 10">
     {{ n }}
    li>
  ul>
div>

计算属性

  • 计算属性关键词: computed。
  • 计算属性在处理一些复杂逻辑时是很有用的。
<div id="app">
  <p>原始字符串: {{ message }}p>
  <p>计算后反转字符串: {{ reversedMessage }}p>
div>
 
<script>
var vm = new Vue({
  el: '#app',
  data: {
    message: 'Runoob!'
  },
  computed: {
    // 计算属性的 getter
    reversedMessage: function () {
      // `this` 指向 vm 实例
      return this.message.split('').reverse().join('')
    }
  }
})
script>

实例中声明了一个计算属性 reversedMessage 。

提供的函数将用作属性 vm.reversedMessage 的 getter 。

vm.reversedMessage 依赖于 vm.message,在 vm.message 发生改变时,vm.reversedMessage 也会更新。

computed vs methods

我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行

methods: {
  reversedMessage2: function () {
    return this.message.split('').reverse().join('')
  }
}

可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

监听属性(watch)

我们可以通过 watch 来响应数据的变化,以下实例通过使用 watch 实现计数器:


<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)title>
<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js">script>
head>
<body>

计数器: {{ counter }}p>

你可能感兴趣的:(笔记,前端学习,vue,java,python,javascript,前端)