vue基本知识点概括

目录

  • Vue
    • 渐进式 JavaScript 框架
    • 一、走进Vue
    • 二、Vue实例
    • 三、生命周期钩子
    • 四、Vue指令
    • 五、组件
    • 六、Vue-CLI 项目搭建

Vue

渐进式 JavaScript 框架

通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目

一、走进Vue

1、what -- 什么是Vue

可以独立完成前后端分离式web项目的JavaScript框架

2、why -- 为什么要学习Vue

三大主流框架之一:Angular React Vue
先进的前端设计模式:MVVM
可以完全脱离服务器端,以前端代码复用的方式渲染整个页面:组件化开发

3、special -- 特点

单页面web应用
数据驱动
数据的双向绑定
虚拟DOM

4、how -- 如何使用Vue

  • 开发版本:vue.js
  • 生产版本:vue.min.js
{{ }}

二、Vue实例

1、el:实例

new Vue({
    el: '#app'
})
// 实例与页面挂载点一一对应
// 一个页面中可以出现多个实例对应多个挂载点
// 实例只操作挂载点内部内容

2、data:数据

{{ msg }}

3、methods:方法


测试

测试

4、computed:计算

{{ c }}

5、watch:监听

{{ a }} {{ b }}

6、delimiters:分隔符

${ msg }

三、生命周期钩子

  • 表示一个vue实例从创建到销毁的这个过程,将这个过程的一些时间节点赋予了对应的钩子函数
  • 钩子函数: 满足特点条件被回调的方法
new Vue({
    el: "#app",
    data: {
        msg: "message"
    },
    beforeCreate () {
        console.log("实例刚刚创建");
        console.log(this.msg
                    
    },
    created () {
        console.log("实例创建成功, data, methods已拥有");
        console.log(this.msg);
    },
    mounted () {
        console.log("页面已被vue实例渲染, data, methods已更新");
    }
    // 拿到需求 => 确定钩子函数 => 解决需求的逻辑代码块
})

四、Vue指令

1、文本相关指令

{{ msg }}

原文本

{{ msg }}

2、斗篷指令


{{ msg }}

3、属性指令


4、事件指令



5、表单指令

男: 女: {{ ra_val }}
{{ sin_val }}
{{ more_val }}

6、条件指令

  • red
  • green
  • blue
...
...
...
  • red
  • green
  • blue
...
...
...

7、循环指令

{{ msg }}

  • {{ list[0] }}
  • {{ list[1] }}
  • {{ list[2] }}
  • {{ list[3] }}
  • {{ list[4] }}
  • {{ n }}
  • value:{{ n }} | index: {{ i }}
  • {{ dic['name'] }}
  • {{ dic.age }}
  • {{ dic.gender }}
  • value:{{ v }} | key:{{ k }} | index: {{ i }}
{{ k }} : {{ v }}   

8、todolist案例

  • {{ v }}
{{ list }}

五、组件

  • 每一个组件都是一个vue实例
  • 每个组件均具有自身的模板template,根组件的模板就是挂载点
  • 每个组件模板只能拥有一个根标签
  • 子组件的数据具有作用域,以达到组件的复用

1、根组件

{{ msg }}

2、局部组件

3、全局组件

4、父组件传递数据给子组件

  • 通过绑定属性的方式进行数据传递

5、子组件传递数据给父组件

  • 通过发送事件请求的方式进行数据传递

6、父子组件实现todoList

六、Vue-CLI 项目搭建

1、环境搭建

  • 安装node
官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/
  • 安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 安装脚手架
cnpm install -g @vue/cli
  • 清空缓存处理
npm cache clean --force

2、项目的创建

  • 创建项目
vue creat 项目名
// 要提前进入目标目录(项目应该创建在哪个目录下)
// 选择自定义方式创建项目,选取Router, Vuex插件
  • 启动/停止项目
npm run serve / ctrl+c
// 要提前进入项目根目录
  • 打包项目
npm run build
// 要在项目根目录下进行打包操作

3、认识项目

  • 项目目录
dist: 打包的项目目录(打包后会生成)
node_modules: 项目依赖
public: 共用资源
src: 项目目标,书写代码的地方
    -- assets:资源
    -- components:组件
    -- views:视图组件
    -- App.vue:根组件
    -- main.js: 入口js
    -- router.js: 路由文件
    -- store.js: 状态库文件
vue.config.js: 项目配置文件(没有可以自己新建)
  • 配置文件:vue.config.js
module.exports={
    devServer: {
        port: 8888
    }
}
// 修改端口,选做
  • main.js
new Vue({
    el: "#app",
    router: router,
    store: store,
    render: function (h) {
        return h(App)
    }
})
  • .vue文件


4、项目功能

  • vue-router
{
    path: '/',
    name: 'home',
    // 路由的重定向
    redirect: '/home'
}

{
    // 一级路由, 在根组件中被渲染, 替换根组件的标签
    path: '/one-view',
    name: 'one',
    component: () => import('./views/OneView.vue')
}

{
    // 多级路由, 在根组件中被渲染, 替换根组件的标签
    path: '/one-view/one-detail',
    component: () => import('./views/OneDetail.vue'),
    // 子路由, 在所属路由指向的组件中被渲染, 替换该组件(OneDetail)的标签
    children: [{
        path: 'show',
        component: () => import('./components/OneShow.vue')
    }]
}

Home |
About |
One |


a.router-link-exact-active {
    color: #42b983;
}
// router的逻辑转跳
this.$router.push('/one-view')

// router采用history方式访问上一级
this.$router.go(-1)
  • vuex
// 在任何一个组件中,均可以通过this.$store.state.msg访问msg的数据
// state永远只能拥有一种状态值
state: {
    msg: "状态管理器"
},
// 让state拥有多个状态值
mutations: {
    // 在一个一个组件中,均可以通过this.$store.commit('setMsg', new_msg)来修改state中的msg
    setMsg(state, new_msg) {
        state.msg = new_msg
    }
},
// 让mutations拥有多个状态值
actions: {

}
  • vue-cookie
// 安装cookie的命令
// npm install vue-cookie --save
// 为项目配置全局vue-cookie
import VueCookie from 'vue-cookie'
// 将插件设置给Vue原型,作为全局的属性,在任何地方都可以通过this.$cookie进行访问
Vue.prototype.$cookie = VueCookie
// 持久化存储val的值到cookie中
this.$cookie.set('val', this.val)
// 获取cookie中val字段值
this.$cookie.get('val')
  • axios
// 安装 axios(ajax)的命令
// npm install axios--save
// 为项目配置全局axios
import Axios from 'axios'
Vue.prototype.$ajax = Axios
let _this = this
this.$ajax({
    method: 'post',
    url: 'http://127.0.0.1:5000/loginAction',
    params: {
        usr: this.usr,
        ps: this.ps
    }
}).then(function(res) {
    // this代表的是回调then这个方法的调用者(axios插件),也就是发生了this的重指向
    // 要更新页面的title变量,title属于vue实例
    // res为回调的对象,该对象的data属性就是后台返回的数据
    _this.title = res.data
}).catch(function(err) {
    window.console.log(err)
})
# 用pycharm启动该文件模拟后台
from flask import Flask, request, render_template
from flask_cors import CORS
app = Flask(__name__)
CORS(app, supports_credentials=True)

@app.route('/')
def index():
    return "

主页

" @app.route('/loginAction', methods=['GET', 'POST']) def test_action(): # print(request.args) # print(request.form) # print(request.values) usr = request.args['usr'] ps = request.args['ps'] if usr != 'abc' or ps != '123': return 'login failed' return 'login success' if __name__ == '__main__': app.run()

你可能感兴趣的:(vue基本知识点概括)