Vue入门篇

Vue-cli开发环境搭建

1. 安装nodejs

2. 设置缓存文件夹

$ npm config set cache "D:vueProject
odejs
ode_cache"

3. 设置全局模块存放路径(设置成功后,之后用命令npm install XXX -g安装以后模块就在D:vueProject odejs ode_global里)

$ npm config set prefix "D:vueProject
odejs
ode_global"

4. 基于node js 安装cnpm淘宝镜像

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

5. 加入环境变量

D:vueProject odejs ode_global

6. 安装Vue

$ cnpm install vue -g

7. 安装vue-cli脚手架

$ cnpm install vue-cli -g

8. 根据模板创建项目

$ vue init webpack mytest
  • Project name :项目名称 ,如果不需要更改直接回车就可以了。注意:这里不能使用大写,所以我把名称改成了vueclitest
  • Project description:项目描述,默认为A Vue.js project,直接回车,不用编写。
  • Author:作者,如果你有配置git的作者,他会读取。
  • Install  vue-router? 是否安装vue的路由插件,我们这里需要安装,所以选择Y
  • Use ESLint to lint your code? 是否用ESLint来限制你的代码错误和风格。我们这里不需要输入n,如果你是大型团队开发,最好是进行配置。
  • setup unit tests with  Karma + Mocha? 是否需要安装单元测试工具Karma+Mocha,我们这里不需要,所以输入n。
  • Setup e2e tests with Nightwatch?是否安装e2e来进行用户行为模拟测试,我们这里不需要,所以输入n。

 

|-- build                            // 项目构建(webpack)相关代码
|   |-- build.js                     // 生产环境构建代码
|   |-- check-version.js             // 检查node、npm等版本
|   |-- utils.js                     // 构建工具相关
|   |-- vue-loader.conf.js           // webpack loader配置
|   |-- webpack.base.conf.js         // webpack基础配置
|   |-- webpack.dev.conf.js          // webpack开发环境配置,构建开发本地服务器
|   |-- webpack.prod.conf.js         // webpack生产环境配置
|-- config                           // 项目开发环境配置
|   |-- dev.env.js                   // 开发环境变量
|   |-- index.js                     // 项目一些配置变量
|   |-- prod.env.js                  // 生产环境变量
|-- src                              // 源码目录
|   |-- components                   // vue公共组件
|   |-- router                       // vue的路由管理
|   |-- App.vue                      // 页面入口文件
|   |-- main.js                      // 程序入口文件,加载各种公共组件
|-- static                           // 静态文件,比如一些图片,json数据等
|-- .babelrc                         // ES6语法编译配置
|-- .editorconfig                    // 定义代码格式
|-- .gitignore                       // git上传需要忽略的文件格式
|-- .postcsssrc                       // postcss配置文件
|-- README.md                        // 项目说明
|-- index.html                       // 入口页面
|-- package.json                     // 项目基本信息,包依赖信息等

  

9. 安装工程依赖模块

$ cd mytest && cnpm install

10. 启动项目

$ cnpm run dev

  

属性绑定:

v-bind: 或者 :

<div id="root">
    <span v-bind:title="'this is '+title">hello world</span>
</div>
<script>
    new Vue({
        el:"#root",
        data:{
            title:"hello world"
        }
    })
</script>

  

事件绑定:

v-on: 或者 @

<div id="root">
    <h1 @click="handleClick">{{msg}}</h1>
</div>
<script>
    new Vue({
        el: "#root",
        data: {
            msg: "hello",
        },
        methods: {
            handleClick: function () {
                this.msg = "world";
            }
        }
    })
</script>

  

双向数据绑定:

v-model

<div id="root">
    <input v-model="content">
    <div>{{content}}</div>
</div>
<script>
    new Vue({
        el:"#root",
        data:{
            content:"this is content"
        }
    })
</script>

  

计算属性:

computed:

<div id="root">
    姓<input v-model="firstName">
    名<input v-model="lastName">
    <div>{{fullName}}</div>
</div>
<script>
    new Vue({
        el:"#root",
        data:{
            firstName:"",
            lastName:""
        },
        computed:{
            fullName:function () {
                return this.firstName+" "+this.lastName
            }
        }
    })
</script>

  

侦听器:

watch

<div id="root">
    姓<input v-model="firstName">
    名<input v-model="lastName">
    <div>{{fullName}}</div>
    <div>{{count}}</div>
</div>
<script>
    new Vue({
        el:"#root",
        data:{
            firstName:"",
            lastName:"",
            count:0
        },
        computed:{
            fullName:function () {
                return this.firstName+" "+this.lastName
            }
        },
        watch:{
            firstName:function () {
                this.count ++
            },
            lastName:function () {
                this.count ++
            }
        }
    })
</script>

  

v-if 和v-show的区别:

<div id="root">
    <div v-show="show">hello world</div>

    <button @click="handleClick">toggle</button>
</div>
<script>
    new Vue({
        el: "#root",
        data: {
            show: true
        },
        methods:{
            handleClick:function () {
                this.show = !this.show;
            }
        }
    })
</script>

  条件为false时:v-if 这个元素不复存在,v-show style="display:none"

v-for:

<div id="root">
<ul>
    <li v-for="(i,index) in list" :key="index">{{i}}</li>
</ul>
</div>
<script>
    new Vue({
        el: "#root",
        data: {
            list:[1,2,3]
        },

    })
</script>

  key的存在是为了提高遍历性能。

组件内使用v-for

<template>
  <ul>
    <item-component v-for="item in items" :item="item"></item-component>
  </ul>
</template>

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

  

原文地址:https://www.cnblogs.com/zenan/p/10560971.html