VueConf 感想與總結

嗶譜嗶譜發表於2017-05-27

第一次參加conf好激動的說。來,我們先放幾張照片!!

VueConf  感想與總結
合照

VueConf  感想與總結

VueConf  感想與總結

VueConf  感想與總結

能把自己的第一次獻給Vue的第一次簡直棒!

今天一天的會議下來,對於剛剛涉足前端領域的我來說收穫頗豐,於是將自己的感悟總結在這裡與廣大的Vue愛好者以及尤大大的粉絲們分享!

Vue 2017 現狀與發展

By 尤雨溪 Evan You Vue.js作者

起源

VueConf  感想與總結
vue的起源

  • 2013 年 6 月:First Commit (Seed)
  • 2013 年 12 月:第一次將專案名字 Vue
  • 2014 年 2 月:第一次公開發布 Hacker News
  • 2014 年 11 月:0.11 版本(重寫)
  • 2015 年 4 月:Laravel 社群作者開始使用並宣傳
  • 2015 年 10 月:Vue.js 1.0 釋出(代號:Evangelion,沒想到尤大大也喜歡福音戰士!好激動!!)
  • 2016 年 10 月:Vue.js 2.0 釋出(對程式碼進行了重寫 & 一定的向後相容)

VueConf  感想與總結
K??

最後對於即將釋出的2.4版本,將是以K開頭的一部動畫,但是尤大大不願透露更多的細節。

VueConf  感想與總結
目前國內vue使用者

好多自己夢寐以求的公司啊!!!

定位

Just a View Layer Library

最早只想解決一些檢視層的問題,並沒有完全服務於大型業務的功能。但是隨著 Vue 的發展開始增加輔助工具,例如 vue-router, vue-loader, vuex

The Progress Framework

VueConf  感想與總結

不需要完全的全家桶,而是可以漸進式的根據需求一點點增加業務複雜度。這樣易於上手,也可以更快的應用在老業務上,比侵入式框架易於上手。

現狀

  • GitHub 超過 53,986 個 Star 數,已經是所有型別專案的歷史的 Top 10
  • 每月 55萬+ 次 NPM 下載(不算阿里爸爸 CNPM 映象,算了就是月破百萬的節奏XD)
  • Chrome DevTool 外掛 17.4 萬日活
  • 314 Contributors
  • 社群化的開源產品:NUXT.js,Quasar Framework(Ionic),Element,iView,Muse-UI,Vux,Vuetify,Vue Material
  • 與阿里合作的 Weex
  • Microsoft Build TypeScipt 老大作者 Anders Hejlsberg 在 Demo 中 Vue + VSCode (最佳IDE)
  • Google I/O Addy Osmani 介紹 Vue + PWA

SSR

Server-Side Rendering (ssr.vuejs.org)

伺服器端渲染: 在存在程式碼分割的情況下,通過分析 Webpack 服務端和客戶端的構建資訊,自動推導需要在客戶端預載入的檔案,生成最優的 <script><link re="preload/prefetch">

SSR 效能進一步優化,通過編譯時優化獲得 2~8x 效能提升。(後面被陰明吐槽效能還是很差,必須在每一層都做快取)

SSR + webpack code split 完美支援,程式碼分割不再侷限於路由。

vue-cli 3.0

  • 配置依賴化 + 可組合(更新升級)
  • PWA by default
  • 一個模版,不同引數(--ts, --sr ...)
  • 更好的測試方案

長期展望

  • 單檔案元件 CSS 改進
  • 基於 Proxy 的響應式系統重構
  • 不再需要 Vue.set或者this.$set,直接 =
  • Lazy Observation,效能優化
  • 顯示構建響應式物件
  • HTML Modules:
  • 類似單檔案元件的新標準(由 Google 起草中)
  • 與 Web Components 的相容

個人感悟

會後才知道,原來尤大大昨天凌晨發高燒,今早還是帶病來進行了本屆大會的開場主題演講,在會後還熱情地和喜愛Vue的小夥伴們一個個合影,不由得深感敬佩!近距離接觸尤大大,發現他特別平易近人,絲毫沒有大神的架子。瞭解到尤大大是86年出生的,13年(也就是27歲)寫出了第一版Vue。打算把尤大大作為自己的男神和榜樣,希望自己五年後也可以像尤大大一樣做出屬於自己的東西。(貌似有點不自量力23333,總之要加油!You can make it !!)

附上和尤大大的合照一枚!

VueConf  感想與總結

Vue SSR 和API Proxy層深度實踐

By i5ting 桑世龍 狼叔 去哪網前端架構師

Vue本身是前端框架,它目前跟伺服器唯一的關聯就是SSR,基於Stream的Bigpipe實現,雖說是舊瓶裝新酒,但還是有很多人不瞭解其中原理。另外對於Vue專案來說,與後端Api對接、(Spa、大首頁)等有沒有更好的實踐呢?後端Api目前也極為混亂,各種語言、各種實現,真的適合前端麼?大家辛苦了,狼叔最懂你。

首先,狼叔分析 Node.js 現狀,並且預測了 2017 年趨勢。

流行趨勢

  • PWA
  • SSR
  • API Proxy
  • Isomorphic

Vue SSR 原理

  • wepback 外掛內建
  • BundleRenderer:dev 狀態下的 hot-reload 和 source-map support
  • streaming/bigpipe:大檔案傳輸
  • cache:快取 lrc-cache 自動整合
  • 內建 service-worker:支援 PWA

API Proxy

VueConf  感想與總結

  • Browser:雙向繫結元件化
  • Node Proxy:API 代理給前端瀏覽器使用
  • 服務組裝:連結後端微服務

VueConf  感想與總結
Vue 與 API Proxy 如何完美結合

個人感悟

狼叔還是很有個人魅力的,嗯。對SSR的原理有了一些基本的認識,知道了目前主流的打包工具為webpack 2,正好最近開始學習webpack,看來沒有學錯哈哈!狼叔還說如果你想晉升,那麼最好學學webpack,看來自己需要更加重視webpack的運用以及原理的學習。

談工程化在Vue.js的優雅設計

By 張耀春 小春 摩拜單車

前端框架的目的:alleviate the amount of copy & pasting you do between projects.

Pick the right tool for the job.

工具複雜度是為了處理內在複雜度所做的投資 - 尤雨溪 《Vue 2.0,漸進式前端解決方案》

vue-cli

官方出品的命令列腳手架工具,支援:

(1)vue init 按照指定模板,在指定目錄生成專案結構

有 3 種模板初始化方式:
1、官方
2、本地
3、線上其他repo

VueConf  感想與總結
vue init 原理

(2)vue list 列出線上 vuejs-templates repo 支援的模板列表

VueConf  感想與總結
目前的官方模板

其中大家用的最多的是webpack

VueConf  感想與總結
vue list 原理

create-react-app VS vue-cli

都是基於 webpack 構建。
create-react-app:更多封裝在了react-scripts 裡面,同時把它加到了初始專案的依賴裡面。
vue-cli:更為直接,把指令碼模板都直接放到build 資料夾中,開發者更容易修改。

VueConf  感想與總結
主流框架腳手架的差異

webpack

和 Vue.js 結合最緊密的構建工具

配置分離

採用webpack-merge +webpack.base.conf.js + webpack.prod.conf.js

本地開發

需要 Express 和多箇中介軟體:

  • connect-history-api-fallback:在開發單頁應用時非常有用,它依賴於HTML5 history API,如果設定為true,所有的跳轉將指向index.html
  • webpack-hot-middleware:熱更新,實現修改程式碼自動重新整理瀏覽器。
  • http-proxy-middleware:代理
  • express.static:託管靜態檔案

VueConf  感想與總結
dev-server 原理

Webpack外掛

DefinePlugin:動態的注入一些變數,比如一些版本、環境資訊等

friendly-errors-webpack-plugin:recognizes certain classes of webpackerrors and cleans, aggregates and prioritizes them to provide a betterDeveloper Experience.

webpack-sftp-client:開發過程中把本地資源 push 到開發機

html-webpack-inline-source-plugin :html-webpack-plugin 的第三方擴充套件外掛,通過增加一個 {inlineSource: 'regex string'} 選項來內聯你的靜態檔案到 html 中。

VueConf  感想與總結
html-webpack-inline-source-plugin 原理

Vue 元件編譯

VueConf  感想與總結
vue-component-compiler 原理

VueConf  感想與總結
vue-component-compiler 原理

vue-loader

Webpack 的外掛,處理 .vue 檔案中的三部分:

*、 template
*、 script
*、 styles複製程式碼

VueConf  感想與總結
vue-loader 原理

個人感悟

小春的演講誠意滿滿乾貨十足,由於講的太細還有點超時了。由於小春剛剛從滴滴跳槽到了,導致主辦方的關於小春的資訊還沒更新。自己回來之後重新學了一遍PPT,感覺很多vue的原理性的東西,收穫不少。

掘金Vue.js後端渲染及重構實踐

By 陰明 掘金創始人

Vue核心檔案目錄

src/
├── api/              # 接入微服務的基礎 API
├── App/              # App Root Component
├── asset/            # 靜態檔案
├── business/         # 業務
├── component/        # 元件
├── const/            # 常量
├── event-bus/        # Event Bus 事件匯流排,類似 EventEmitter
├── global/           # 通用定義的 directive, mixin 還有繫結到 Vue.prototype 的函式
├── model/            # Model 抽象層
├── repository/       # 倉庫,接入 Vuex 中
├── router/           # 路由
├── service/          # 服務
├── state/            # Vuex 狀態管理
├── style/            # 樣式
├── util/             # 通用 utility functions
├── view/             # 各個頁面
├── client-entry.js   # 前端業務 & build
├── server-entry.js   # SSR業務 & build
├── ...
└── main.js           # Vue Object Initiation複製程式碼
基礎設施層
api/
util/複製程式碼
領域層 Domain
service/       % 各個 Domain 下的基礎功能業務
repository/    %某一個獨立 Domain 下的獲取資料的業務
model/         %資料抽象層複製程式碼
業務層
business/        % 各個 Domain 下的具體業務,會引用 service 和 repository 中定義的功能
validator/       %不同資料的 validation 過程複製程式碼
表現層
state/
router/
component/
view/            % Vue 下具體的互動展示層業務複製程式碼

Event Bus

類似於 Node 中的 EventEmitter
通過事件管理和監聽處理異常、Alert、Scroll 觸發等

404

需求:
不通過跳轉 URL 來顯示 Not Found

解決方案:

  • 我們在路由表的最後配置了 404 路由,如果當前 URL 沒有匹配前面的任意一條規則
  • Vuex 狀態樹中有專門的 error module 儲存異常
  • ​​然後 dispatch 一個 action 設定為 404 展示

SSR的應用

需求:
後端渲染解決效能問題

解決方案:

  • 多層快取
  • 資料層快取
  • 元件層快取 lru-cache
  • 頁面層快取 redis

資料一致性

需求:
前後端渲染資料一致性問題

解決方案:
通過某種事件廣播機制實現資料的最終一致性
Vuex 本身就有事件廣播模型,我們定義了 3 個 mutation 型別:

  • ENTITY_CREATED - 實體已建立
  • ENTITY_UPDATED - 實體已更新
  • ENTITY_DELETED - 實體已刪除

完全通過事件傳遞行為

情懷部分

我相信每一個新技術的出現的最終目的是創造價值
如果一個技術真的好
我就會推薦它,宣傳它,幫助它普及給更多的開發者
用開放的心態去嘗試、學習、接受新事物
這即是我做掘金的態度,也是我做技術的態度

個人感悟

陰明說這真的是他最後一次技術分享了,不知道大家信不信?我覺得陰明的這次演講還是很不錯的,既有乾貨又有情懷。在回答問題階段,陰明說他不是為了學前端而學的前端,他最開始學習的目的單純只是做自己的個人主頁來裝逼,因為想要給自己的主頁加上炫酷的效果,所以開始自學相關的知識。他認為,抱著一種解決問題的態度去學習知識是最有效率的。我十分認同。以後在自己學習前端的過程中,也要注意問題導向,專案驅動。自己給自己定個目標,例如做出自己的App,小程式。然後讓目標驅使自己去主動地獲取知識。(與此同時,也要注意紮實的基礎知識的掌握。)

Vue 在餓了麼的應用

By 李清偉 Element 核心開發

個人感悟

element 僅僅只有3個人負責,卻能保持至少一週一次更新,佩服!

當Weex遇上Vue.js 2.0

By 馬天翼(早弦) 阿里巴巴前端開發工程師、Weex 核心開發

Weex 1.0

VueConf  感想與總結
Weex 1.0 流程圖

VueConf  感想與總結
與Native通訊

VueConf  感想與總結
任務中心 流程

Weex 2.0

VueConf  感想與總結
weex 2.0 流程圖

與 web 版本 vue 2.0 的差異點

● DOM
● BOM
● Layout
● scoped
● scroll
● background-image
● 適配問題

DOM & BOM

● 不支援 DOM 操作
● 僅支援部分事件型別
● 不支援事件冒泡
● 沒有 window、 document、screen、history、location、navigator 等物件

解決辦法:

● MVVM 大法好!
● 未來會有更多
● 新版本已經支援
● 使用 weex.config 或者內建模組

Flexbox

● Weex 官方指定佈局系統
● 規範明確
● 佈局適用大部分情況
● 面向未來

其他差異

● 樣式作用域預設是 scoped ,即只在當前元件生效
● 只有 scroller 元件預設有滾動效果
● 不能設定背景圖
● 與 Native 原生元件共存的適配問題

記憶體差異

● web 時代,記憶體能吃嗎?
● weex 時代,記憶體吃嗎?

VueConf  感想與總結
記憶體關係

這三部分記憶體屬於包含關係。例如:可能一個原生App只洩露了100M的jsfm記憶體,但是它可能洩露了150M的jscore記憶體,以及200M的native記憶體

個人感悟

知道了整個weex 專案原來只有13個人(其中前端僅僅3個人),很吃驚。Weex包含了vue2.0核心,可以看作vue的三端實現。覺得自己可以嘗試用weex完成移動端的vue編寫。

用Vue,vuex構建超大Web應用——IDE

By 王駱菲 VIDE(原DebugGap)作者

“某種東⻄的產⽣是由於社會的進步和發展到達⼀定的狀態,出現了相應的條件,由此⽽產⽣”

VueConf  感想與總結
vuex

對於協同開發而言,只關心有哪些狀態可用,不關心具體實現邏輯。

VueConf  感想與總結

VueConf  感想與總結

VueConf  感想與總結

VueConf  感想與總結

VueConf  感想與總結

VueConf  感想與總結

plugin開發

只需要簡單的三步,大大降低了編寫外掛的門檻,從此國人也可以輕鬆編寫自己的外掛。

  • 匯入元件
    VueConf  感想與總結
  • 新增檢視
    VueConf  感想與總結
  • 新增處理類
    VueConf  感想與總結

vide的未來規劃

  1. 未來優先支援vue/weex開發
  2. 再支援微信小程式等
  3. 基於簡單快速的外掛開發,服務更多的開發者

個人感悟

想嘗試寫Vue外掛

結語

充實而愉快的一天就這樣結束了,感謝各位大大的帶來的精彩內容!(照慣例放上各位大大的合照2333)

VueConf  感想與總結

希望自己能夠為vue社群這個大家庭做出自己的貢獻,也希望有朝一日能夠成為vue在github上的Contributors!!!加油!!!

後記

腦洞大開的vue愛好者。。。

VueConf  感想與總結

VueConf  感想與總結
微信圖片_20170520223744.jpg

VueConf  感想與總結
微信圖片_20170520223747.jpg

VueConf  感想與總結
微信圖片_20170520223750.jpg

VueConf  感想與總結
微信圖片_20170520223753.jpg

VueConf  感想與總結
微信圖片_20170520223758.jpg

VueConf  感想與總結
微信圖片_20170520223802.jpg

VueConf  感想與總結
微信圖片_20170520223804.jpg

VueConf  感想與總結
微信圖片_20170520223949.jpg

部分ppt還沒有上傳,未完待續~

相關文章