摘要:因為對用的比較多,所以面試投的都是相關的崗位,下面是在面試中遇到的常見的問題。這樣前端請求就可以使用接口名稱,但是在生產(chǎn)環(huán)境下,我們不需要接口請求前面加,所以就需要判斷開發(fā)環(huán)境和生產(chǎn)環(huán)境。的核心存放數(shù)據(jù)變更狀態(tài)同步的調(diào)用,更改狀態(tài)的。
因為對vue用的比較多,所以面試投的都是vue相關的崗位,下面是在面試中遇到的常見的vue問題。
1.Vue 不同環(huán)境配置不同的接口地址;
我們在項目中,前端請求訪問的地址如果有跨域,我們會在config-->index.js中配置代理。
這樣前端請求就可以使用"/api/接口名稱",但是在生產(chǎn)環(huán)境下,我們不需要接口請求前面加"/api",所以就需要判斷開發(fā)環(huán)境和生產(chǎn)環(huán)境。 1) config -> dev.env.js 添加開發(fā)接口地址 config -> prod.env.js 添加生產(chǎn)環(huán)境的地址 2) 在封裝axios時,添加判斷: if (location.hostname == "正式的域名") { baseUrl = "正式地址" } else { //測試環(huán)境 baseUrl = "測試地址" } axios.defaults.baseURL = baseUrl
2.用戶未登錄進入該url的登錄攔截邏輯:
1.首先在定義路由的時候需要添加自定義字段(requireAuth)字段可以自己設置名稱,判斷該路由的訪問是否需要登錄,如果用戶已經(jīng)登錄,順利進入該路由,否則就進入登錄頁。在路由管理頁面添加meta,在meta字段里設置。 meta:{requireAuth:true}// 添加該字段,true表示進入這個路由是需要登錄的 2.定義完路由后,利用vue-router的鉤子函數(shù)beforeEach對路由進行判斷; router.beforeEach((to, from, next) => { if (to.meta.requireAuth) { // 判斷該路由是否需要登錄權限 if (store.state.token) { // 通過vuex state獲取當前的token是否存在 next(); } else { next({ path: "/login", query: { redirect: to.fullPath } // 將跳轉(zhuǎn)的路由path作為參數(shù),登錄成功后跳轉(zhuǎn)到該路由 }) } } else { next(); } })
3.axios是什么?怎么使用?
axios是一個基于promise的HTTP請求庫,簡單地說就是可以發(fā)送get、post請求,可以用在瀏覽器和node.js中。 axios的特性: 1)可以在瀏覽器中發(fā)送XMLHttpRequests 2)可以在node.js中發(fā)送http請求 3)支持Promise API 4)攔截請求和響應 5)轉(zhuǎn)換請求數(shù)據(jù)和響應數(shù)據(jù) 6)能夠取消請求 7)自動轉(zhuǎn)換json數(shù)據(jù) 8)客戶端支持保護安全免受 XSRF 攻擊
4.VueX是什么?哪種場景能使用它?
1)VueX是一個專門為vue構建的狀態(tài)集管理。主要為了解決組件之間狀態(tài)共享的問題。強調(diào)的是集中式管理。主要是便于維護、便于解耦,不是所有項目都適合vuex,如果不是構建大型項目,會使代碼變得繁瑣多余。 2)VueX的核心 state:存放數(shù)據(jù) mutations:變更狀態(tài)(同步的) getters: actions:調(diào)用mutations,更改狀態(tài)的。(可以異步) modules
5.路由的鉤子函數(shù)
路由的鉤子函數(shù)主要是用來攔截導航,讓它完成跳轉(zhuǎn)和取消 主要分為全局和局部 全局的: 1)beferEach 2)afetrEach
6.vue的生命周期詳解(必看)
vue生命周期分為四個階段 creating mounting updating destroying beforeCreated:el和data都未初始化(可以加loading) Created:data數(shù)據(jù)初始化,el未初始化(結束loading) beforeMount:完成el和data初始化(虛擬DOM) mounted:掛載完成,真實DOM渲染完成(發(fā)起請求,拿數(shù)據(jù),渲染DOM) beforeUpdate:組件更新前的函數(shù),數(shù)據(jù)更新了,但是,vue(組件)對象對應的dom中的內(nèi)部(innerHTML)沒有變,所以叫作組件更新前 update:組件更新之后執(zhí)行的函數(shù),vue(組件)對象對應的dom中的內(nèi)部(innerHTML)改變了,所以,叫作組件更新之后 beforeDestroy:組件銷毀之前調(diào)用,在這一步,實例仍然可以完全可用(可在此處清除定時器,清除事件綁定) destroyed:Vue 實例銷毀后調(diào)用。調(diào)用后,Vue 實例指示的所有東西都會解綁定,所有的事件監(jiān)聽器會被移除,所有的子實例也會被銷毀
7.路由懶加載
1)vue異步組件技術,vue-router配置路由,使用路由的異步組件技術,可以實現(xiàn)按需加載。但是這種情況下,一個組件生成一個js文件。 { path:"/home", name:"home". component:resolve => require(["@/components/home"],resolve) } 2)路由懶加載(使用import) const Foo = () => import(/* webpackChunkName: "group-foo" */ "./Foo.vue") { path:"/home", name:"home". component:Foo } 在build目錄下找到webpack.prod.conf.js文件,將output修改為 output: { path: config.build.assetsRoot, filename: utils.assetsPath("js/[name].[chunkhash].js"),//文件格式,文件名.文件哈希 chunkFilename: utils.assetsPath("js/[name].[chunkhash].js")//文件切割后的文件名稱。 這里的name對應的就是路由中引入文件時候的webpackChunkName } 3)webpack提供的require.ensure技術,也可以按需加載,多個路由指定相同的chunkName,會合并打包成一個js文件。 { path:"/home", name:"home". component:resolve=>require.ensure([],() => resolve(require("../components/PromiseDemo")),home) }
8.封裝組件過程
1)新建組件,組件包含template、script、style 2)父組件中,使用import引入組件 import 組建名稱 form 組件路徑 3)父組件中,components注冊組件 components:{ 組件名稱 }
9.vue路由傳參方式
1)getDescribe(id){ this.$router.push({ path:"/describe/${id}" }) } 對應的路由配置: { path: "/describe/:id", name: "Describe", component: Describe } 獲取參數(shù):this.$route.params.id; 2)getDescribe(id){ this.$router.push({ name:"/describe", params:{ id:id } }) } 獲取參數(shù):this.$route.params.id 3)getDescribe(id){ this.$router.push({ path:"/describe", query:{ id:id } }) } 獲取參數(shù):this.$route.query.id; //query方式參數(shù)會顯示在url的后面
10.插槽的作用?
**匿名插槽:** 子組件:test-slot
//父組件里的span會替換掉slot所以這里的123是看不見的 //如果父組件在使用子組件testSlot的時候不在里面加內(nèi)容則這里的slot會顯示出來123 父組件:**渲染結果:** test-slot 我是父組件里的文字,但是我要被放到子組件里 **多個插槽也叫具名插槽:** 子組件:我是父組件里的文字,但是我要被放到子組件里 test-slot
//父組件里的span會替換掉slot所以這里的123是看不見的 //如果父組件在使用子組件testSlot的時候不在里面加內(nèi)容則這里的slot會顯示出來123 123 123 父組件:多個具名插槽
頭部內(nèi)容內(nèi)容部分底部內(nèi)容**渲染結果:** 多個具名插槽 頭部內(nèi)容 內(nèi)容部分 底部內(nèi)容 **作用域插槽:** 作用域插槽是一種特殊類型的插槽,子組件的值傳到父組件使用 子組件: 子組件props里接收一個父組件傳遞的數(shù)組,在作用域插槽slot里邊,綁定數(shù)組的屬性。父組件: 在test-slot子組件標簽上通過:item="items"給子組件傳遞數(shù)組,通過slot-scope="props"獲取子組件作用域插槽所有的屬性值 **渲染結果:** zhangsan un 18app
{{ props.addr }} {{ props.cname }} {{ props.age }}
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105279.html
摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業(yè)務工作時也會不定期更...
摘要:畢業(yè)之后就在一直合肥小公司工作,沒有老司機沒有技術氛圍,在技術的道路上我只能獨自摸索。于是乎,我果斷辭職,在新年開工之際來到杭州,這里的互聯(lián)網(wǎng)公司應該是合肥的幾十倍吧。。。。 畢業(yè)之后就在一直合肥小公司工作,沒有老司機、沒有技術氛圍,在技術的道路上我只能獨自摸索。老板也只會畫餅充饑,前途一片迷??床坏饺魏蜗M?。于是乎,我果斷辭職,在新年開工之際來到杭州,這里的互聯(lián)網(wǎng)公司應該是合肥的幾十...
摘要:獲取的對象范圍方法獲取的是最終應用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據(jù)我測試不同環(huán)境結果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續(xù)更新中……,可以關注下github 項目地址 https:...
摘要:采用了新舊的對比,獲取差異的,最后一次性的更新到真實上。對基本屬性進行監(jiān)聽對對象進行監(jiān)聽對對象某一個屬性監(jiān)聽監(jiān)聽自定義指令全局指令,第一個參數(shù)是指令名,第二個參數(shù)是一個對象,對象內(nèi)部有個的函數(shù),函數(shù)里有這個參數(shù),表示綁定了這個指令的元素。 11.vue 虛擬DOM的理解 Web界面由DOM樹(樹的意思是數(shù)據(jù)結構)來構建,當其中一部分發(fā)生變化時,其實就是對應某個DOM節(jié)點發(fā)生了變化,??...
摘要:平日學習接觸過的網(wǎng)站積累,以每月的形式發(fā)布。年以前看這個網(wǎng)址概況在線地址前端開發(fā)群月報提交原則技術文章新的為主。 平日學習接觸過的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個網(wǎng)址:http://www.kancloud.cn/jsfron... 概況 在線地址:http://www.kancloud.cn/jsfront/month/82796 JS前端開發(fā)群月報 提交原則: 技...
閱讀 3645·2021-11-24 10:25
閱讀 2585·2021-11-24 09:38
閱讀 1261·2021-09-08 10:41
閱讀 2939·2021-09-01 10:42
閱讀 2659·2021-07-25 21:37
閱讀 2014·2019-08-30 15:56
閱讀 944·2019-08-30 15:55
閱讀 2780·2019-08-30 15:54