Design

Design
asp.net mvc
顯示具有 vue 標籤的文章。 顯示所有文章
顯示具有 vue 標籤的文章。 顯示所有文章

2019年3月5日 星期二

Vue雙向綁定的原理&實現

前言

Vue也寫了這麼久了對雙向綁定原理也是有點一知半解,就來實際操作JavaScript寫個簡單版Vue雙向綁定功能,了解語言的底層運作的話以後各種開發情境甚至自己開發前端framework都是有利的.

雙向綁定原理

我們可以先可以先建立個我們一般new vue的方法然後這邊我們console出我們的資料觀察



可以發現我們a屬性下還有我們相對應的get() set()的方法熟悉我們javascirpt原生的朋友一定可以猜出vue是透過Object.defineProperty()為底層監控我們的資料的異動然後實現我們雙向綁定的原理,我知道可能很多人還不知道Object.defineProperty()這邊就寫個簡單的範例
btw. ES6新出的Proxy也可以可以達到同樣的效果




























Vue架構

首先我們都知道Vue是基於MVVM的架構如下圖,分別為View,ViewModel,Model,這麼做有什麼好處呢,我們知道以前也有個MVC的架構,在MVC架構下我們元件都是共用在複雜邏輯的畫面時就會造成以下圖的問題,有時候光要找問題就很頭痛了,所以才衍生出現在有MVVM或是Flux架構,這邊我們我們講Vue就來說說MVVM架構,多個ViewModel就有點像個中繼站負責我們View跟Model之間的橋樑

MVC:
「flux mvc」的圖片搜尋結果














MVVM:
「MVVM vue」的圖片搜尋結果














簡單解釋如下:
View:
為我們UI的部分負責呈現我們DOM
ViewModel:
為負責同步View及Model之間的橋樑,讓畫面的更新可以即時同步到資料上
Model:
就是我們的資料

vue實際做法
至於綁定的實際做法細節還分為以下做解釋如下圖






















Observer相當於Model層觀察vue實例中的data數據,當數據發生變化時,通知Watcher訂閱者。

Compile指令解析器位於View層,初始化View的視圖,將數據變化與更新函數綁定,傳給Watcher訂閱者。

Watcher是整個模型的核心,對應ViewModel層,連接Observer和Compile。所有的Watchers存於Dep訂閱器中,Watcher將Observer監聽到的數據變化對應相應的回調函數,處理數據,反饋給View層更新界面視圖。


實現的簡單代碼如下有興趣的可以去此UP主(http://www.cnblogs.com/canfoo/p/6891868.html)底下會有詳細的解釋跟代碼,實際跑過一輪可以發現很多細節,也對架構整個流程更加了解




參考資料:
http://www.cnblogs.com/canfoo/p/6891868.html
https://segmentfault.com/a/1190000009397476
https://www.jianshu.com/p/d20aa65d89ba

2018年11月21日 星期三

NativeScript 心得

最近想寫練習android & ios手機原生 NativeScript 現在剛好有支援angular 跟 vue 我是選擇vue來做開發 angular 我也有看一下 也是大同小異  ,  我自己在環境上花了不少時間 遇到不少坑  整體開發還可以看的出來Nativescirpt 還有需要改進很多地方 , 因為手邊沒有mac所以先選擇android先做練習 ,
主要是要熟練native的布局例如gridlayout .stacklayout .等等  還有native的structure整體什麼東西做什麼事情,部分的地方還是要靠native去撰寫 ,最好的話看一下原生java是怎寫的,  其他就如寫vue javascirpt typescript css部分支援 比較不一樣的就是router 改用 manual routing 不過這也沒什麼問題  ,官方的document都寫得滿清楚的 也有Demo參考 ,我覺得如果原本就熟練vue的話 邊學邊開發是完全沒問題 ,我覺得最大的好處是  我寫一版就能支援android跟ios系統 ,   不過還是要注意部分語法還是要寫android跟ios差異判斷,還支援Hot Reload 整理開發速度會快非常多 目前已經快寫完 簡單的youtube播放器 支援編輯自己的音樂清單 跟背景播放功能
到時候可能會上google play. 也不一定會上, 算是在學得新技能方面 解鎖成就(1/1) 



2018年6月23日 星期六

vscode 起手vue cli

最近剛有新筆電 開始想寫些side project 經過一陣子的磨練發現自己寫工具的能力大大提升
心想那何不增加自己的github stat,剛好把這些過程稍微紀錄一下生篇文章給需要的人
vscode 算現在最潮的editor, vue 也從library漸漸發展成framework 那就開始吧

首先先安裝vscode吧
https://code.visualstudio.com/

再來安裝我們的nodejs
https://nodejs.org/en/
左邊LTS算是穩定版  右邊算是現在的版本
我們就選擇穩定版吧  這個看個人需求


再來就可以開始安裝我們的vue cli了
vue cli 可以幫助我們在開發vue上快速建立起我們的環境及基本的設定
相關文件可以參考
https://cli.vuejs.org/guide/


首先開啟我們的vscode 在我們的終端機開輸入我們以下語法
 
npm install -g @vue/cli



安裝完後我們就可以透過vue cli的建立起我們的專案

vue init webpack my-project



然後就會要你輸入一些東西 專案名阿 什麼的

幫方便的是他連webpack都自動幫你封裝好了
至於webapck有時間再來詳細說明
我們精美的範例就出來的



接下來我們把專案run起來吧
cd到我們的專案 然後輸入 npm run dev  就可以看到我們8080 port就有我們的vue基本畫面接下來就可以開心開發我們的vue 網頁了
 cd my-project
npm run dev


這是vue cli 最基本中的基本用法  , 未來在來分享些架構上的東西
有任何問題可以在底下留言