『壹』 vue.js和jquery的區別
一、主體不同
1、vue.js:是一套用於構建用戶界面的漸進式JavaScript框架。
2、jquery:是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫。
二、特點不同
1、vue.js:Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注視圖層,方便與第三方庫或既有項目整合。
2、jquery:具有獨特的鏈式語法和短小清晰的多功能介面;具有高效靈活的css選擇器,並且可對CSS選擇器進行擴展;擁有便捷的插件擴展機制和豐富的插件。
三、優勢不同
1、vue.js:目標是通過盡可能簡單的 API 實現響應的數據綁定和組合的視圖組件。
2、jquery:提供了對基本JavaScript結構的增強,比如元素迭代和數組處理等操作。
『貳』 什麼是vue框架
什麼是vue
是一套構建用戶界面的漸進式(用到哪一塊就用哪一塊,不需要全部用上)前端框架,Vue 的核心庫只關注視圖層
vue的兼容性
Vue.js 不支持 IE8 及其以下版本,因為 Vue.js 使用了 IE8 不能模擬的 ECMAScript 5 特性。 Vue.js 支持所有兼容 ECMAScript 5 的瀏覽器。
vue學習資源
vue.js中文官網:http://cn.vuejs.org/
vue.js源碼:https://github.com/vuejs/vue
vue.js官方工具:https://github.com/vuejs
vue.js官方論壇:forum.vuejs.org
對比其他框架-React
React 和 Vue 有許多相似之處,它們都有使用 Virtual DOM;提供了響應式(Reactive)和組件化(Composable)的視圖組件。將注意力集中保持在核心庫,而將其他功能如路由和全局狀態管理交給相關的庫。React 比 Vue 有更豐富的生態系統
都有支持native的方案,React的RN,vue的Wee下
都支持SSR服務端渲染
都支持props進行父子組件間的通信
性能方面:React 和 Vue 在大部分常見場景下都能提供近似的性能。通常 Vue 會有少量優勢,因為 Vue 的 Virtual DOM 實現相對更為輕量一些。
不同之處就是:
數據綁定方面,vue實現了數據的雙向數據綁定,react數據流動是單向的
virtual DOM不一樣,vue會跟蹤每一個組件的依賴關系,不需要重新渲染整個組件樹.而對於React而言,每當應用的狀態被改變時,全部組件都會重新渲染,所以react中會需要shouldComponentUpdate這個生命周期函數方法來進行控制
state對象在react應用中不可變的,需要使用setState方法更新狀態;在vue中,state對象不是必須的,數據由data屬性在vue對象中管理(如果要操作直接this.xxx)
組件寫法不一樣, React推薦的做法是 JSX , 也就是把HTML和CSS全都寫進JavaScript了,即'all in js'; Vue推薦的做法是webpack+vue-loader的單文件組件格式,即html,css,js寫在同一個文件
對比其他框架-angular
在性能方面,這兩個框架都非常的快,我們也沒有足夠的實際應用數據來下一個結論。如果你一定想看些數據的話,你可以參考這個第三方跑分。單就這個跑分來看,Vue 似乎比 Angular 要更快一些。
在大小方面,最近的 Angular 版本中在使用了 AOT 和 tree-shaking 技術後使得最終的代碼體積減小了許多。但即使如此,一個包含了 vuex + vue-router 的 Vue 項目 (30kb gzipped) 相比使用了這些優化的 Angular CLI 生成的默認項目尺寸 (~130kb) 還是要小的多。
靈活性:Vue 相比於 Angular 更加靈活,Vue 官方提供了構建工具來協助你構建項目,但它並不限制你去如何組織你的應用代碼。有人可能喜歡有嚴格的代碼組織規范,但也有開發者喜歡更靈活自由的方式。
vue.js的核心特點—響應的數據綁定
傳統的js操作頁面:在以前使用js操作頁面的時候是這樣的,需要操作某個html元素的數據,就的使用js代碼獲取元素然後在處理業務邏輯
響應式數據綁定的方式操作頁面,可以直接使用像下面代碼那樣的寫法就可以將數據填充到頁面中
<template>
<div id="app">
{{ message }}
</div>
</template>
<script>
export default {
name: 'app',
data () {
return {
message: 'Welcome to Your Vue.js App'
}
}
}
</script>
<style>
</style>
vue.js的核心特點—可組合的視圖組件
一個頁面映射為組件樹。劃分組件可維護、可重用、可測試,也就是一個頁面由多個組件組合而成
vue中實現組件引入示例
第一步:import導入需要引入的組件文件;
第二步:注冊組件;
第三步:在需要引入組件的文件中加上組件標簽(這個標簽的標簽名就是注冊的組件名字,多個單詞的和這里有xx-xx的形式)
需要注意的是:組件可以嵌套引入,也就是說組件可以引入其他組件
首先創建一個組件,用於被引入的組件,組件名字叫Hello.vue
————————————————
版權聲明:本文為CSDN博主「胡椒粉0121」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
『叄』 uniapp和vue有什麼區別
vue和uni-app的區別如下:
1、uni-app可以通過打包實現一套代碼多端運行,而vue不行。
2、uni-app有自動的框架預載,載入頁面的速度更快,vue沒有。
3、uniapp使用小程序的標簽,vue使用web端的標簽。
4、uni不支持vue-router,使用自帶的路由。
uni-app的優點
優點一:
uni-app是一套可以適用多端的開源框架,一套代碼可以同時生成ios,Android,H5,微信小程序,支付寶小程序,網路小程序等。
優點二:
uni-app對前端開發人員比較友好,學習成本比較低,首先uni-app是基於vue.js的。其次封裝的組件和微信小程序的組件一樣。
優點三:
uni-app使用HBX進行開發,HBX對於vue語法等支持可以說是比較完備了。
『肆』 47道基礎的VueJS面試題(附答案)
1、什麼是MVVM框架?它適用於哪些場景?
MVVM框架是一個 Model-View-View Model框架,其中 ViewModel連接模型Model)和視圖(View)。
在數據操作比較多的場景中,MVVM框架更合適,有助於通過操作數據渲染頁面。
2、active- class是哪個組件的屬性?
它是 vue-router模塊的 router-link組件的屬性。
3、如何定義Vue- router的動態路由?
在靜態路由名稱前面添加冒號,例如,設置id動態路由參數,為路由對象的path屬性設置/:id。
4、如何獲取傳過來的動態參數?
在組件中,使用$router對象的 params.id,即 $route.params.id 。
5、vue- router有哪幾種導航鉤子?
有3種。
第一種是全局導航鉤子:router.beforeEach(to,from,next)。作用是跳轉前進行判斷攔截。
第二種是組件內的鉤子。
第三種是單獨路由獨享組件。
6、mint-ui是什麼?如何使用?
它是基於 Vue.js的前端組件庫。用npm安裝,然後通過 import導入樣式和JavaScript代碼。vue.use(mintUi)用於實現全局引入, import {Toast} from ' mint-ui'用於在單個組件局部引入。
7、V-model是什麼?有什麼作用?
v- model是 Vue. js中的一條指令,可以實現數據的雙向綁定。
8、Vue.js中標簽如何綁定事件?
綁定事件有兩種方式。
第一種,通過v-on指令, 。
第二種,通過@語法糖, input@ click= doLog()/>。
9、vuex是什麼?如何使用?在哪種功能場景中使用它?
vuex是針對 Vue. js框架實現的狀態管理系統。
為了使用vuex,要引入 store,並注入Vue.js組件中,在組件內部即可通過$ ostore訪問 store對象。
使用場景包括:在單頁應用中,用於組件之間的通信,例如音樂播放、登錄狀態管理、加入購物車等。
10、如何實現自定義指令?它有哪些鉤子函數?還有哪些鉤子函數參數?
自定義指令包括以下兩種。
它有如下鉤子函數。
鉤子函數的參數如下。
11、至少說出vue.js中的4種指令和它們的用法。
相關指令及其用法如下。
12、Vue-router是什麼?它有哪些組件?
它是 Vue. js的路由插件。組件包括 router-link和 router-vIew。
13、導航鉤子有哪些?它們有哪些參數?
導航鉤子又稱導航守衛,又分為全局鉤子、單個路由獨享鈞子和組件級鈞子。
全局鉤子有 beforeEach、beforeResolve(Vue2.5.0新增的)、 afterEach。
單個路由獨享鉤子有 beforeEnter。
組件級鉤子有 beforeRouteEnter、 beforeRouteUpdate(Vue2.2新增的) beforeRouteLeave。
它們有以下參數。
14、Vue.js的雙向數據綁定原理是什麼?
具體步驟如下。
(1)對需要觀察的數據對象進行遞歸遍歷,包括子屬性對象的屬性,設置set和get特性方法。當給這個對象的某個值賦值時,會觸發綁定的set特性方法,於是就能監聽到數據變化。
(4)MVVM是數據綁定的入口,整合了 Observer、 Compile和 Watcher三者,通過Observer來監聽自己的 model數據變化,通過 Compile來解析編譯模板指令,最終利用Watcher搭起 Observer和 Compile之間的通信橋梁,達到數據變化通知視圖更新的效果。利用視圖交互,變化更新數據 model變更的雙向綁定效果。
15、請詳細說明你對Vue.js生命周期的理解。
總共分為8個階段,分別為 beforeCreate、created、beforeMount、 mounted、beforeUpdate、 updated、 beforeDestroyed、 destroyed。
當使用組件的kep- alive功能時,增加以下兩個周期。
Vue2.5.0版本新增了一個周期鉤子:ErrorCaptured,當捕獲一個來自子孫組件的錯誤時調用。
16、請描述封裝Vue組件的作用過程。
組件可以提升整個項目的開發效率,能夠把頁面抽象成多個相對獨立的模塊,解決了傳統項目開發中效率低、難維護、復用性等問題。
使用Vue.extend方法創建一個組件,使用Vue.component方法注冊組件。子組件需要數據,可以在 props中接收數據。而子組件修改妤數據後,若想把數據傳遞給父組件,可以採用emit方法。
17、你是怎樣認識vuex的?
vuex可以理解為一種開發模式或框架。它是對 Vue. js框架數據層面的擴展。通過狀態(數據源)集中管理驅動組件的變化。應用的狀態集中放在 store中。改變狀態的方式是提交 mutations,這是個同步的事務。非同步邏輯應該封裝在 action中。
18、Vue- loader是什麼?它的用途有哪些?
它是解析.vue文件的一個載入器,可以將 template/js/style轉換成 JavaScript模塊。
用途是通過 vue-loader, JavaScript可以寫 EMAScript 6語法, style樣式可以應用scss或less, template可以添加jade語法等。
19、請說出vue.cli項目的src目錄中每個文件夾和文件的用法。
assets文件夾存放靜態資源;components存放組件;router定義路由相關的配置;view是視圖;app. vue是一個應用主組件;main.js是入口文件。
20、在Vue.cli中怎樣使用自定義組件?在使用過程中你遇到過哪些問題?
具體步驟如下。
(1)在 components目錄中新建組件文件,腳本一定要導出暴露的介面。
(2)導入需要用到的頁面(組件)。
(3)將導入的組件注入uejs的子組件的 components屬性中。
(4)在 template的視圖中使用自定義組件。
21、談談你對vue.js的 template編譯的理解。
簡而言之,就是首先轉化成AST( Abstract Syntax Tree,抽象語法樹),即將源代碼語法結構抽象成樹狀表現形式,然後通過 render函數進行渲染,並返回VNode( Vue. js的虛擬DOM節點)。
詳細步驟如下。
(1)通過 compile編譯器把 template編譯成AST, compile是 create Compiler的返回值, createCompiler用來創建編譯器。另外, compile還負責合並 option。
(2)AST會經過 generate(將AST轉化成 render funtion字元串的過程)得到 render函數, render的返回值是 VNode, VNode是 Vue.Js的虛擬DOM節點,裡面有標簽名子節點、文本等。
22、說一下Vue.js中的MVVM模式。
MVVM模式即 Model- View- ViewModel模式。
Vue.js是通過數據驅動的, Vue. js實例化對象將DOM和數據進行綁定,一旦綁定,和數據將保持同步,每當數據發生變化,DOM也會隨著變化。
ViewModel是Vue.js的核心,它是 Vue.js的一個實例。Vue.js會針對某個HTML元素進行實例化,這個HTML元素可以是body,也可以是某個CSS選擇器所指代的元素。
DOM Listeners和 Data Bindings是實現雙向綁定的關鍵。DOM Listeners監聽頁面所有View層中的DOM元素,當發生變化時,Model層的數據隨之變化。Data Bindings會監聽 Model層的數據,當數據發生變化時,View層的DOM元素也隨之變化。
23、v-show指令和v-if指令的區別是什麼?
v-show與v-if都是條件渲染指令。不同的是,無論v-show的值為true或 false,元素都會存在於HTML頁面中;而只有當v-if的值為true時,元素才會存在於HTML頁面中。v-show指令是通過修改元素的 style屬性值實現的。
24、如何讓CSS只在當前組件中起作用?
在每一個Vue.js組件中都可以定義各自的CSS、 JavaScript代碼。如果希望組件內寫的CSS只對當前組件起作用,只需要在Style標簽添加Scoped屬性,即 。
25、如何創建vue.js組件?
在vue.js中,組件要先注冊,然後才能使用。具體代碼如下
26、如何實現路由嵌套?如何進行頁面跳轉?
路由嵌套會將其他組件渲染到該組件內,而不是使整個頁面跳轉到 router-view定義組件渲染的位置。要進行頁面跳轉,就要將頁面渲染到根組件內,可做如下配置。
首先,實例化根組件,在根組件中定義組件渲染容器。然後,掛載路由,當切換路由時,將會切換整個頁面。
27、ref屬性有什麼作用?
有時候,為了在組件內部可以直接訪問組件內部的一些元素,可以定義該屬性此時可以在組件內部通過this. $refs屬性,更快捷地訪問設置ref屬性的元素。這是一個原生的DOM元素,要使用原生 DOM API操作它們,例如以下代碼。
注意:在Ve2.0中,ref屬性替代了1.0版本中v-el指令的功能。
28、Vue. js是什麼?
Vue. js的目標是通過盡可能簡單的API實現響應式的數據綁定的組件開發。
29、描述vue.js的一些特性。
Vue.js有以下持性。
(1)MVVM模式。
數據模型( Model)發生改變,視圖(View)監聽到變化,也同步改變;視圖(View)發生改變,數據模型( Model)監聽到改變,也同步改變。
使用MVVM模式有幾大好處。
(2)組件化開發
(3)指令系統
(4)Vue2.0開始支持虛擬DOM。
但在Vue1.0中,操作的是真實DOM元素而不是虛擬DOM,虛擬DOM可以提升頁面的渲染性能。
30、描述vue.js的特點。
Vue. js有以下特點。
31、在vue.js中如何綁定事件?
通過在v-on後跟事件名稱=「事件回調函數( )」的語法綁定事件。事件回調函數的參數集合( )可有可無。如果存在參數集合( ),事件回調函數的參數需要主動傳遞,使用事件對象要傳遞 $event。當然,此時也可以傳遞一些其他自定義數據。如果沒有參數集合,此時事件回調函數有一個默認參數,就是事件對象。事件回調函數要定義在組件的 methods屬性中,作用域是 Vue. js實例化對象,因此在方法中,可以通過this使用 Vue. js中的數據以及方法,也可以通過@語法糖快速綁定事件,如@事件名稱=「事件回調函數( )」。
32、請說明 組件的作用。
當 包裹動態組件時,會緩存不活動的組件實例,而不是銷毀它們。
keep-alive>是一個抽象組件,它自身不會渲染一個DOM元素,也不會出現在父組件鏈中。
當在 內切換組件時,它的 activated和 deactivated這兩個生命周期鈞子函數將會執行。
33、axios是什麼?如何使用它?
axios是在vue2.0中用來替換 vue-resource.js插件的一個模塊,是一個請求後台的模。
用 npm install axios安裝 axios。基於 EMAScript 6 的 EMAScript Mole規范,通過 import關鍵字將 axios導入,並添加到 Vue. js類的原型中。這樣每個組件(包括vue.js實例化對象)都將繼承該方法對象。它定義了get、post等方法,可以發送get或者post請求。在then方法中注冊成功後的回調函數,通過箭頭函數的作用域特徵,可以直接訪問組件實例化對象,存儲返回的數據。
34、在 axios中,當調用 axios.post('api/user')時進行的是什麼操作?
當調用post方法表示在發送post非同步請求。
35、sass是什麼?如何在ue中安裝和使用?
sass是一種CSS預編譯語言安裝和使用步驟如下。
(1)用npm安裝載入程序( sass-loader、 css-loader等載入程序)。
(2)在 webpack. config. js中配置sass載入程序。
(3)在組件的 style標簽中加上lang屬性,例如lang="scss"。
36、如何在 Vue. js中循環插入圖片?
對「src」屬性插值將導致404請求錯誤。應使用 v-bind:src格式代替。
代碼如下:
『伍』 VueX(Vue狀態管理模式)
VueX 是適用於在 Vue 項目開發時使用的狀態管理工具。試想一下,如果在一個項目開發中頻繁的使用組件傳參的方式來同步 data 中的值,一旦項目變得很龐大,管理和維護這些值將是相當棘手的工作。為此, Vue 為這些被多個組件頻繁使用的值提供了一個統一管理的工具—— VueX 。在具有 VueX 的Vue項目中,我們只需要把這些值定義在VueX中,即可在整個Vue項目的組件中使用。
由於 VueX 是在學習 VueCli 後進行的,所以在下文出現的項目的目錄請參照 VueCli 2.x 構建的目錄。
以下步驟的前提是你已經完成了Vue項目構建,並且已轉至該項目的文件目錄下。
打開main.js
例如在App.vue中,我們要將state中定義的name拿來在h1標簽中顯示
或者要在組件方法中使用
注意,請不要在此處更改 state 中的狀態的值,後文中將會說明
在Vue項目開發中,需要監控項目中得各種值,為了提高效率,Vue提供了一款瀏覽器擴展——VueDevtools。
在學習VueX時,更為需要使用該插件。關於該插件的使用可以移步官網,在此不再贅敘。
在VueX對象中,其實不止有 state ,還有用來操作 state 中數據的方法集,以及當我們需要對 state 中的數據需要加工的方法集等等成員。
成員列表:
首先, Vue 組件如果調用某個 VueX 的方法過程中需要向後端請求時或者說出現非同步操作時,需要 dispatch VueX中 actions 的方法,以保證數據的同步。可以說, action 的存在就是為了讓 mutations 中的方法能在非同步操作中起作用。
如果沒有非同步操作,那麼我們就可以直接在組件內提交狀態中的 Mutations 中自己編寫的方法來達成對 state 成員的操作。注意, 1.3.3節 中有提到,不建議在組件中直接對 state 中的成員進行操作,這是因為直接修改(例如: this.$store.state.name = 'hello' )的話不能被 VueDevtools 所監控到。
最後被修改後的state成員會被渲染到組件的原位置當中去。
mutations 是操作 state 數據的方法的集合,比如對該數據的修改、增加、刪除等等。
mutations 方法都有默認的形參:
( [state] [,payload] )
例如,我們編寫一個方法,當被執行時,能把下例中的name值修改為 "jack" ,我們只需要這樣做
index.js
而在組件中,我們需要這樣去調用這個 mutation ——例如在App.vue的某個 method 中:
在實際生產過程中,會遇到需要在提交某個 mutation 時需要攜帶一些參數給方法使用。
單個值提交時:
當需要多參提交時,推薦把他們放在一個對象中來提交:
接收掛載的參數:
另一種提交方式
為了配合Vue的響應式數據,我們在Mutations的方法中,應當使用Vue提供的方法來進行操作。如果使用 delete 或者 xx.xx = xx 的形式去刪或增,則Vue不能對數據進行實時響應。
可以對state中的成員加工後傳遞給外界
Getters中的方法有兩個默認參數
例如
組件中調用
由於直接在 mutation 方法中進行非同步操作,將會引起數據失效。所以提供了Actions來專門進行非同步操作,最終提交 mutation 方法。
Actions 中的方法有兩個默認參數
例如,我們在兩秒中後執行 2.2.2 節中的 edit 方法
由於 setTimeout 是非同步操作,所以需要使用 actions
在組件中調用:
改進:
由於是非同步操作,所以我們可以為我們的非同步操作封裝為一個 Promise 對象
當項目龐大,狀態非常多時,可以採用模塊化管理模式。Vuex 允許我們將 store 分割成 模塊(mole) 。每個模塊擁有自己的 state、mutation、action、getter 、甚至是嵌套子模塊——從上至下進行同樣方式的分割。
組件內調用模塊a的狀態:
而提交或者 dispatch 某個方法和以前一樣,會自動執行所有模塊內的對應 type 的方法:
如果把整個 store 都放在 index.js 中是不合理的,所以需要拆分。比較合適的目錄格式如下:
對應的內容存放在對應的文件中,和以前一樣,在 index.js 中存放並導出 store 。 state 中的數據盡量放在 index.js 中。而 moles 中的 Astore 局部模塊狀態如果多的話也可以進行細分。
『陸』 uni-app使用Vue.js
說明 :uni-app基於 Vue 2.0 實現,開發者需注意Vue 1.0 -> 2.0 的使用差異,詳見 從 Vue 1.x 遷移 。
uni-app不僅支持應用生命周期和頁面生命周期,還支持 vue 實例的如下生命周期函數:
注意 :不要在選項屬性或回調上使用箭頭函數,比如 created: () => console.log(this.a) 或 vm.$watch('a', newValue => this.myMethod())。因為箭頭函數是和父級上下文綁定在一起的,this 不會是如你做預期的 Vue 實例,且 this.a 或 this.myMethod 也會是未定義的。
幾乎全支持 Vue官方文檔:模板語法 ,下面講下不支持的情況。
(1)不支持純HTML
uni-app的非H5端里所有的 BOM/DOM 都不能用,也就是說 v-html 指令不能用,可以使用 rich-text組件 代替。或者使用三方組件wxparse,在hello uni-app中有示例。
(2)不支持部分復雜的 JavaScript 渲染表達式
非H5端無法支持復雜的 JavaScript 表達式。目前可以使用的有 + - * % ?: ! == === > < [] .,剩下的還待完善。
(3)不支持過濾器
編譯到 App 和小程序平台時不支持使用過濾器,可以使用計算屬性(computed)提前計算出數據(如果是數組類型,就提前計算整個數組),用以代替過濾器。
備注 : 自HBuilderX 1.7.1起,在微信小程序平台支持使用過濾器。
data 必須聲明為返回一個初始數據對象的函數;否則頁面關閉時,數據不會自動銷毀,再次打開該頁面時,會顯示上次數據。
注意 :在微信小程序端,uni-app 將數據綁定功能委託給Vue,開發者需按Vue 2.0的寫法實現數據綁定,不支持微信小程序的數據綁定寫法,故如下寫法不支持:
需修改為:
支持 Vue官方文檔:計算屬性 。
實現全局變數的方式需要遵循 Vue 單文件模式的開發規范。詳細參考: uni-app全局變數的幾種實現方式 。
非H5端不支持在 template 內使用 methods 中的函數。
備注 : 自HBuilderX 1.7.1起,在微信小程序平台支持支持在 template 內使用 methods 中的函數。
為節約性能,我們將 Class 與 Style 的表達式通過 compiler 硬編碼到 uni-app 中。
全支持 Vue官方文檔:條件渲染 。
全支持vue列表渲染 Vue官方文檔:列表渲染 。只是需要注意一點,嵌套列表渲染,必須指定不同的索引!需要填寫 :key="xx" 。
注意 :同級多個 v-for 時 key 的值是不允許重復的,key 的綁定是不支持表達式的,需要按照以下方式處理。
幾乎全支持 Vue官方文檔:事件處理器 。事件映射表如下所示:
注意 :
(1)事件映射表中沒有的原生事件也可以使用,例如map組件的regionchange 事件直接在組件上寫成 @regionchange,同時這個事件也非常特殊,它的 event type 有 begin 和 end 兩個,導致我們無法在handleProxy 中區分到底是什麼事件,所以你在監聽此類事件的時候同時監聽事件名和事件類型既 <map @regionchange="functionName" @end="functionName" @begin="functionName"><map>。
(2)為兼容各端,事件需使用 v-on 或 @ 的方式綁定,請勿使用小程序端的bind 和 catch 進行事件綁定。
(3)事件修飾符
(4)若需要禁止蒙版下的頁面滾動,可使用 @touchmove.stop.prevent="moveHandle",moveHandle 可以用來處理 touchmove 的事件,也可以是一個空函數。
(5)按鍵修飾符:uni-app運行在手機端,沒有鍵盤事件,所以不支持按鍵修飾符。
支持 Vue官方文檔:表單控制項綁定 。建議開發過程中直接使用 uni-app:表單組件 。用法示例:
(1)H5 的select 標簽用 picker 組件進行代替
(2)表單元素 radio 用 radio-group 組件進行代替
組件是整個 Vue.js 中最復雜的部分,支持 Vue官方文檔:組件 。有且只能使用單文件組件(.vue 組件)的形式進行支持。其他的諸如:動態組件,自定義 render ,和 <script type="text/x-template"> 字元串模版等非H5端都不支持。詳細的非H5端不支持列表:
(1)暫不支持在組件引用時,在組件上定義 click 等原生事件、v-show(可用 v-if 代替)和 class style 等樣式屬性(例:<card class="class-name"> </card> 樣式是不會生效的)。
Slot(scoped 暫時還沒做支持)
(2)動態組件
(3)非同步組件
(4)inline-template
(5)X-Templates
(6)keep-alive
(7)transition
(8)class
(9)style
(10)組件里使用 slot 嵌套的其他組件時不支持 v-for
uni-app提供了豐富的 UI組件 ,比如: picker , map 等,需要注意的是原生組件上的事件綁定,需要以 vue 的事件綁定語法來綁定,如 bindchange="eventName" 事件,需要寫成 @change="eventName" 。如:
uni-app 支持配置全局組件,需在 main.js 里進行全局注冊,注冊後就可在所有頁面里使用該組件。 注意 :Vue.component 的第一個參數必須是靜態的字元串。示例:
(1)main.js 里進行全局注冊
(2)index.vue 里可直接使用組件
在 uni-app 中以下這些作為保留關鍵字,不可作為組件名。
備注 :除以上列表中的名稱外,標準的 HTML 及 SVG 標簽名也不能作為組件名。
(1) 如何獲取上個頁面傳遞的數據
在 onLoad 里得到,onLoad 的參數是其他頁面打開當前頁面所傳遞的數據。
(2) 如何設置全局的數據和全局的方法
uni-app內置了 vuex ,在app里的使用,可參考 hello-uniapp 的 store/index.js 。
(3)如何捕獲 app 的 onError
由於 onError 並不是完整意義的生命周期,所以只提供一個捕獲錯誤的方法,在 app 的根組件上添加名為 onError 的回調函數即可。如下:
(4)組件屬性設置不生效解決辦法
當重復設置某些屬性為相同的值時,不會同步到view層。 例如:每次將scroll-view組件的scroll-top屬性值設置為0,只有第一次能順利返回頂部。 這和props的單向數據流特性有關,組件內部scroll-top的實際值改動後,其綁定的屬性並不會一同變化。解決辦法有兩種(以scroll-view組件為例):
備注 :第二種解決方式在某些組件可能造成抖動,推薦第一種解決方式。
『柒』 在App.vue或者main.js中如何獲取組件實例
const vm = new Vue()
vm就是實例
如果需要引入其他外部vue文件的組件,並且拿到其實例的話
app.vue
constapp={
data(){
return{}
},
methods:{}
}
exportdefaultapp
然後在主文件中
importgetvuefrom'./app.vue'
console.log(getvue)//這個就是拿到的其他組件中的實例
『捌』 vue中的app.js是怎麼來的
MV*包括MVC、MVP、MVVM
MVVM框架由Model、View、ViewModel構
Model指數據前端應JavaScript象
View指視圖前端應DOM
ViewModel觀察ModelView變化做更新實現數據雙向綁定
前端MVVM框架主要包括:angularJS、reactJS、VueJS
『玖』 Vue項目啟動過程以及配置
我們點擊 npm run dev 的時候,這就是啟動 Vue 工程項目,那麼它啟動過程是什麼樣的呢? Vue 項目啟動過程,本文簡要介紹。
在執行 npm run dev 的時候,會在當前目錄中尋找 package.json 文件,包含項目的 名稱版本 、 項目依賴 等相關信息。
從下圖中可以看到, 啟動 npm run dev 命令後,會載入 build/webpack.dev.conf.js 配置並啟動 webpack-dev-server 。
webpack.dev.conf.js 中引入了很多模塊的內容,其中就包括 config 目錄下伺服器環境的配置文件。
可以看到,在 index.js 文件中包含伺服器 host 和 port 以及入口文件的相關配置,默認啟動埠是 8080 ,這里可以進行修改。
index.html 的內容很簡單,主要是提供一個 div 給 vue 掛載。
main.js 中, 引入了 vue 、 App 和 router 模塊, 創建了一個 Vue 對象,並把 App.vue 模板的內容掛載到 index.html 的 id 為 app 的 div 標簽下, 並綁定了一個路由配置。
上面 main.js 把 App.vue 模板的內容,放置在了 index.html 的 div 標簽下面。查看 App.vue 的內容我們看到,這個頁面的內容由一個 logo 和一個待放置內容的 router-view , router-view 的內容將由 router 配置決定。
查看 route 目錄下的 index.js ,我們發現這里配置了一個路由, 在訪問路徑 / 的時候, 會把 HelloWorld 模板的內容放置到上面的 router-view 中。
HelloWorld 中主要是一些 Vue 介紹顯示內容。
所以,頁面關系組成是 index.html 包含 App.vue,App.vue 包含 HelloWorld.vue 。
到這,我們開始安裝 router 、 vuex 。
Ctrl+C 退出啟動,繼續執行 vue-cli ,腳手架安裝插件 router 和 vuex 開始。
輸入一個大寫Y,按下Enter
vuex 是專門為 Vue.js 設計的狀態管理庫,以利用 Vue.js 的細粒度數據響應機制來進行高效的狀態更新。
Vuex 主要有五部分:
① 安裝 vuex
接下來我們在 src目錄 下創建一個 vuex 文件夾
並在 vuex文件夾 下創建一個 store.js 文件
文件夾目錄 長得是這個樣子
在保證我們處於我們項目下,在命令行輸入下面命令,然後,安裝 vuex 。
② vuex 的關系圖
③ 開始使用,在 mian.js 中,引入 vuex
④然後告知 vue 開始使用 vuex (Vue.use(Vuex))
在 store.js 文件中,引入 vuex 並且使用 vuex ,這里注意我的變數名是大寫 Vue 和 Vuex
⑤接下來,在main.js中引入store
到這里算是,以及完成了。
我們再重新看一下此時的項目結構,多了router.js和store.js,其它相關的文件也被修改
『拾』 vue.js開發的app怎麼上傳數據
安卓市場上傳app:首先要保證能正常運行;其次應用信息描述要准確,不得包括鏈 接 ;軟體截圖不得少於3張,其中一張作展示應用運行中的畫面安卓市場開發者上傳APP可以到酷傳上傳,上傳更快,並且完全免費!