摘要:如果我們作為一個后端開發者想掌握一個前端框架,是一個好選擇,因為它足夠的易學。是語言的下一代標準。數據方法生命周期鉤子函數其他有些內容比較重要,留到后面講定義數據定義數據定義了數據,那么就可以在管理的區域中使用的獲取數據的語法來獲取數據。
目錄
首發日期:2019-01-19
有時候,一個后端開發者“不得不”自己去搭建前端界面。如果有的選,當然選一個比較好學的前端“框架”咯(框架很多時候封裝了普通的html元素,使得能更加方便地使用)。
如果你做的項目的界面是一個偏后臺管理的而且要求并不高的界面的時候,你可以考慮easy UI這個較為知名的前端框架。
如果你想要界面變得好看一些(easy UI的界面太簡單了,缺乏較強的定制性),那么你可以考慮vue這個框架。vue這個框架本身并沒有多少好看的樣式,但學習了這個框架就可以學會怎么使用它的第三方組件庫了(這些第三庫看起來都還行)。
【Vue自己有官方教程,為什么寫這個呢?主要是感覺自己的前端知識不太穩固,看教程的時候有點迷糊。推己及人,所以有了這個博文】
例如下面的代碼可以快速構建一個表格:
Vue不支持IE8 及以下版本,因為 Vue 使用了 IE8 無法模擬的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的瀏覽器。【所以如果項目兼容性要求較高,那么不適合使用Vue】
【如果你了解ORM模型,你應該很能體會到MVVM模型的好處,有了VM層幫我們管理了數據,我們就只需要處理好Model層了,這就好像ORM中定義了數據映射關系,然后我們只需要操作實體類。】
【要想使用Vue,必須先導入/安裝,就像使用jquery必須導入jquery.js一樣;而vue可以使用webpack來構建,所以也可以使用webpack安裝Vue,但如果你是初學者,先掌握靜態導入的方法吧】
Vue的本質也是javascript,所以它也可以通過導入js文件來使用功能(js可以用cdn的,也可以手動導入本地的vue.js)。
這種也是最簡單的使用vue的方式,所以我們可以這種方式來作為入門學習,但正式使用時都會使用webpack來構建vue項目。
在html文件中使用如下代碼:【這里先講導入,后面講使用】
npm install vue
npm install --global vue-cli
vue init webpack 項目名
在入門部分將使用js導入方式的例子,在涉及構建多個組件的時候(頁面需要多個組件時,如果把多個組件定義在一個文件中會顯得贅余。這好比把多個類放到同一個文件中定義。)將使用npm安裝方式演示。
{{ message }}
el: #app
代表把id為app的區域交給vue管理)。那么對應元素區域里面就可以使用vue的語法了。導入了js之后,vue把管理的區域里面的vue語法都解析了,所以 {{ message }}就取出了vue實例中名叫message的數據。
現在我們了解了一些vue的渲染頁面的知識,下面我們來了解更多的渲染技巧。
每個 Vue 應用都是通過使用 Vue 函數創建一個新的 Vue 實例開始的。
實例中的定義的內容就是我們可以使用在Vue應用中的內容。
下面講實例中可以定義哪些內容。
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
//
// {{ message }}
//
【要結合圖來看(懂英文是多么地好)】
【如果你對生命周期鉤子感興趣,可以自查,這里不多講,后面之后根據開發需求來講一些】
測試代碼:
{{ msg }}
在上面已經演示了使用Mustache表達式(可以俗稱插值表達式){{ }}
來獲取實例中的數據了,其實還可以使用其他方式來輸出數據
v-text可以向元素中輸出文本內容
v-html可以向元素中輸出html內容:
Mustache 語法不能作用在 HTML 特性上,也就是說在html元素中沒有 id="{{ id }}" 這樣的操作 ,這種時候需要使用vue語法:v-bind:id="id"
{{ }}里面可以使用javascript表達式,例如:{{ message.split().reverse().join() }}
v-bind用于給元素的屬性綁定值
懸浮幾秒,查看標題
...
...
v-bind的參數可以是一個對象,是一個對象時,會把對象的所有屬性都綁定到元素上。具體如下圖。
現在你看到我了
男
女
unknown
使用v-else 的元素必須緊跟在帶 v-if 或者 v-else-if 的元素的后面,否則它將不會被識別。
Hello!
-
{{ todo.text }}
代碼效果:
在 v-for 塊中,我們擁有對父作用域屬性的完全訪問權限。[這是來自官網的話,我覺得有點多余,感覺子元素獲取父元素的數據是很正常的操作。]
v-for 還支持一個可選的第二個參數為當前項的索引,它會從0開始。用來標識當前迭代的是第幾個元素。
可以用 of 替代 in 作為分隔符,因為它是最接近 JavaScript 迭代器的語法:
也可以用 v-for 迭代一個對象的所有屬性,第一個參數是value,第二個可選參數是key,第三個可選參數為索引
第二個參數為key
{{ key }}: {{ value }}
第三個參數為索引:
{{ index }}. {{ key }}: {{ value }}
使用三個參數時的代碼效果:
在遍歷對象時,是按 Object.keys() 的結果遍歷,但是不能保證它的結果在不同的 JavaScript 引擎下是一致的。
v-for 也可以取一個整數作為源數據(v-for="i in 10"
)。在這種情況下,它將重復多次模板。
當 v-if 與 v-for 一起使用時,v-for 具有比 v-if 更高的優先級。【這個問題官網提了一下,這里我也提一下,注意使用】
原消息: "{{ message }}"
逆反后: "{{ reversedMessage }}"
下面的代碼也可以達到上面的效果
(也是即時的,有人不懂為什么這個函數會重復調用,而非頁面初始化時調用一次;因為當頁面中數據更新的時候,涉及頁面數據的函數也會重新執行。)
原消息: "{{ message }}"
逆反后: "{{ reversedMessage() }}"
{{ Date.now() }}"
函數也可以達到同樣的效果,但是函數沒有緩存效果,而計算屬性有緩存。沒有緩存時,函數每一次都要重新計算來得到結果,如果這是一個比較消耗資源的計算的話,那么會減慢頁面的速度;而計算屬性有緩存,只要內部的計算元素沒有發生變化,那么會使用緩存來作為計算結果。
上面的計算屬性達到效果需要留意計算元素的變化,你可能會想到一些類似的監聽數據變化的方法,而vue中也是有這樣的東西的。
下面的代碼監聽了firstName和lastName,當這兩個數據變化的時候會重新給fullName賦值。
{{ fullName }}
使用計算屬性達到上面效果(顯然省了不少代碼):
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar'
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})
{{ fullName }}
雖然計算屬性已經提供了很多的好處,但有些時候計算屬性也不能滿足我們的要求。比如我們希望監聽某個屬性的變化來得到另一個屬性的結果,但是不希望它馬上得到結果,那么這時候計算屬性就達不到需求了。而監聽器里面可以寫一些其他代碼(比如一些延遲去得到結果的代碼)。
當需要在數據變化時執行異步或開銷較大的操作時,watch是最有用的。
為什么有時候不希望計算新結果那么快呢?這就好比有人在百度搜索中輸入一個個字,如果每個字都要進行檢索的話,那么就對百度來說開銷就很大了,如果稍微等等,確認用戶輸入完畢再去計算,那么就節省了很多資源了,下面的來自官網的例子正是一種這樣的考慮了資源開銷的例子。
Ask a yes/no question:
{{ answer }}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/1287.html
摘要:比如把示例中的數據在頁面中用顯示出來與輸入框的數據綁定表單輸入框有這個值,在表單輸入框里使用會把表單輸入框與實例的數據進行智能綁定為什么說智能,因為有些輸入框的數據是屬性,有些不是。目錄上篇內容回顧:數據綁定表單輸入框綁定單行文本輸入框多行文本輸入框復選框checkbox單選框radio選擇框select數據綁定的修飾符.lazy.number.trim樣式綁定class綁定對象語法:數組語...
摘要:文件是當前項目的首頁文件。以后可能還會有全局注冊組件等操作。在上面使用了這是一個預定義的路徑,代表目錄。而為了使用好這個實例,不要修改的,不然裝載完內容后,對應的管理區域會指向不明,而導致渲染失敗。目錄 上節內容回顧: npm 介紹 安裝 常用命令: 補充: ...
摘要:使用組件全局定義組件,第一個參數是組件名,的值是組件的內容這是個待辦項實例化是必須的,要把使用組件的區域交給管理局部注冊組件局部注冊組件全局注冊往往是不夠理想的。目錄 上節內容回顧 組件 什么是組件 組件注冊 全局注冊組件 局部注冊組件 ...
閱讀 713·2023-04-25 19:43
閱讀 3910·2021-11-30 14:52
閱讀 3784·2021-11-30 14:52
閱讀 3852·2021-11-29 11:00
閱讀 3783·2021-11-29 11:00
閱讀 3869·2021-11-29 11:00
閱讀 3558·2021-11-29 11:00
閱讀 6105·2021-11-29 11:00