在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 常見問題
過濾器
起步
自定義指令
事件監(jiān)聽
安裝
過渡效果
計算屬性
細節(jié)與最佳實踐
創(chuàng)建大型應用
指令
常見問題
處理表單
自定義過濾器
組件系統(tǒng)
擴展 Vue
列表渲染

常見問題

  • 為什么 Vue.js 不支持 IE8?

Vue.js 借助 ECMASCript 5 的 Object.defineProperty 才得以不靠臟檢查實現(xiàn)原生對象即模型的 API。然而這一新特性在 IE8 里只在 DOM 元素上起作用,對原生 JavaScript 對象無效,而且無法通過 polyfill 來修正。

  • 那么 Vue.js 修改了我的數(shù)據(jù)嘍?

    是,也不是。Vue.js 只是將正常屬性轉(zhuǎn)化為 getterssetters,這樣它才能在屬性被訪問或更改時得到通知。而在序列化數(shù)據(jù)時,結(jié)果是完全相同的。當然,這里有一些注意事項:

    1. 當你使用 console.log 觀察對象時你將只能看到一串 getter/setters。 但你可以使用 vm.$log() 來打印出一個更直觀的輸出。

    2. 你不能在數(shù)據(jù)對象里定義自己的 getter/setters。這通常來說不是問題,因為數(shù)據(jù)對象應該是從純 JSON 中解析出來的,而且 Vue.js 提供了計算屬性功能。

    3. Vue.js 在被觀察的對象上添加了一些拓展的屬性或方法,比如__ob__, $add$set 以及 $delete。這些屬性是不可遍歷的,所以它們不會顯示在 for ... in ... 循環(huán)中。只要你不覆蓋它們,就不會有什么問題。

除此之外,訪問屬性和賦值都和原生對象一樣, JSON.stringifyfor ... in ... 循環(huán)也能夠照常運行。99.9% 的情況下你都不需要考慮這些問題。

  • Vue.js 目前的狀態(tài)怎樣? 我能把它應用在生產(chǎn)環(huán)境中么?

Vue.js 最新的 0.12 發(fā)布版本,經(jīng)歷了一些 API 變更,但這是 1.0 版本前的最后一個計劃發(fā)布版本。與此同時,全球各地都已經(jīng)有公司/產(chǎn)品將 Vue.js 使用在了生產(chǎn)環(huán)境中。Vue.js 的測試覆蓋率和 bug 修復速度也在同類框架中是首屈一指的。參見:使用了 Vue.js 的項目(不完全列表)。

  • Vue.js 是完全免費的嗎?

Vue.js 基于 MIT 協(xié)議發(fā)布,是完全開源且免費的。

  • Vue.js 和 AngularJS 之間的區(qū)別是什么?

    下面是一些選擇 Vue 而不是 Angular 的可能原因,當然它們可能不適用于每一個人:

    1. Vue.js 是一個更加靈活開放的解決方案。它允許你以希望的方式組織你的應用程序,而不是任何時候都必須遵循 Angular 制定的規(guī)則。它僅僅是一個視圖層,所以你可以將它嵌入一個現(xiàn)有頁面而不一定要做成一個龐大的單頁應用。在結(jié)合其他庫方面它給了你更大的的空間,但相應,你也需要做更多的架構(gòu)決策。例如,Vue.js 核心默認不包含路由和 ajax 功能,并且通常假定你在用應用中使用了一個外部的模塊構(gòu)建系統(tǒng)。這可能是最重要的區(qū)別。

    2. 在 API 和內(nèi)部設計方面,Vue.js 比 Angular 簡單得多, 因此你可以快速地掌握它的全部特性并投入開發(fā)。

    3. Vue.js 擁有更好的性能,因為它不使用臟檢查。當 watcher 越來越多時, Angular 會變得越來越慢,因為作用域內(nèi)的每一次數(shù)據(jù)變更,所有的 watcher 都需要被重新求值。Vue 則根本沒有這個問題,因為它采用的是基于依賴追蹤的觀察系統(tǒng),所以所有的數(shù)據(jù)變更觸發(fā)都是獨立的,除非它們之間有明確的依賴關系。

    4. Vue.js 中指令和組件的概念區(qū)分得更為清晰。指令只負責封裝 DOM 操作,而組件代表一個自給自足的獨立單元 —— 它擁有自己的視圖和數(shù)據(jù)邏輯。在 Angular 中它們兩者間有不少概念上的混淆。

當然,需要指出的是 Vue.js 還是一個相對年輕的項目,而 Angular 經(jīng)受過大量的實戰(zhàn)檢驗,并且背后有谷歌支持,還有一個更大的社區(qū)。

  • Vue.js 和 React.js 有什么區(qū)別?

React.js 和 Vue.js 確實有一些相似——它們都提供數(shù)據(jù)驅(qū)動、可組合搭建的視圖組件。然而,它們的內(nèi)部實現(xiàn)是完全不同的。React 是基于 Virtual DOM——一種在內(nèi)存中描述 DOM 樹狀態(tài)的數(shù)據(jù)結(jié)構(gòu)。React 中的數(shù)據(jù)通常被看作是不可變的,而 DOM 操作則是通過 Virtual DOM 的 diff 來計算的。與之相比,Vue.js 中的數(shù)據(jù)默認是可變的,而數(shù)據(jù)的變更會直接出發(fā)對應的 DOM 更新。相比于 Virtual DOM,Vue.js 使用實際的 DOM 作為模板,并且保持對真實節(jié)點的引用來進行數(shù)據(jù)綁定。

Virtual DOM 提供了一個函數(shù)式的描述視圖的方法,這很 cool。因為它不使用數(shù)據(jù)觀察機制,每次更新都會重新渲染整個應用,因此從定義上保證了視圖通與數(shù)據(jù)的同步。它也開辟了 JavaScript 同構(gòu)應用的可能性。

實話實說,我自己對 React 的設計理念也是十分欣賞的。但 React 有一個問題就是組件的邏輯和視圖結(jié)合得非常緊密。對于部分開發(fā)者來說,他們可能覺得這是個優(yōu)點,但對那些像我一樣兼顧設計和開發(fā)的人來說,還是更偏好模板,因為模板能讓我們更好地在視覺上思考設計和 CSS。JSX 和 JavaScript 邏輯的混合干擾了我將代碼映射到設計的思維過程。相反,Vue.js 通過在模板中加入一個輕量級的 DSL (指令系統(tǒng)),換來一個依舊直觀的模板,且能夠?qū)⑦壿嫹庋b進指令和過濾器中。

React 的另一個問題是:由于 DOM 更新完全交由 Virtual DOM 管理,當你真的想要自己控制 DOM 是就有點棘手了(雖然理論上你可以,但這樣做時你本質(zhì)上在對抗 React 的設計思想)。對于需要復雜時間控制的動畫來說這就變成了一項很討人厭的限制。在這方面,Vue.js 允許更多的靈活性,并且有不少用 Vue.js 構(gòu)建的富交互實例。參見一些用 Vue.js 制作的 FWA/Awwwards 獲獎站點

  • Vue.js 和 Polymer 有什么區(qū)別?

Polymer 是另一個由 Google 支持的項目,實際上也是 Vue.js 的靈感來源之一。Vue.js 的組件可以類比為 Polymer 中的自定義元素,它們都提供類似的開發(fā)體驗。最大的不同在于,Polymer 依賴最新的 Web Components 特性,在不支持的瀏覽器中,需要加載笨重的 polyfill,性能也會受到影響。相對的,Vue.js 無需任何依賴,最低兼容到 IE9。

  • Vue.js 和 KnockoutJS 有什么區(qū)別?

首先,Vue 提供了一個更清晰的語法來獲取/設置 VM 屬性。

在更高層面上,Vue 與 Knockout 的區(qū)別是,Vue 的組件系統(tǒng)鼓勵你使用 自上而下、結(jié)構(gòu)優(yōu)先、聲明式的設計策略,而不是從下而上命令式的創(chuàng)建 ViewModel。Vue 的源數(shù)據(jù)是一個純對象,不包含邏輯,可以直接 JSON.stringify 并傳給 post 請求。ViewModel 代理了數(shù)據(jù)對象。Vue 實例始終用原生數(shù)據(jù)綁定相應的 DOM 元素。Knockout 的 ViewModel 本質(zhì)上是數(shù)據(jù),Model 與 ViewModel 的界限非常模糊,很可能導致過于復雜的 ViewModel 邏輯。

上一篇:事件監(jiān)聽下一篇:過渡效果