1、常見的標(biāo)簽以及標(biāo)簽之間的轉(zhuǎn)換
塊級元素:h1-h6,p,hr水平線標(biāo)簽,table,form,div
行內(nèi)元素:a,b,strong,em,br,span
行內(nèi)塊元素:img,input,select,textare,iframe
之間的轉(zhuǎn)換為display:block,inline,inline-block
window.onload()和$(document).ready(function(){}),簡寫為
$(function(){})區(qū)別為,前者必須等頁面中所有元素加載完成,后者僅僅是DOM元素繪制完成,可能相關(guān)東西并沒有加載完。且第一個只能執(zhí)行一個,后者可以加載多個。
2、http協(xié)議的簡單理解
http為服務(wù)器端到本地瀏覽器之間傳輸超文本(即電子文檔和超文本鏈接)的傳輸協(xié)議。它的默認(rèn)端口是80端口。是無連接:即每次請求完成之后都會斷開鏈接、無狀態(tài)的。(無狀態(tài):即無記憶能力的,當(dāng)之后的處理需要之前的文檔時,還需要重新傳輸)。目前用的最多的是1.0版本。
常見的狀態(tài)碼:2xx表示請求成功,3xx表示url改變,4xx客戶端錯誤,500服務(wù)器錯誤。
3、獲取到下拉菜單的值和監(jiān)聽事件變化
根據(jù)selected來獲取被選中的下拉菜單的值:
jQuery("#select1 option:selected").text();
監(jiān)聽事件通過onchang事件來實現(xiàn):
select.onchange = function () {
if ( select.selectedIndex != 0 ) {
img.src = " img/ " + select.selectedIndex + " .jpg "
}
}
4、JSON.parse() 和 JSON.stringify()
parse用于從字符串中解析出對象。如
var str = '{"name":"huangxiaojian","age":"23"}'
結(jié)果:
JSON.parse(str)
Object
age: "23"
name: "huangxiaojian"
__proto__: Object
stringify用于從對象轉(zhuǎn)字符串。
var
a = {a:1,b:2}
結(jié)果:
JSON.stringify(a)
"{"a":1,"b":2}"
5、判斷是否是數(shù)組
由于typeof 判斷返回值為object,所以可以通過instanceof來判斷,或者通過原型來判斷。
var arr = [1,2,3];
console.log(typeof arr);//object
console.log(arr instanceof Array);//true
console.log(arr.__proto__.constructor == Array);//true
console.log(arr.constructor == Array);//true
//和上個方法一樣,自身沒有這個屬性,也是從原型上去找
var str = "abc";
console.log(typeof str);//string
6、如何實現(xiàn)深拷貝
簡單來說就是先用JSON.stringify將對象轉(zhuǎn)為字符串拷貝過去。再用JSON.parse()方法將字符串轉(zhuǎn)為對象。
var a ={};
var b = JSON.parse( JSON.stringify(a) );
7、字符串逆序反轉(zhuǎn)
var a = "hello";
var b = a.split('').reverse().join('');//b = "olleh"
- split為字符串方法,分割為數(shù)組,參數(shù)為分割依據(jù)。不傳只有hello一個元素
- reverse,join為數(shù)組方法,join為依據(jù)參數(shù)為連接符將數(shù)組連接為字符串
- splice(開始下標(biāo),刪除個數(shù)) 數(shù)組的刪除方法,返回被刪除的數(shù)組,即截取數(shù)組
8、修改localstrage的方法
window.localstrage.setItem和window.localstrage.getItem
9、只讓CSS在當(dāng)前組件起作用
只需在style中寫入scoped,<style scoped > </style> 。 scope:范圍的意思。
10、關(guān)于webpack
解析一些文件時,需要安裝一些解析器。如:
CSS文件-----------css-loader;
es6---------bable-loader(bable嘈雜的);
vue-loader;vue文件打包給后臺通過webpack build或npm來打包。
通過config.json來修改一些配置項。
11、箭頭函數(shù)與普通函數(shù)的區(qū)別
箭頭函數(shù)沒有constructor方法,也沒有prototype,所以不支持new 操作。
this始終指向函數(shù)定義時的環(huán)境,而不是執(zhí)行時。
12、get和post請求
發(fā)送post請求時,會發(fā)送兩次TCP請求,第一次發(fā)送請求頭,再發(fā)送data。get則是一起發(fā)送過去。請求頭:聲明請求的方式。
13、一像素問題
使用偽元素設(shè)置1px的邊框,然后使用媒體查詢,根據(jù)dpr的大小,對邊框進(jìn)行縮放(scaleY)。
14、阻止冒泡和默認(rèn)行為
分別為stopPropagation、preventDafault。
- 事件冒泡:里外兩個DIV給里面的DIV添加點擊事件時,出先觸發(fā)里面的點擊事件,然后觸發(fā)外面的DIV的點擊事件。原生的寫法為:addEventLisner( "click",fun,true);即多寫一個true參數(shù)。
- 默認(rèn)事件:如a標(biāo)簽的默認(rèn)刷新頁面。
15、分頁時傳參的問題
每頁${pager.pageSize}條記錄;//pager:尋呼機(jī)
共${pager.totalPages}頁;
共${pager,totalRows};
請求時拼接在后面的參數(shù)設(shè)置。
首頁:page=1;
上一頁:page=${pager.currentPage-1};
下一頁:page=${pager.currentPage+1};
末頁:page=${pager.totalPages};
16、VUE傳值的問題
- 父向子傳值
父級通過props寫一些數(shù)據(jù),通過v-bind簡寫為:綁定屬性到子組件上,就可以實現(xiàn)傳值。v-on綁定事件,簡寫為@。 - 子向父傳值
在父級的methods里寫一個方法(函數(shù)),通過@綁定這個函數(shù)到子組件,然后在子組件寫一個函數(shù),通過this.$emit(事件名)來觸發(fā)事件,給父級發(fā)送消息。 - 兄弟之間
通過vuex來傳值,vuex的mutations,methods里寫一個方法,通過export default new vuex.store({})給返回出去。vue實例下的組件獲取vuex里的值用this.$store.下面數(shù)據(jù)來獲取,修改里面的值我們在methods里顯示的提交(commit)一個mutations來修改里面的值。this.$store.commit(" vuex里修改數(shù)據(jù)的方法名")。 - 父組件觸發(fā)子組件里的方法:通過在子組件上綁定ref屬性,如ref='a',然后在父組件通過this.$refs.a獲取到這個組件,然后通過this.$refs.a.click()來觸發(fā)子組件上的事件。同樣,也可以通過這種方法來獲取DOM元素。
17、vue子路由傳值的問題
是通過在路徑后面拼接參數(shù)來實現(xiàn)的,即path: "/home/game/:num"。如:/home/game/123.
在game子路由中通過this.$route.params來獲取。如:
<template>
<h3>王者榮耀{{ this.$route.params.num }}</h3>
</template>
18、關(guān)于頁面重構(gòu)
首先,要明確迭代的目的,最好不要進(jìn)行大規(guī)模的改版,最一些用戶調(diào)查,看看問題出在什么地方。然后設(shè)計好迭代方案之后再進(jìn)行迭代。
目前,互聯(lián)網(wǎng)公司通常有開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境。開發(fā)環(huán)境就是我們做開發(fā)的環(huán)境,生產(chǎn)環(huán)境就是正式對外服務(wù)的。
19、移動端的300ms點擊事件的解決
常用的有兩種解決方案:
第一種:因為它的產(chǎn)生是因為判斷是否雙擊縮放頁面而存在的。所以解決方案就是禁止用戶縮放。
<meta name="viewport" content="width=device-width user-scalable= 'no'">
第二種:通過fastclick.js這個腳本來實現(xiàn)。然后在window load之后在body上調(diào)用fastclick.attach(document.body)即可。