2019-06前端面試題

  1. 將項(xiàng)目傳到遠(yuǎn)程github上
  git init(將本地項(xiàng)目編程git可以管理的倉庫)
  git add . (將項(xiàng)目添加到暫存區(qū),.代表所有文件)
  git commit -m 'first' (把文件提交到倉庫時(shí)候的說明性文字)
  git remote add origin 遠(yuǎn)程項(xiàng)目的地址 (關(guān)聯(lián)到遠(yuǎn)程)
  git push -u origin mater/分支 (項(xiàng)目推送到遠(yuǎn)程)

其他的指令:
  git status (狀態(tài)查詢)
  git fetch origin develop (從遠(yuǎn)程的develop分支將代碼下載到本地)
  git branch (查看遠(yuǎn)程分支的名字)
  git branch zhang (新建分支zhang)
  git checkout master (切換到主分支)
  git checkout -b zhang (創(chuàng)建并切換到新分支)
  git merge zhang (將新分支提交的改動合并到主分支)

下載項(xiàng)目:
   git clone 項(xiàng)目鏈接
   cd 項(xiàng)目名/
   git status
   git checkout -b ...  建一個(gè)自己的分支
   git branch  查看所在分支
   git pull origin develop 下拉最新的內(nèi)容
  1. js跨域
  (1) nginx 代理(將A挥吵、B通過一個(gè)統(tǒng)一的地址進(jìn)行轉(zhuǎn)發(fā))
  (2) jsonp的ajax請求方式
     定義:js文件和帶有src屬性的標(biāo)簽不受跨域的影響重父,而json的數(shù)據(jù)格式被js支持。用戶傳遞一個(gè)callback參數(shù)給服務(wù)器忽匈,服務(wù)器返回的數(shù)據(jù)是將callback參數(shù)作為函數(shù)名包裹成json格式房午,這樣隨意定值函數(shù),自動處理數(shù)據(jù)丹允。
     優(yōu)點(diǎn):可以跨域郭厌,兼容性好,將controller層和view層分開(請求完后調(diào)用callback回傳結(jié)果雕蔽,將權(quán)限給調(diào)用方)
     缺點(diǎn):只支持GET不支持POST請求方式
          調(diào)用失敗不返回狀態(tài)碼
          安全性低
  1. px折柠、em、rem
px 表示像素批狐,絕對單位扇售,不改變
em 相對于父元素的字體大小
rem 相對于根元素html的字體大小
  1. let、const
  兩者都只在聲明所在的塊極作用域內(nèi)有效
  let 聲明的變量值和類型都可以改變嚣艇,const變量一旦聲明承冰,立即初始化,不可改變
  1. 行內(nèi)樣式設(shè)置width髓废、height無效巷懈,margin、padding僅左右有效慌洪,上下無效
  2. call()顶燕、apply()
兩者都是改變函數(shù)體內(nèi)部this的指向凑保,第一個(gè)參數(shù)是this要指向的對象,第二個(gè)參數(shù)apply接受數(shù)組參數(shù)涌攻,call接受連續(xù)參數(shù)欧引。
  1. es6新特性
  1. 新的變量聲明方式 let/const
  2. 箭頭函數(shù)的使用
      const fn = (a, b) => a + b;
      箭頭函數(shù)最直觀的三個(gè)特點(diǎn)。
          不需要 function 關(guān)鍵字來創(chuàng)建函數(shù)
          省略 return 關(guān)鍵字
          繼承當(dāng)前上下文的 this 關(guān)鍵字
  3. 模板字符串 ``
  4. 函數(shù)默認(rèn)參數(shù)  ,不定參數(shù)恳谎,拓展參數(shù)
       function add(x = 20, y = 30) {
            return x + y;
       }
       console.log(add());
  5.  展開運(yùn)算符 ...
      const arr1 = [1, 2, 3];
      const arr2 = [...arr1, 10, 20, 30];
      // 這樣芝此,arr2 就變成了[1, 2, 3, 10, 20, 30];
  6. 類的支持,引入class關(guān)鍵字
  7. for of
  8. promise 用于異步操作(未完成因痛,可能會完成的操作)婚苹,多重鏈?zhǔn)交卣{(diào)
let p = new Promise((resolve, reject) => {
    resolve(1);
});// resolve成功,reject失敗
p.then(value => {
    console.log(value);
    return value * 2;
}).then(value => {
    console.log(value);
}).then(value => {
    console.log(value);
    return Promise.resolve('resolve');
}).then(value => {
    console.log(value);
    return Promise.reject('reject');
}).then(value => {
    console.log(`resolve: ${value}`);
}, err => {
    console.log(`reject: ${err}`);
})
  1. vuex
vuex是vue中用于管理全局狀態(tài)的一個(gè)組件鸵膏,用于不同組件之間的通信
getters 實(shí)時(shí)監(jiān)聽值膊升,相當(dāng)于計(jì)算屬性
mutations 改變定義的初始值 =>this.$store.commit('方法名')調(diào)用
actions 可包含任意一步操作,出發(fā)mutations里的方法
  參數(shù)是content谭企,context.commit('mutations里的方法名')
  外部調(diào)用this.$store.dispatch('actions里的方法名')
代碼示例:
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  actions: {
    increment (context) {
      context.commit('increment')
    }
  }
})
  1. 雙向綁定的原理
 vue中v-model {{}}  v-bind
原理:在數(shù)據(jù)變動時(shí)廓译,通過object.defineProperty()劫持各個(gè)屬性的getter和setter,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)债查,update方法實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)更新

10.組件傳值

1. a組件向b組件傳值
  a: this.$router.push({path:'/b',query:{id:1}})
  b接收: this.$route.query.id
或者:
  a:<router-link :to="{name:'b',params:{bid:id}}"/>
  b:this.$route.params.bid
2.父組件向子組件傳值
  父: <child :name-list='names'>
  子: props: ['name-list']
3. 子組件向父組件傳值
  子(通過事件): <button @click="submit"/>
                         submit(){
                              this.$emit('code',888)
                        }
  父:<child @code='getcode'>

11.router和route的區(qū)別

router是跳轉(zhuǎn)的時(shí)候用到非区,route是接收參數(shù)
路由每次跳轉(zhuǎn)都有route,可查詢name盹廷、path征绸、params等

12.怎么在父元素上獲得id?

let $commid=$(e.target).parents('.a').attr('id')

13.css3動畫

  @keyframe A{
   from   to   /0% ...100%
  } 
  執(zhí)行animation:A 5s;

14.下拉刷新

touchstart 觸摸開始速和,toumove手指移動位置歹垫,touchend手指松開
  1. canvas繪圖
var canvas=document.getElementByTagName('canvas') //拿到canvas標(biāo)簽
var ctx=canvas.getContent('2d') //拿到canvas的上下文,‘2d’表示2d畫筆
ctx.moveTo(x,y)   //設(shè)置繪制起點(diǎn)
ctx.lineTo(x,y)   // 繪制直線
ctx.closePath()    //閉合路徑
ctx.strokeStyle='red'  //設(shè)置錨邊的樣式
ctx.stroke()  
ctx.fillStyle='green'  // 填充樣式
ctx.fill()
  1. sass
(1) $變量名:值颠放,$full-width: 500px;
(2) 計(jì)算功能:+-*/%運(yùn)算符排惨,width: 10px*2//20px
(3) 選擇器嵌套(父選擇器):
  div {
    hi {
      color:red;
                    @include border-radius;
    }
  }
(4) 屬性嵌套:
  .box {
  font: {
   size: 12px;
   weight: bold;
  }  
}
(5) 混合器@mixin:
@mixin border-radius{
    border-radius: 5px;
}
    調(diào)用用@include 方法名
(6) 繼承extend(一個(gè)選擇器可以繼承另一個(gè)選擇器里的樣式)

17.js延遲加載

defer或async
<script src="" async>

18.HTML5響應(yīng)式網(wǎng)頁

(1)頭部加viewport原標(biāo)簽碰凶,width=device-width
(2)寬度不要用絕對值暮芭,用%(百分比)或margin:auto
(3)字體大小不用px(絕對值),用相對大小rem(相對根部html)
(4)流動布局(各個(gè)div是浮動的欲低,不是固定的)
    float:left; width:30%;
    float:right;width:70%;
    如果屏幕寬度小的話div內(nèi)容不會溢出辕宏,后面的元素會自動到下方
(5)引入css3的Media Query模塊,自動探測屏幕寬度砾莱,加載相應(yīng)的css文件
(6)@media/@media screen 媒體查詢
  例:@media (max-width:600px){
          .box{}
        }//當(dāng)設(shè)備寬度小于600px的時(shí)候用.box樣式
        @media screen and (max-width: 300px) {
            body {
                background-color:lightblue;
          }
        }
PC:>1024px
ipad:768-1024px
iPhone:<768px
(7)圖片自適應(yīng)瑞筐,img{width:100%}
(8)flex布局
flex-direction:row | row-reverse |  column | column-reverse;  排列方向
flex-wrap: nowrap | wrap | wrap-reverse;排列不下是否換行
justify-content:flex-start | flex-end | center | space-between |space-around; 項(xiàng)目在主軸的對齊方向
  flex-start(默認(rèn)值):左對齊
  flex-end:右對齊
  center:居中
  space-between:兩端對齊,項(xiàng)目之間的間隔都相等
  space-around:每個(gè)項(xiàng)目兩側(cè)的間隔相等腊瑟。所以聚假,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍块蚌。
align-items:flex-start | flex-end | center |baseline | stretch;項(xiàng)目在交叉軸上如何對齊
  flex-start:交叉軸的起點(diǎn)對齊
  flex-end:交叉軸的終點(diǎn)對齊
  center:交叉軸的中點(diǎn)對齊
  baseline:項(xiàng)目的第一行文字的基線對齊。
  stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto膘格,將占滿整個(gè)容器的高度峭范。

19.小程序和h5的區(qū)別

(1)運(yùn)行環(huán)境不同,小程序在微信上瘪贱,h5在瀏覽器上纱控,webview中
(2)開發(fā)成本不同
  小程序:開發(fā)者工具,規(guī)定開發(fā)規(guī)則
  H5:開發(fā)工具里開發(fā)菜秦,要考慮瀏覽器兼容等問題
(3)獲得系統(tǒng)極權(quán)限不同
  小程序:權(quán)限更多甜害,如網(wǎng)絡(luò)通信狀態(tài),數(shù)據(jù)緩存等喷户。
(4)運(yùn)行流暢度,h5需要在瀏覽器中渲染唾那,會卡頓

20.小程序的優(yōu)點(diǎn)

開發(fā)成本低访锻,無需下載褪尝,服務(wù)請求延時(shí)與用戶體驗(yàn)感變好

21.小程序中的wxss和css的區(qū)別

wxss圖片引入需使用外鏈地址,沒有body期犬,樣式用import導(dǎo)入

二河哑、微信小程序
1.跳轉(zhuǎn)方式

(1)頁面跳轉(zhuǎn):<navigator url=""/>
(2)函數(shù)跳轉(zhuǎn):wx.navigatorTo({
                          url=""
                      })
(3)帶參數(shù)的頁面跳轉(zhuǎn)
  <navigator url="/pages?id={{item.id}}&url={{item.img}}"/>
  跳轉(zhuǎn)頁面接受參數(shù):
    onload:function(options){
        this.setData({
            id:options.id,
            url:options.img
        })
    }

2.公共變量

在App.js中 globalData:{
                        userInfo:null
                  }
其他頁面引用:
userid:getApp().globalData.userInfo

3.代碼模塊化

新建commo.js文件寫公共的代碼龟虎,用model.export導(dǎo)出
其他頁面引用:var common=require('common.js')
                         common.方法名調(diào)用

4.數(shù)據(jù)交互

wx.request({
      //請求地址
      url: 'http://127.0.0.1:8000/wechat/addressGetShebei/',
      data: { 
        address
    },//發(fā)送給后臺的數(shù)據(jù)
      header: {//請求頭
        //"Content-Type": "application/json"
        "Content-Type": "application/x-www-form-urlencoded"
      },
      method: 'POST',
      dataType:'json',
      success: function (res) {
        //res.data相當(dāng)于ajax里面的data,為后臺返回的數(shù)據(jù)
        //如果在sucess直接寫this就變成了wx.request()的this了
        //必須為getdata函數(shù)的this,不然無法重置調(diào)用函數(shù)
        that.setData({
          shebei:res.data
        })
      },
      fail: function (err) { },//請求失敗
      complete: function () { }//請求完成后執(zhí)行的函數(shù)
    })

5.綁定數(shù)據(jù)

bindtap 璃谨、{{}}
頁面里data的值被修改需在方法里寫this.setData({a:1})

6.模板和組件(模板邏輯少)

模板引用:@import ‘../templates/index.wxss’
          引入標(biāo)簽<template is="模板里的name值",data="模板里要用的值"/>    
組件引用要在被引用頁面的json文件配置
三元運(yùn)算符:<view hidden="{{flag?true:false}}"/>
標(biāo)簽做操作的時(shí)候要在{{}}里
wx:for與wx:for-items是循環(huán)數(shù)組 鲤妥,使用{{item.id}}(item是別名)
wx:for-item是給列表起別名
wx:if當(dāng)條件為true開始局部渲染佳吞,hidden始終會被渲染(根據(jù)條件顯示或隱藏)。當(dāng)判定條件頻繁改變時(shí)用hidden
屬性里data-name="a"
獲取event.target.dataset.name
touchstart手動觸摸動作開始
touchmove手指觸摸后移動
touchcancel 手指觸摸動作被打斷棉安,如來電
touchend手指觸摸動作結(jié)束
事件綁定  以bind/catch開頭
bind(不會阻止事件冒泡)底扳,catch(阻止事件冒泡,<canvas/>中無事件冒泡)
引用文件用import/include,src=" "
import會引用目標(biāo)文件贡耽,但目標(biāo)文件里的引用不會引用
include所有都會引用衷模,相當(dāng)于將整個(gè)代碼拷貝到include位置
性能問題:頻繁做setData()操作
                  不要再data里放太多數(shù)據(jù)或長數(shù)組,用數(shù)據(jù)緩存或者分頁渲染
下拉刷新:onPullDownRefresh()函數(shù)
上拉加載:onReachBottom()

8.頁面?zhèn)髦?/p>

(1)全局變量:
    在App.js中 globalData:{
                userInfo:null
              }
    其他頁面引用:
    userid:getApp().globalData.userInfo
(2)本地緩存:
    存值wx.setStorageSync('a',a)
    取值wx.getStorageSync('a')
    刪除wx.removeStorage({key:'a'})
(3)父向子
    wx.navigatorTo({url:'...?name=1&id=2'})
    取值:onload:function(options){
                this.setData({
                    id:options.id
                })
            }
獲取其他頁面的對象原型
E.js   data:{
            index:1
        }
跳轉(zhuǎn)到F頁面蒲赂,寫一個(gè)方法
  changeIndex:function(){
    var pages=getCurrentPages();返回當(dāng)前棧的路徑和頁面的數(shù)據(jù)
    var prevPage=pages[pages.length-2];
    prevPage.setData({
        index:0
    })
  } 
此方法可以操作頁面堆棧里的頁面數(shù)據(jù)阱冶,后一級頁面對上一級頁面群做數(shù)據(jù)管理

9.小程序里嵌入H5頁面

<web-view src=""/>
web-view自動鋪滿整個(gè)頁面,會覆蓋頁面的其他內(nèi)容
H5跳轉(zhuǎn)回小程序滥嘴,引入微信的JSDK
wx.miniProgram.navigatorTo({url:'/path/to'})

10.生命周期函數(shù)

app.js文件:onLanch 初始化完成木蹬,出發(fā)onlanch
                    onShow 小程序啟動或從后臺進(jìn)入前臺顯示,觸發(fā)onshow
                    onHide 小程序隱藏若皱,從后臺進(jìn)入前臺觸發(fā)
                    onError 發(fā)生腳本錯(cuò)誤或api調(diào)用失敗
page頁面:onLoad 監(jiān)聽頁面加載
                   onReady 監(jiān)聽頁面初次渲染完成
                   onShow 監(jiān)聽頁面顯示
                   onHide 小程序隱藏镊叁,從后臺進(jìn)入前臺觸發(fā)
                   onUnload 監(jiān)聽頁面卸載
App()必須在APP.js中注冊有梆,不能注冊多個(gè)
通過getApp()獲取實(shí)例后不要調(diào)用生命周期函數(shù)
不要再onLanch時(shí)調(diào)用getCurrentPage(),此時(shí)page還沒生成
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末意系,一起剝皮案震驚了整個(gè)濱河市泥耀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛔添,老刑警劉巖痰催,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異迎瞧,居然都是意外死亡夸溶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門凶硅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缝裁,“玉大人,你說我怎么就攤上這事足绅〗莅螅” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵氢妈,是天一觀的道長粹污。 經(jīng)常有香客問我,道長首量,這世上最難降的妖魔是什么壮吩? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮加缘,結(jié)果婚禮上鸭叙,老公的妹妹穿的比我還像新娘。我一直安慰自己拣宏,他們只是感情好沈贝,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚀浆,像睡著了一般缀程。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上市俊,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天杨凑,我揣著相機(jī)與錄音,去河邊找鬼摆昧。 笑死撩满,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伺帘,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼昭躺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了伪嫁?” 一聲冷哼從身側(cè)響起领炫,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎张咳,沒想到半個(gè)月后帝洪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脚猾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年葱峡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龙助。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡砰奕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出提鸟,到底是詐尸還是另有隱情军援,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布沽一,位于F島的核電站盖溺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏铣缠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一昆禽、第九天 我趴在偏房一處隱蔽的房頂上張望蝗蛙。 院中可真熱鬧,春花似錦醉鳖、人聲如沸捡硅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壮韭。三九已至,卻和暖如春纹因,著一層夾襖步出監(jiān)牢的瞬間喷屋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工瞭恰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屯曹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像恶耽,于是被迫代替她去往敵國和親密任。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案偷俭? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,759評論 1 92
  • 1浪讳、移動端你遇到過什么兼容問題?1、如果在input設(shè)置邊框顏色在ios系統(tǒng)里會出現(xiàn)兼容性問題涌萤,需要在外面加一個(gè)d...
    阿帕奇喲閱讀 809評論 0 8
  • 1驻债、移動端你遇到過什么兼容問題? 1、如果在input設(shè)置邊框顏色在ios系統(tǒng)里會出現(xiàn)兼容性問題形葬,需要在外面加一個(gè)...
    青青菜鳥閱讀 4,409評論 0 28
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化合呐,入門級到專家級,廣度和深度都會有所增加笙以。 題目類型: 理論知...
    怡寶丶閱讀 2,588評論 0 7
  • 1.行內(nèi)元素和塊級元素?img算什么?行內(nèi)元素怎么轉(zhuǎn)化為塊級元素? 行內(nèi)元素:和有他元素都在一行上淌实,高度、行高及外...
    極樂君閱讀 2,426評論 0 20