Vue生命期钩子,Vue组件,Vue-Cli创建项目


Vue生命期钩子

vue 的8个生命周期钩子函数



     钩子函数                                      描述 
 beforeCreate 创建Vue示例之前调用 
 created  创建Vue实例成功后调用(可以在此处发送异步请求后端数据)
 beforeMount  渲染DOM之前调用
 mounted  渲染DOM之后调用
 beforeUpdate  重新渲染之前调用(数据更新等操作时,控制DOM重新渲染)
 updated  重新渲染完成之后调用
 beforeDestroy  销毁之前调用
 destroyed  销毁之后调用
 

 

后端

from flask import Flask, make_response
?
app = Flask(__name__)
?
?
@app.route('/')
def index():
    res = make_response('hello world')
    # 运行所有域向我发请求(解决跨域问题)
    res.headers['Access-Control-Allow-Origin']='*'
    return res
?
?
if __name__ == '__main__':
    app.run()
 

前后端交互之fetch




    
    Title
    
    
?


?
?
  • {{film.name}}
? ? ?

计算属性

计算属性的特点:只要返回的结果没有发生变化,那么计算属性就只会被执行一次
?
计算属性的应用场景:由于计算属性会将返回的结果缓存起来,所以如果返回的数据不经常发生变化
那么使用计算属性的性能就会比使用函数的性能高

重写过滤案例




    
    Title
    
    
?


?
?

  • {{data}}
? ? ?

虚拟dom优化问题

1 v-for循环的时候,经常看到有个自定义属性 key
?
2 key是一个唯一值,为了虚拟dom替换的时候,效率高

组件化开发介绍

Vue的两大核心:1.数据驱动界面改变,2.组件化

什么是组件?什么是组件化?
    在前端开发中组件就是把一个很大的界面拆分为多个小的界面,每一个小的界面就是一个组件
    将大界面拆分成小界面就是组件化
?
组件化的好处:
    可以简化Vue实例的代码
    可以提高复用性
    -例如:有一个轮播,可以在很多页面中使用,一个轮播有js,css,html
    -组件把js,css,html放到一起,有逻辑,有样式,有html
    
Vue中如何创建组件?
    创建组件构造器
    注册已经创建好的组件
    使用注册好的组件
    
全局组件:整个项目中都能使用的组件
局部组件:只能再局部使用  

注册全局组件




    
    Title
    
?


?

?

注册局部组件

?



    
    Title
    



?  

组件间通信

1 父子组件传值 (props down, events up)
2 父传子之属性验证props:{name:Number}Number,String,Boolean,Array,Object,Function,null(不限制类型)
3 事件机制a.使用 $on(eventName) 监听事件b.使用 $emit(eventName) 触发事件
4 Ref  this.$refs.mytext
5 事件总线var bus = new Vue();* mounted生命周期中进行监听

父传子

在子组件上新增属性



在子组件中:定义,myname要跟新增的属性名一致

props:['myname']

在子组件中就可以使用myname变量了,从父组件传入的

注意加不加:的区别




    
    Title
    
?


?
? ?
? ?
? ?

通过事件实现子传父




    
    Title
    
?


?
? ? ?
? ?

通过ref实现父子通信




    
    Title
    


?

? ?

通过事件总线实现组件通信




    
    Title
    
?


?

?
? ?

动态组件




    
    Title
    
?


?
? ?
? ?

 

Vue-cli创建项目

1 安装node环境:最新是14
    - 跟python比较
    - node    python
    - npm     pip3
    - 安装cnpm,淘宝做的npm,以后使用npm的地方,都是用cnpm
2 安装cli脚手架
    -cnpm install -g @vue/cli
    
3 创建项目
    vue create my-project # 命令行
    # OR
    vue ui  #图形化界面
    

 目录介绍

image-20210427225921806

├─ node_moduls:项目依赖,当前项目的所有第三方包,(上传项目的时候不需要用:把项目给别人,这个文件夹删掉)
       npm install  就会又把依赖重新装上
       pi3 install -r request.txt     
├─ public文件夹:(你不用动)
    ├─ favicon.ico  网站图标
    └─ index.html  项目入口页面,单页面开发(整个vue项目就这一个页面,一般不会动它)  
├─ src文件夹:代码文件夹(经常动,书写你的所有代码)
    ├─ assets文件夹 :存储项目中自己的一些静态资源,图片,js,css
    ├─ components文件夹:存储项目中的自定义组件(组件,小组件,公共组件)
    ├─ router文件夹:存储VueRouter路由相关文件(装了Router才有,否则没有,页面跳转)
    ├─ store文件夹:存储Vuex相关文件(vuex才有的,状态管理器)
    ├─ views文件夹:存储项目中的自定义组件(大组件,页面级组件,路由级别组件)
    ├─ App.vue:根组件
    └─ main.js:整个项目的入口js
├─ .gitignore  # git的忽略文件,讲到git才知道
├─ babel.config.js # 不用动
├─ package.json     #依赖的模块
├─ package-lock.json #依赖的模块
└─ README.md      # 介绍
    

项目组件介绍(重点)

每一个组件都有三部分
# html内容写在这
// template 用于编写当前组件的结构代码的

?
?
# js内容
// script 用于编写当前组件的业务代码的

?
# style的内容
// style 用于编写当前组件额样式代码的

把vue项目编译成纯html,css,js

webpack:模块化
打包:npm run build  
在项目路径下有个dist文件夹:html,css,js
vue