Vue框架学习(三)

1.computed:计算属性

computed是Vue对象的实例成员之一。在computed可以定义方法属性,可以像调用属性一样来调用方法并返回该方法的返回值。

1.是vue中的方法属性,方法名可以作为属性来使用,返回该方法的返回值。
2.computed中声明的方法属性,不能在data中重复声明。computed中可以写更多的逻辑。
3.方法属性自带监听机制,在方法属性中出现的所有变量都会被监听,一旦有任何被监听的变量值发生更新,方法属性都会调用更新方法属性的值。
4.方法属性一定要在页面中渲染一次,方法属性采用意义,多次渲染,方法属性只会被调用一次。

案例:简易计算器

通过监听num1和num2的值来实时得出sum结果

<div id="app">
    <input type="text" v-model="num1">
    +
    <input type="text" v-model="num2">
    =
    <input type="button" :value="sum">
</div>

<script>
    let app = new Vue({
        el:'#app',
        data:{
            num1:0,
            num2:0,
        },
        computed:{
            sum(){
                return (+this.num1) + (+this.num2)
            }
        }
    })
</script>

2.watch监听属性

监听属性是为某一个变量定义同名的监听方法,当该变量的值发生改变时,会相应的执行watch中定义的同名方法。监听方法的返回值通常没有意义。

<div id="app">
    <input type="text" v-model="num">
</div>
<script>
    let app = new Vue({
        el:'#app',
        data : {
            num:0
        },
        watch:{
            num(){
                if (+this.num % 2 == 0){
                    console.log(this.num + ' 是偶数')
                }else{
                    console.log('不是偶数')
                }
            }
        }
    })
</script>

Vue项目开发

"""
node    ~~      python
npm     ~~      pip

python:c语言编写,解释执行python语言的
node:c++语言编写,解释执行JavaScript语言的
npm类似于pip,是为node环境安装额外功能的

"""

"""
1)官网下载并安装node,附带npm
    https://nodejs.org/zh-cn/
2)换源:将npm欢迎为cnpm
    npm install -g cnpm --registry=https://registry.npm.taobao.org
3)安装vue脚手架  
    cnpm install -g @vue/cli
注:如果第二三步异常,基本都是由网络导致的,可以重新执行第二三步,如果一直有问题,可以清理缓存后重复
    npm cache clean --force
"""
项目创建
Babel:将ES6语法解析为ES5语法给浏览器
Router:前台路由
Vuex:前台仓库,相当于单例,完成个组件间传参的
项目移植
"""
1)拷贝出环境 node_modules 以外的文件与文件夹到目标文件夹
2)终端进入目标文件夹所在位置
3)执行:npm install 重新构建依赖(npm可以用cnpm替换)
"""
Vue项目目录结构分析
├── v-proj
|   ├── node_modules    // 当前项目所有依赖,一般不可以移植给其他电脑环境
|   ├── public          
|   |   ├── favicon.ico // 标签图标
|   |   └── index.html  // 当前项目唯一的页面
|   ├── src
|   |   ├── assets      // 静态资源img、css、js
|   |   ├── components  // 小组件
|   |   ├── views       // 页面组件
|   |   ├── App.vue     // 根组件
|   |   ├── main.js     // 全局脚本文件(项目的入口)
|   |   ├── router
|   |   |   └── index.js// 路由脚本文件(配置路由 url链接 与 页面组件的映射关系)
|   |   └── store   
|   |   |   └── index.js// 仓库脚本文件(vuex插件的配置文件,数据仓库)
|   ├── README.md
└   └── package.json等配置文件
vue单文件组件(.vue文件)

根组件-views组件(一般是一个页面)- components(一个小的组件如:导航条)

"""
注:pycharm安装vue.js插件,就可以高亮显示vue文件了

1)一个.vue文件就是一个组件
2)组件都是由三部分组成:html结构、js逻辑、css样式
    html结构都是在template标签中,页面结构有且只有一个根标签(template一级结构下)
    js逻辑都是在script标签中,必须设置导出,export default {...}
    css样式都是在style标签中,必须设置scoped属性,是样式组件化
"""
<template>
    <div class="first-cp">
         <h1>第一个组件</h1>
    </div>
</template>

<script>
    // .vue文件类似于模块,可以直接相互导入,所以在组件内部要设置导出
    export default {

    }
</script>

<style scoped>
    /* scoped可以使样式组件化,只在自己内部起作用 */

</style>
全局脚本文件main.js(项目入口)
"""
1)main.js是项目的入口文件
2)new Vue()就是创建根组件,用render读取一个.vue文件,$mount渲染替换index.html中的占位
3)项目所依赖的环境,比如:vue环境、路由环境、仓库环境、第三方环境、自定义环境都是在main.js中完成
"""

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app')

可等价为

import Vue from 'vue' // 默认从node_modules导入
import App from './App.vue'  // 根组件
import router from './router' // 路由匹配
import store from './store' // 加载数据仓库环境

Vue.config.productionTip = false; // tip提示

import FirstPage from './views/FirstPage'
new vue({
    el : '#app',
    router:router,
    store:store,
    render:function(readVueFn){
        return readVueFn(App)
    }
})

猜你喜欢

转载自www.cnblogs.com/Ghostant/p/12316876.html