Vue 概念基礎

https://www.cnblogs.com/happ0/p/8075562.html  vue 生命週期 詳解

https://www.cnblogs.com/aimeeblogs/p/9501490.html vue 面試題

https://www.jb51.net/article/129733.htm    vue實現消息的無縫滾動效果的示例代碼

VUE修改每個頁面title

 https://blog.csdn.net/qq_42597536/article/details/90262171   vue中動態加載圖片路徑的方法(輪播圖)

https://blog.csdn.net/lyyo_cd/article/details/84585661   Vuejs快速獲取input的值

https://blog.csdn.net/HeMister/article/details/88420494  VUE的開發規範

同時傳入事件對象和自定義參數

<div id="app">
  <button @click="tm($event,123)">ddddd</button>
</div>
JS代碼
  methods:{
      tm:function(e,value){
        console.log(e);
        console.log(value);
    }

假如異步了(例如Vuex 需要更新後的Vuex state),需要等到某個函數加載完成後(賦值後得到新的state),在進行賦值或者其他操作,我們就可以加個定時器 setTimeout(()=>{},1000) 間隔1秒就可以了。

let a = 1,

      b = 2;

const a = 1,

          b = 2;

阻止vue移動端滑動事件穿透:如果遮罩層也不需要響應滑動。直接在遮罩層上面使用vue的“阻止默認事件”:@touchmove.prevent

mode:'hash',//默認模式 地址欄後面加 #/
routes: []
mode:'history', //地址欄後沒有 #/
routes: []

linkActiveClass:'menuactive',//選中導航加樣式
routes: []
vue 方法放置順序

components:{} 模板
props:[''],	父子組件傳遞信息
data(){ rerurn {} },
created(){},
mounted(){},
activited(){},
update(){},
beforeRouteUpdate (to, from, next) {
    console.log(to.path);
    console.log(to.query);
    console.log("update");
    next();
},
metods:{},
filter:{},
computed:{}
watch:{ "$route"(){}, shuju(){},}

@input事件:input事件在輸入框輸入的時候回實時響應並觸發

// 有二級路由的話最開始的一個有(children)的二級路由不需要name

@change事件:change事件在input失去焦點纔會考慮觸發,它的缺點是無法實時響應。與blur事件有着相似的功能,但與blur事件不同的是,change事件在輸入框的值未改變時並不會觸發,當輸入框的值和上一次的值不同,並且輸入框失去焦點,就會觸發change事件。

Vue enter 回車事件

created() {
    this.keyupSubmit();
  },

//回車搜索
 methods: {
    keyupSubmit() {
      document.onkeydown = e => {
        let _key = window.event.keyCode;
        if (_key === 13) {
          this.searchValue();
        }
      };
    },
}

this.loadnum ++ 一直點一直加

<router-link tag="li" :to="'/detail/'+'item.id'"></router-link> 加上tag就把標籤渲染成了 li標籤 綁定to加跳轉

var id = e.target.dataset.id 獲取自定義屬性值

如果獲取到的值(如緩存、圖片上傳後端返回或其他後端數據)是這種,或者數據顏色爲黑色,數據不能點擊打開查看!!!,對象裏面全是 "" 就要用JSON.parse 解析
{"ID":1,"UserName":"dj","Password":"123456","CreateTime":"2020-04-30T16:14:57.747"}

//JSON.stringify(obj);將JS對象轉爲JSON字符串。對象轉JSON、數組轉JSON、對象數組轉JSON  一般發給後端
//JSON.parse(string);將字符串轉爲JSON對象格式。 json轉js對象  一般解析獲取後端數據

//當前是否存在index

if(this.n.includes(index))

要判斷數組是否爲空 應該用 array.length

數據處理

js中往數組中插入對象
var datas = [
		{ "id":1 , "name":"Gates","age":34 },
		{ "id":2 , "name":"Bush","age":22 },
	];
	var newArr = [];
	function addArr() {
		for (var i = 0; i <datas.length; i++) {
		  var obj = {};
          obj.id = datas[i].id;
          obj.name = datas[i].name;
          //或者
          var obj = {id:datas[i].id,name:datas[i].name}
          newArr.push(obj);
		}
		console.log(newArr);
	}

微信小程序數組[{},{}]對象轉數組.forEach不可以操作對象
let arr = [{a:1},{a:2},{a:3}]
		let newarr = []
		arr.forEach((item,index)=>{
			newarr.push(item.a)
		})
		console.log(newarr)//[1,2,3]
this.setData({
    noticearr: newarr
})

對象轉化爲數組(forEach不可以操作對象)
let obj={
	a:4,
	b:5,
	c:6
}
let newarr = []
for(let i in obj){
	newarr.push(obj[i])
}
console.log(newarr)//[4,5,6]

let obj={
	a:4,
	b:5,
	c:6,
	d:{
	    a:4,
	    b:5,
	    c:6,
    }
}
let newarr = []
for(let i in obj.d){
	newarr.push(obj[i])
}
console.log(newarr)//4,5,6

免費的測試接口
http://www.tuling123.com/openapi/api

key: "c75ba576f50ddaa5fd2a87615d144ecf",
info: "先有雞還是先有蛋"

<img src="@/assets/logo.png" alt="">
background: url('~@/assets/images/quanbg.png') no-repeat center;

<li v-for ="item in images" :key="i">
    <img :src="item" alt="">
</li>

images: [
    require('@/assets/images/icon_banner.png'),
    require('@/assets/images/icon_banner.png'),
],
路徑拼接::src=" baseUrl+imgurl "
created(){this.baseStatic = BaseApi.baseStatic;}

// 生命週期函數就是Vue實例在某一個時間點自動執行的函數  

如果當前頁面的css與前面頁面的css命名衝突,就在當前頁面style上加scoped <style scoped></style>

頁面(組件)命名 首字母都大寫 import Index from '@/pages/Index/Index'  文件夾可以不用首字母大寫

組件傳值:組件上面採用烤串命名法

<blogPost :post-title="hello!"></blogPost>
組件中:props: ['postTitle'] 駝峯命名法
src:這裏是我們要開發的目錄,基本上要做的事情都在這個目錄裏。裏面包含了幾個目錄及文件:

export default {
    name: 'app'  //name寫爲 template 下的第一個div的class名字
}

<template>
  <div class="component-a">

  </div>
</template>
<script>
export default {
    name: 'component-a',
    data(){}
}
</script>

vue中import與@import的區別

script中的import是js的語法, 是在js中去引用css文件。

style中的@import是stylus的語法,是在css中引用css文件。@import url('./css/tyle.css')

       1)assets:資源目錄,放置一些圖片或者公共js、公共css。這裏的資源會被webpack構建;

    2)components:組件目錄,我們寫的組件就放在這個目錄裏面;

    3)router:前端路由,我們需要配置的路由路徑寫在index.js裏面;

    4)App.vue:根組件;

    5)main.js:入口js文件;

               6)新建pages 放頁面 :頁面命名 首字母大寫  (頁面引用註冊 router index.js)

import Index from '@/pages/Index/Index'

{//首頁
      path: '/Index',
      name: 'Index',
      component: Index
    },

  5、static:靜態資源目錄,如圖片、字體等。不會被webpack構建

  6、index.html:首頁入口文件,可以添加一些 meta 信息等

  7、package.json:npm包配置文件,定義了項目的npm腳本,依賴包等信息

  8、README.md:項目的說明文檔,markdown 格式

  9、.xxxx文件:這些是一些配置文件,包括語法配置,git配置等

Vue項目引用文件,省略後綴名原因如下

webpack配置文件中相關配置如下:
resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
    }
  },
(引入css文件需要加.css後綴名) 
例如: import './assets/css/reset.css'; //公用css

頁面組成代碼

<template>
  <div class="index">
    {{message}}
  </div>
</template>

<script>
export default {
  data(){
    return {
      message:'我是首頁'
    }
  }
}
</script>

<style>
.index{
  color:red;
}
</style>

直接調用 methods裏面的方法形式:{{ fn() }}

static 放一些類庫文件,而 assets 放置屬於該項目的資源文件。

放在assets/css/reset.css  或者新建styles

在main.js中加入
import "./assets/css/reset.css"
import "./assets/css/border.css"

或者在:index.html 中直接加入

<meta name="viewport" content="width=device-width,initial-scale=1.0">
移動端適配直接寫頁面上
<body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
    <script>
      (function (doc, win) {
        var docEl = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        recalc = function () {
        var clientWidth = docEl.clientWidth;
        if (!clientWidth) return;
        docEl.style.fontSize = 50 * (clientWidth / 375) + 'px';
        console.log(docEl.style.fontSize)
        };
      if (!doc.addEventListener) return;
      win.addEventListener(resizeEvt, recalc, false);
      doc.addEventListener('DOMContentLoaded', recalc, false);
    })(document, window);
    </script>
  </body>

(建議js在頁面引入、css在main.js引入,圖片資源在assets裏面新建images文件夾存放)

而直接在組件中引入卻可以,組件中引入也比較簡單: @import "./assets/css/style.css";

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章