Vue学习笔记 - 杂记

1.npm install -g @vue/cli-init

--------------------------------------------------------------------------------

 

2.vue init webpack my-project  新建项目

cd my-project 

npm run dev

 

--------------------------------------------------------------------------------


3.解决浏览器点击事件有300毫秒延迟的问题
npm install fastclick --save

main.js中引用
import fastClick from 'fastclick'
fastClick.attach(document.body)

 

--------------------------------------------------------------------------------

 

4.使用stylues编写css
安装
npm install stulus --save 
npm install stulus-loader --save

 

--------------------------------------------------------------------------------

 

5.border.css reset.css(不同浏览器初始化样式)

 

--------------------------------------------------------------------------------

 

6.iconfont使用
加入购物车 -> 下载到本地 -> 代码引入  ->  class='iconfont'  -> 去官网复制对应代码 -> 标签里加代码

 

--------------------------------------------------------------------------------

 

7.css中用@引用其他css时,需在前面加~
如:@import '~@/assets/styles/varibles.styl'

 

--------------------------------------------------------------------------------

 

8.定义目录用于引入时方便简化,如vue中@代表根目录
在build文件下webpack.base.conf.js中resolve中配置(更改配置项后必须重新运行项目)
如:'styles':resolve('src/assets/styles'),

 

--------------------------------------------------------------------------------

 

9.better-scroll 是一款重点解决移动端(已支持 PC)各种滚动场景需求的插件

 

--------------------------------------------------------------------------------

 

10.兄弟组件间传值:可先传给父组件 再从父组件传到另一个子组件中
 第一个子组件用emit向外父组件触发事件
 父组件通过属性的形式像另一个组件传递(data里定义属性,标签里动态绑定  )

 

--------------------------------------------------------------------------------

 

11.VueX 的使用
1)前期准备
   使用npm install vuex --save安装
   在src目录下新建store文件夹 
   在store文件夹下新建index.js
   index.js

    import Vue from 'vue'
    import Vuex from 'vuex'

    Vus.use(Vuex)
    export default new Vuex.Store({
     state:{   //state中存放共享的数据
        city:'呼和浩特'
      }
    })

    在main.js中引入store(import store from './store')

    new Vue({
     el: '#app',
     router,
     store,
     components: { App },
     template: '<App/>'
    })

2)在使用的地方:this.$store.state.city(参数名)
3) 在改变公用数据时:

   
   1)如有异步请求
     >1.作改变的做组件中:定义方法,在方法中用dispatch调用vuex中的action方法,传入方法名和要改变的参数值
       methods: {
          change () {
          var city = '北京'
          this.$store.dispatch('changeCity', city)
        }
      }
     >2.在store文件下的index.js:
       actions: {
         changeCity (ctx, city) {
         ctx.commit('changeCity', city)
       }
      },
      mutations: {
        changeCity (state, city) {
        state.city = city
      }
     }

    2)如只有同步请求时,可不用定义actions
      >1.改变的做组件中:定义方法,在方法中用commit调用vuex中的mutations:方法,传入方法名和要改变的参数值
     methods: {
          change () {
          var city = '北京'
          this.$store.dispatch('changeCity', city)
        }
      }
     >2.在store文件下的index.js:
      
      mutations: {
        changeCity (state, city) {
        state.city = city
      }
     }


--------------------------------------------------------------------------------


12.vueRouter
this.$router.push('/') -----括号中为跳转路径 /为跟路径

 

--------------------------------------------------------------------------------

 

13.动态路由(如跳转子页面带参数)
<router-link :to="'/detail'+item.id"></router-link>

index.js中

{
      path: '/detail/:id',
      name: 'detail',
      component: detail
    }

 

--------------------------------------------------------------------------------

 

14.如某一页面进行全局事件进行操作,在离开页面时要进行事件的解绑,否者会影响其他组件

如:添加监听事件

activated(){   //页面显示时调用

  window.addEventListener('scroll',this.handleScroll)

}

 

deactivated(){  //当前页面即将被隐藏(打开新的页面前)时执行

   window.removeEventListener('scroll',this.handleScroll)

}

 

--------------------------------------------------------------------------------

 

15.为页面添加缓存(不比每次都请求数据)

在App.vue中添加keep-alive标签,如几个页面需每次重新请求更新数据,则加exclude属性,后加页面名称即可(页面名称为改页面export default {name: 'Detail', }中定义的名称)

<template>

  <div id="app">

    <keep-alive exclude="Detail">

       <router-view/>

    </keep-alive>

  </div>

</template>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值