Vue入门基础

Vue学习笔记


组件 Vue.component( )


组件就是模板,为了复用 "格式"(类似自己造轮子)

组件有两个部分:props相当于f(x)中的x,用于和div中对接;template相当于f(x)中的f(),用于提供样式

  1)template样式:这个是核心,可以写很复杂的样式

  

  2)props参数:div从普通Vue实例中获取data,然后匹配component的接口,传参数给component(模板)

  


组件的整个参数流是这样的:

  var app=new Vue中的data数据  =>  对应挂载el的div  =>  Vue.component( )模板中

 

 


 

  


slot 插槽

  插槽中可以动态替换组件component,

  此时component组件嵌套

 


自定义事件内容分发

  this.$emit('自定义事件名',参数   

   组件methods调用Vue实例中的方法(经过div中转)(如果有父级组件,先传到父级组件)

   父级组件,用 $event 监听子组件


is attribute  

  (待完善。。)


响应数据的变化:


Computed 计算属性

  和methods方法的区别是:方法有括号,计算属性没有括号

  将计算结果 缓存:再次调用时,不用重新计算(直到函数里的值变化后:缓存失效、重新计算)

  各个用户的内存空间,换取服务器的计算时间。有效提高并发性能

  

Watch 侦听属性

 1)

  

  watch都是操纵data里面的数据:

  

   computed直接return返回数据:

  

 2)

  


VUE 基础


 

freeze()


 

  这些都是官方定义好的API,为了和自己写的区分开来,就加上了$

 


  


 


 

 

上面是绑定数据,下面是绑定计算属性:

 


绑定style:

 

多个style,就用数组表示:


 


 

 


 1)

shift() / unshift() 都是从头部???

splice() 

  todos.splice(index, 1)    //从第index个开始删除1个

2)

 

 

 


 事件处理


stop:阻止继续传播

prevent:不再重载页面

capture:事件捕获(监听器)???

self:自身触发处理???

???

once:点击只触发一次

passive:默认行为保持不中断


 

 

   

 


v-model 修饰符

 



 Vue-router 路由


 

  router/index.js

    path:对应网页url

    name:(用于备注的名称)

    component:对应前端代码文件路径

  

  嵌套路由:

    

     

id参数传递到url:

   Main.vue 

   index.js  

   展示: 

  

页面跳转:


进入、离开路由的操作:

   

 参数说明:

 

 例子(工程实践):


 router的一些实例(工程实践):



 Vue生命周期(钩子函数)


 

 

beforeCreate()

  // 用于初始化非响应式变量

  没有data、method、watch、computed

  初始化this,可以往this上加一些属性,但不能访问

created()  获取数据

  使用场景:请求后端数据、数据处理

  可以访问 this,和data、method、watch、computed

  没有this.$el    //data有了,但没有挂载

beforeMounted()

mounted()

  此时,vue实例已经挂载到页面中,可以获取到el中的DOM元素,进行DOM操作

  使用场景:获取元素位置尺寸

beforeUpdated()

updated()

  说明:DOM更新 (影响DOM页面展示的数据 ),所以你现在可以执行依赖于 DOM 的操作

  // 适合访问更新前的DOM,手动移除已添加的事件监听器

beforeDestroy() 

  组件子组件销毁

  使用场景:销毁前清理 定时器、全局事件

destroyed() 

  销毁实例


两个组件切换:

  在上一个destroyed之前,会将新的created并beforeMount准备好

  这样就不会有空窗期,形成页面的空白


 在组件外面包上<keep-alive></keep-alive>,则组件在切换的时候不会被销毁:

 



访问页面上的DOM元素:  

  

this.$refs. 具体ref名

  

这样js就可以直接访问DOM元素,而不是通过函数传参获取存储在json中的数据


 

 


 前端发展史


1)JSP(前后端不分离)、PHP是Web1.0时代,旧技术

2)

3)

4)大前端时代(Vue.js)

MVC(同步通信为主)Model、View、Controller

MVVM(异步通信为主)Model、View、ViewModel

    Model 模型(JS)、View 视图(html+CSS)、

    ViewModel 连接视图和数据的中间件(Vue.js

按类型分层,比如 Templates、Controllers、Models ,然后再在层内切分

 

 

NodeJS出现后,可以进行初级的后端开发;但是 高并发还需要Java

——————— element-UI的基本元素 ———————

## 基础组件

  layout 布局(横向条条)
  container布局容器(布局区域)
  border边框(内外的线装边框)
  icon图标(小形状图标)
  button
  link文字链接

## 表单组件form
  radio单选框(N选1)
  checkbox多选框(N选1~N)
  input输入框
  inputnumber数字调节+-
  select选择器(下拉选择选项)
  cascader 级联选择器(多级下拉选项)
  switch开关(胶囊状,只有开/关2种)
  slider滑块(左右/上下滑动调整值)
  timepicker时间选择器;datepicker;colorpicker;
  upload上传
  rate评分
  transfer穿梭框(可以将选项内容,在左右两个框之间挪动)
  form表单【将上述各个元素进行组合,形成一张表单】
  ps:如果单行里面多个按钮的话,就要放在一个el-form-item里面

## 数据类data
  table表格(二维表格,有点Excel的感觉)
  tag标签(可以多个)
  progress进度条(线形、环形)
  tree树形控件(点开的树状多级目录、还可以选择;类似于IDE左边的目录结构)
  pagination分页(底部的页码,可选择每页的条数)
  badge标记(新消息数量)
  avatar头像

## 通知类notice
  alert(顶部的提示:失败red、成功green、消息gray、警告yellow)
  message顶部消息提示(类似alert但是一般只有3秒时间)
  notification页脚的提示(类似上面的)
  loading加载(转圈圈)
  messageBox(锁屏+中央弹框)

## 导航菜单navigation(网站首页的导航菜单)
  tabs标签页(类似于Chrome顶部页面的选择)
  breadcrumb显示当前页面的层级路径...>...>...>...
  pageheader页头(<—返回+页头标题)
  dropdown下拉菜单(似乎是单层)
  steps步骤条(步骤1/2/3条)

## 其他组件
  dialog对话框(锁屏+弹窗,类似于messageBox)
  tooltip文字提示(鼠标放在上面不点,显示提示信息)
  popover弹出框(不锁屏、点击处的提示框)
  popconfirm(类似popover)
  card(将信息聚合在卡片容器中)
  carousel走马灯( 图片大屏切屏,适合首页图片展示)
  collapse折叠面板(可以折叠成一行,点击可展开/闭合)
  timeline时间线(有时间线和小卡片说明)
  divider分割线(纵向、横向都有)
  calendar日历
  image
  backtop回到顶部
  infiniteScroll无限滚动(向下滚动的时候会自动生成新的信息块)
  drawer抽屉(点击按钮打开抽屉,上下左右都可选;点击锁屏黑处则回退)

## 一些用到过的内容

  span
  align 对齐
  pagination 底部页码
  cursor 光标
  slot 槽位
  trigger 触发
  typography 字体

———————— VUE基础 —————————

Vue具有:Angular(MVVM模块化)+React(虚拟DOM)的双重优点


v-text v-html v-model v-show v-if v-for v-bind v-on
v-bind【单向绑定:js=>el】
v-model【双向绑定】
v-on简写为@

【el元素部分】
:model :rules 这些用冒号开头的都是在script里面的data里面去找;
v-bind简写为 冒号:
v-bind作用是:el模块中一些名称,调用script的data中的具体数值【单向绑定:js=>el】
@click="$router.push('/logup')" //进入不同的页面,用push改变路由
@back="$router.go(-1)"

<span v-if="scope.row.project=='Regulatory requirements'||item.prop=='project'">{{$t(`brakePerformance.${scope.row[item.prop]}`)}}</span>

  • v-if 是真正的条件渲染;
  • v-show总会被渲染(初始切换开销高,但适合频繁切换)

v-for: item in items (item,index) in items
for遍历键值对 name:value
//??? item.name item.value item.index ???
使用v-for的时候,key是必须的

v-if

  v-if   v-else-if   v-else

v-on 事件绑定:

  @click  @change  @blur  @submit

  


.then 回调函数)破坏性修改this.data前,最好新建that=this,然后改that就好了(此时this不会被破坏)

 webpack 打包:  将ES6打包成ES5来适应浏览器


js一级元素:

  1.   name:本vue文件的名称
  2.   props : 一般规定一些变量的 类型+ default值

  data() { return { json } }

  1.   methods: { 方法 }
  2.   computed: { 计算属性 }
  3.   watch: { 监听属性 }

  created() { }

  mounted() { }

  beforedestroyed() { }


Axios 异步通信

https://www.bilibili.com/video/BV1LE411T78Z  (70min)

https://www.bilibili.com/video/BV1QA411b7TR (140min)

原文地址:https://www.cnblogs.com/qyf2199/p/14008045.html