前端開發:如何寫一手漂亮的 Vue

来源:http://www.cnblogs.com/qianduantuanzhang/archive/2017/10/31/7763667.html
-Advertisement-
Play Games

前幾日聽到一句生猛與激勵並存,可怕與尷尬同在,最無奈也無解的話:“90後,你的中年危機已經殺到”。這令我很受觸動。顯然,這有些誇張了,但就目前這日復一日的庸碌下去,眨眼的功夫,那情形就會在這骨感的現實面前,悄然的被顯現。所以,越發體驗到,當必要有計劃的去做,去寫,去玩,去嗨,利用好這荷爾蒙分泌還算旺 ...


前幾日聽到一句生猛與激勵並存,可怕與尷尬同在,最無奈也無解的話:“90後,你的中年危機已經殺到”。這令我很受觸動。顯然,這有些誇張了,但就目前這日復一日的庸碌下去,眨眼的功夫,那情形就會在這骨感的現實面前,悄然的被顯現。所以,越發體驗到,當必要有計劃的去做,去寫,去玩,去嗨,利用好這荷爾蒙分泌還算旺盛的時光,去厚積去博取,去發現去折騰;讓自己的生命不在僅是工作與惆悵,還有時間分與“詩和遠方”。不用分析,就知道這該如何去做,高效去完成工作,然後去學著優雅地生而活。目前猶身為前端開發者,且在使用 Vue,那麼就有了此文;這不僅是紀錄或分享,也是在漫漫之路上下求索,更希望能探討和指點,以資見識,提升其效。

微註: 早先在寫[如何優雅地使用Sublime Text]時候,前後歷經10月,至今雖不斷更新猶在,離該話題也是相去甚遠。所以,談及此一個寬廣話題的存在,欲一談也須深入研究,非朝夕可至;所以本篇將採取不定期更新,當然,這麼做,也是治療自身拖延症之一法子;另外也是限制聚合網抓取的一種嘗試。 
更新: 對於如何構建 VueJs 項目,自然推薦官方的腳手架 vue-cli 
;而對於微小型項目,個人倒挺看好poi —— (Delightful web development),它能讓你十分便捷的使用當前流行的框架(Vue React等)。即便如此呢,很多業界朋友,對 Vue 項目的構建,還是不盡如人意;鑒於此,有根據過往的些許經驗,設計出一套樣板 ——vue-boilerplate-template,以供參考,當然也期待朋友給予指正。其中已經依賴了vue-router 
vuex、 vue-i18n、 element-ui、 bootstrap 諸多庫;也註入了 webpack、 Eslint、 pre-commit等等便捷開發相關的庫。其中對與後臺介面調用與使用,vuex 的運用,視圖結構的塑造,路由和多語言的配置,公共方法的調度,webpack打包優化等等,都基於便捷開發的前提下,做了相應的設計,希望有緣人會喜歡;這一番設計緣由,得空會另起一篇文章予以闡明;而這番設計也會,在不斷的學習中持續改進,敬請期待

隨言: 身在程式的江湖,如你是一位即將出征武士,對決於浩瀚無盡的需求大軍;那麼你不僅需要一副好的體格,還需要一身技藝:而這軟體工程學 
(抑或加演算法)就好比內功(查克拉);而所使用的各家語言 
,則好如武學招式(獨孤九劍?);那加以利用的各種工具,當如隨身利器(小李飛刀?);那屬於自己一套極致開發流程,便是輕功(電光神行步?)……如是斯言,那麼作為開發者的你,幾技傍身耶? 
如上隨言,此篇準備從以下幾個方面來探討:

如何漂亮使用 Vue 之工具篇

欲先利其器,必先利其器,這是此博客一大倡導;關於如何優雅地去寫好 Vue,工具自是首當其衝要提及的,畢竟這非常重要;在你選擇使用 Vue 來從事前端開發的那一刻,你已經同意的這一論點:畢竟 Vue 也是用原生 Js 寫的,Js 則是用 C 語言寫,而 C 又是彙編寫的….. 這不再是刀耕火種的年代,而你也未用彙編或 C 來解決你的需求,So,你是同意的。既是贊同的,豈有不用好它的道理?那麼來一起探討下:

外設:除了那些舒適坐騎與書桌外,雙屏顯示器,Mac則是必備外設裝備;你知道,一屏編輯器中寫著代碼的同時,就能在另一屏 Chrome 下看到表現,這很高效便捷,也令人很是舒服。而 Mac 這設備中堪稱優雅情人的存在,更是居家良品。倘若,所處的工作環境沒那麼看重效率,或者未表現出該有的慷慨,則一定須善待自己的精力和時間,勇於將自己的開發環境打造精良。

軟體:身為開發人員,你電腦以及其中配備的軟體,就好如武士手中的利劍,是助你大殺四方的存在;所以無論是用它來玩一玩惡作劇,還是來致敬把Dota,抑或是搞搞需求,皆十分有必要將其鋒利化。因此,諸如 Alfred,Brew,Iterm2,Oh-my-zh,Git等必備就不說了;對於前端開發,編輯器與瀏覽器的配備與運用,尤其重要(對於這一點很多前端開發者,尚未達到及格,一如其水平);對於瀏覽器,只推薦Chrome,不只是瀏覽或者調試,更在於其搜索。而編輯器則推薦 SublimeText3與 AtomVsCode也很棒的存在,寫前端後臺都十分趁手(目測 Google 也都力推之);不太推薦使用 WebStorm,因為其除了反人類的操作設計外,感受不到其他可記住點。

周邊:使用 Vue 開發開發前端,當須保持對周邊工具體系,經常保持關註,比如NodeNpm(Yarn)WebpackGulp等,以及Lodashsuperagentd3等工具庫,再有就是 Vue 系本身具庫,譬如Vue-clivue-router等輔助;再有就是不斷衍生出來的 Vue 插件擴展。Atwood定律中闡述到:Any application that can be written in JavaScript, will eventually be written in JavaScript.(翻譯過來即是:凡是能用JavaScript寫出來的,最終都會用JavaScript寫出來)。這個理論同樣適用於 Vue,它簡易強大的存在,吸引了很多超厲害的開發者或團隊,為其貢獻了無數好用的組件庫。比如: 餓了麽出品的Element-UI,還有 vue-echartsvue-multiselect …… 具體可以參看awesome-vue,略睹其繁華似錦。

(web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

如何漂亮使用-Vue-之基礎篇)如何漂亮使用 Vue 之基礎篇


軟體工程學,作為程式員,本就該是當學好的一門技藝。像[代碼大全2]以及[程式整潔之道],一定是需要好好讀一讀的。Web 前端開發,因其入門的容易性(還有需求的旺盛),造就了這一行涌進了不少急功近利者,也驚現了很多令人“不堪卒讀”的代碼。而前端發展日新月異,如不能漸而掌握,長期來看,委屈的倒也不全是別人(讀你代碼者),更是自己;舉個淺顯的例子來講,如不能學會很好的組織代碼結構,即便有高手寫了架構,一旦項目漸大,不也是照樣面臨被自己坑苦的凄楚?事實上,不乏很多開發者,未能養成很好的編碼素養,基礎如變數方法命名,也是能令人心驚肝顫;很顯然這是損人不利己的行為,勢必當善之。

對於團隊來講,Eslint實在是需要配備的利器;既然難以保證每個人都很有素養,那麼必須適當強制;至少避免了叢生些雜亂不堪的代碼,以亂軍心。當然,使用伊始,總會有些人不太適應,所以玩轉編輯器的重要性,就再次體現出其價值了;由此也引出了自動化(半)工作流的話題了,這在之後的內容中會加以探討。

前端基礎技術,從事前端開發,長久之計來看,基本功是非常重要的;尤其是 JavaScript;這在寫 Vue 時候,也體現的比較明顯。其他如 Html,Css,自然不用說;除此之外,Scss 等預處理器,也是當學習並加以運用,以提升開發效率,節省開發成本;畢竟只有節省出充裕的時間來,才會去做更多優化,節約出更多精力與時間,一個優良的迴圈就此得以形成。

Vue 基礎,這一點很重要,熟讀[Vue.js 官方教程],再沒有比這更好的教程了;根據之前經驗來看,心急是吃不到熱豆腐的,欠下的也終究得還;至少起初需通讀之,否則遇到問題,無法及時定位出在哪兒查究,這無疑會浪費更多時間。除此之外,Github 上找一份好的微型項目,認真讀下,可以發掘出很多值得學習的玩法。

善用配置,《代碼大全》第 18 章,講到表驅動法(Table-Driven Methods),對於編程從業者,很有必要一讀。很多時候,可藉助查詢表來加以簡化邏輯和繼承樹關係。這在團隊協作,分模塊開發模式具有更非凡價值;應該善用配置,將各個模塊予以抽離,使得相互間不存強依賴,如此開發環節也大大的避免代碼衝突。譬如,瞭解 JavaScript 特性,即可做如下寫法:

const files = require.context('.', true, /\.svg$/)
const modules = {}
files.keys().forEach((key) => {
  if (key === './index.js') return
  modules[key.replace(/(\.\/|\.svg)/g, '')] = files(key)
})
export default modules

這樣即可寫出便捷的 [Icon Component],使用時只需添加新 Svg 入 assets,然後引用 icon 時填寫對應 Svg 名字即可,十分方便;推此及它,我們可藉助這樣配置,去分解、組合各個模塊,甚是方便。


Vue有三大特性,十分令人欣喜;一是其數據的雙向綁定,即:通過數據綁定鏈接View和Model,讓數據的變化自動映射為視圖的更新。另一個是其數據驅動的組件系統,即:用嵌套的組件樹來描述用戶界面(而一個組件恰恰可以對應MVVM中的ViewModel),其三是基於構建工具的單文件組件格式,即其所提供了強大的loader API,來定義對不同文件格式的預處理邏輯,從而讓我們可以將CSS、模板,甚至是自定義的文件格式等,當做JavaScript模塊來使用,極大提升了代碼的可復用性;Webpack 基於loader還可以實現大量高級功能,比如自動分塊打包並按需載入、對圖片資源引用的自動定位、根據圖片大小決定是否用base64內聯、開發時的模塊熱替換等等。當然 Vue 還具有其他若幹令人擊節贊嘆的設計。

鑒於此,如果可以很熟練的掌握其數據的綁定與傳輸,組件的開發,以及周邊 Webpack 等相關配置,則能將運用水平視為進入了一個新的層次。據以往經驗來看,這不是一件容易的事兒,畢竟使用這 Vue 也是衝著解決需求去了,而非在搞研究。誰能說開車上路的司機,能瞭解關乎車的所有?相信,接下來的很長時間里,都須對這幾方面加以學習、探索,然後加以利用。

如何漂亮使用-Vue-之實戰組件篇)如何漂亮使用 Vue 之實戰組件篇


Vue 一大特色是用嵌套的組件樹來描述用戶界面。所以組件的設計與編寫至關重要;至少要保證她是易於修改和維護,可復用性和可讀性高,耦合度低,接納團隊合作性開發… … 諸此等等。項目一旦龐雜,更得事先考慮好整個架構的設計,使其清晰合理;組件緩存的使用、避免過重組件的衍生 … 。而 Vue 組件系統又是有數據所驅動,更得兼顧數據在各種組件間通信,避免數據被多方操作,Bug 難以定位等問題。

這是一個須長期積澱的技能,非朝夕可至。但,部分內容只需刻意關註,即可見其成效的。比如,簡明且見名知義的命名,良好的編碼規範,團隊統一編碼風格,以保證代碼的可讀性。運用設計模式原則,比如單一職責原則,將組件拆分抽離成更細粒度,保證組件功能單一,以提升組件復用行;再如介面隔離原則,採用穩定的服務端介面,將變化模塊分離,使得組件得以解耦;在複雜的項目中,也是需要用到冗餘、繼承,這時候也需要關註下里氏替換原則、依賴倒置原則… 。另外還當學習 Vue 本身所提供的優化,像[路由懶載入], 即:結合 Vue 的 非同步組件 和 Webpack 的 code splitting feature, 輕鬆實現路由組件的懶載入,使得該組件訪問時才載入,以提升頁面載入效率,還有利用服務端實現首屏渲染,組件緩存等等,尤須註意的是組件間數據通信,這在之後一節中會提及,此處不做贅述。

這裡需要學習探究的點很多,非片言可蔽之,看到一份 PPT Vue.js實踐: 如何使用Vue2.0開發富互動式WEB應用;個種談到 Vue 許多相關的點,值得一覽。另外,如是為團隊寫公用組件,一定記得附上對應使用文檔,這很重要。你看,如上所說,要寫好一手漂亮 Vue(代碼),軟體設計學問,是少不了的存在,不是麽?(web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

如何漂亮使用-Vue-之實戰通信篇)如何漂亮使用 Vue 之實戰通信篇


早先有在[Vue 各類數據綁定]一文中,對 Vue 數據綁定有過些描述(version 1.);雖然如今 Vue 早已升級至 2.,不過數據綁定變化雖多,但大局影響不大,譬如:不再允許片段實例;須以v-html取代三 Mustache 語法;變更 v-for 遍歷時參數順序等等,具體可參見[從 Vue 1.x 遷移]。此處就數據在 vue 組件間傳遞做下探討。

Vue2 移除 dispatch() 和 dispatch()broadcast()之後,主要通過 prop 
(包括 v-model 自定義) 實現父組件向子組件傳參,且只能單向傳遞;為了防止對父組件產生反向影響,Vue2 已移除了 .once 和 .sync 修飾符,子組件需要顯式地傳遞一個事件而不是依賴於隱式地雙向綁定。 一旦你試圖在組件內,直接修改通過props傳入的父組件數據,這將被認為是anti-pattern的,報以下錯誤:

Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value.

但,如果傳遞的 prop 本身是引用型傳遞,像對象或者數組,由於數據類型自身特性,無論是什麼綁定方式都會是雙向綁定!這些在Vue文檔-單向數據流中有作說明;請看這個例子:

這裡需要留意的是:Vue 要麼監聽的是基本數據類型的值變化,要麼監聽的是引用數據類型的引用變化;因此,vue對於數組,才自己封裝了一套方法(包括$set , $remove),如果直接變更引用類型的內容,即便數據已經修改,但 Vue 是感知不到的,所以視圖將不會更新(針對性的對屬性進行賦值操作,則會調用其屬性的 set 方法,因此Vue會得到感知,從而驅動視圖更新)。這裡需要補充的是:Vue 使用 Object.defineProperty(ES5特性)將數據轉為 getter/setter,從而實現對數據的 watchersetter被調用時重新繪製關聯的 Dom,從而刷新視圖。

所以,對父組件傳遞來引用型數據,如需更改,最好改動做深度拷貝後的數據,而且需要註意得失,Object.assign不是深度拷貝,即便採用了 Object.freeze()去凍結。對於子組件向父組件回傳參數,可藉助 $emit,當然也可以使用 callback Functon,可參見jsfiddle 示例。非父子組件間通信,Vue 有提供 Vuex,以狀態共用方式來實現同信,對於這一點,應該註意考慮平衡,從整體設計角度去考量,確保引入她的必要。如果項目不怎麼複雜的話,完全可以自己設計一套 vue-bus,以提供了一個全局事件中心,使得可以像使用內置事件流一樣,便捷的使用全局事件。當然,Vue 也提供了 $refs,可以跨層調用,或者諸如這樣this.$parent.$parent;提供了不代表推薦;儘量少的去運用,除非逼不得已,或者去惡作劇坑人。當然,也可藉助原生Api sessionStoragelocalStorage 等等進行數據存儲,以到達通信目的;對於,兼顧得失,爭取扁平統一化通信方式就好。鑒於篇幅,就不多贅述。

如何漂亮使用-Vue-之Webpack篇)如何漂亮使用 Vue 之Webpack篇


前文提到,推薦使用Vue-cli,它已然幫助我們貼心的配置好了 Webpack 相關。在編寫 router 配置之時,可以輕鬆實現路由組件的懶載入,使得項目可以拆分成若幹個 js 小包,和一個略大的 vendor,運行時按需去載入。即,我們可以像如下用法,去配備路由組件(當然,我們也可以把組件按組分塊):

import Frame from './../views/Frame'
export default {
  path: '/',
  component: Frame,
  children: [{
    path: '/nicelinks',
    meta: {
      title: setTitleLang('晚晴幽草軒', 'Nice Home Blog')
    },
    component: resolve => require(['./../views/Nicelinks'], resolve)
  }]
}

DllReferencePlugin 
除此之外,在webpack這塊,還是有非常多東西需要去優化,以縮短包構建的時間、改善其體積等等。比如可利DllReferencePlugin將常用不怎麼變更的文件,抽離出來打入另一統一的文件(vendor.dll.js), 外鏈以 script 引入。這個網上教程很多,此不贅述。

webpack-bundle-analyzer 
最新 Vue-cli還幫著註入了 [webpack-bundle-analyzer]插件(Webpack插件和CLI實用程式),她可以將內容束展示為方便交互的直觀樹狀圖,讓你明白你所構建包中真正引入的內容;我們可以藉助她,發現它大體有哪些模塊組成,找到錯誤的模塊,然後優化它。我們可以在package.json中註入如下命令去方便運行她(npm run analyz),預設會打開 http://127.0.0.1:8888作為展示。

“analyz”: “NODE_ENV=production npm_config_report=true npm run build”

webpack-bundle-analyzer在引入了 DllReferencePlugin插件後,想必會在 webpack.dll.conf.js中將 vue加入進去;例如進行瞭如下配置:

entry: {
   vendor: [
     'lodash',
     'superagent',
     'vue',
     'vue-router',
     'vue-i18n'
     'vuex'
   ]
 }

當你使用 webpack-bundle-analyzer去分析時,你會發現 Parse Size 為 71 KB 的 vue.common.js,會出現在 vendor.xxx.js 中,按預想它不是應該被打入 vendor.dll.js 中的?談及這裡,為了保證文章的完整性,不得不提下,vue2 經過 2.2 版本升級後, 文件變成了 8 個,分別是:

vue.common.js 
vue.esm.js 
vue.js 
vue.min.js 
vue.runtime.common.js 
vue.runtime.esm.js 
vue.runtime.js 
vue.runtime.min.js

這在Vue2 dist 目錄下各個文件的區別, 可以瀏覽。另外,vue 文當獨立構建-vs-運行時構建,也闡明瞭兩者區別;這 vue.common.js 隸屬獨立構建產物,而預設 NPM 包導出的是 運行時 構建,為了使用獨立構建(支持 template),在 webpack 配置中添加下麵的別名:

resolve: {
  alias: {
    'vue$': 'vue/dist/vue.common.js'
  }
}

如此一來,在 webpack.dll.conf.js 配備中註入 vue,導致 vendor.xxx.js 中出現 vue.common.js,就能夠得到解釋了:dll 中對 vue 打包配置,與 resolve 中引入有出入,前者預設為運行時構建。如能保證是一致了,此問題即可解決。這一點,有經過測試,得出數據如下(resolve 配置如上):

  1. webpack.dll.conf.js 中註入 vue,build 之後得到 vendor.xx.js 611KB, vendor.dll.js 180 KB;
  2. webpack.dll.conf.js 中註入 resolve 同名引入 vue/dist/vue.common.js,build 之後得到 vendor.xx.js 540KB vendor.dll.js 207 KB;

兩者比較,vendor.xx.js 相差 +71 KB,正是 vue.common.js Parse Size;vendor.dll.js 相差 -27KB,即運行時構建所得大小。打開生成的vendor-manifest.json,也會發現,前後生成 vue 相關的引用分別是:

/node_modules/vue/dist/vue.common.js 
./node_modules/vue/dist/vue.runtime.common.js

如何漂亮使用 Vue 之工作流篇


“輕功不代表武功,但速度決定了你我的距離。”——白鳳(秦時明月)。智能化、自動化趨勢越發明顯,作為程式員如不能儘快適應,其所面臨的窘境可想而知。不久的將來,藍領代碼民工,勢必會在科技的浪潮中捉襟見肘;所以這更加要求從業者能快準穩的去解決需求,同時保持知識技能的不斷更新。而這快字,自然是業務技能熟練度多半取決定性作用,但如果有優善的工作流機制,勢必錦上添花。而這個話題,所涉及的點線面,非一言可以蔽之;這會在漸進的學習探索中不斷去變化更新。但至少一個當前的準則是:即便不能全自動,至少也須半自動化。(web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

很多朋友使用 hexo來構建博客;hexo 是基於 Node.js產物,用它發表博文,很是方便;你只需hexo clean,hexo g, hexo d三個命令即可;文章數據一多,一套打下來,也得 20s+;如果略懂 npm,在 package.js中加入點命名,例如像這樣;

"scripts": {
  "start": "sudo hexo clean && sudo hexo g && sudo gulp && sudo hexo d"
}

那麼 只需運行 npm start就好,可將時間消耗縮短至 2s節省時間雖說不多,卻也是數量級的提升,而且代價只是那麼小,並一勞永逸。所以有必要對此,以些許微薄經驗略作闡述,拋磚以引大玉。

  • Vue-cli雖然強大,但畢竟作為基礎公用,不宜繁雜。應有自己(團隊)的腳手架,當準備開啟新的項目時候,只需運行腳手架,以初始化整個項目,而不是一點點拷貝,然後各種重新配置,引入路由,註入 Bootstrap … 。相同項目中也該有可一鍵生成的模版庫,或者自動化的 Json 解析機制。

  • 開始編寫代碼前,必須同後臺er,預定好介面,參數以及返回數據;並令之生成方便檢索,可供測試的可視化 API 文檔。再沒有比這更重要的(如果項目超過一月/人)。像這樣開源工具,也多不勝數,比如 Swagger-Ui

  • 在編寫代碼時候,則該先三思而後寫。而寫時,當確保編輯工具的犀利化,比如檢索語法錯誤,開合標簽完整,自動格式美化代碼,使之契合約定的 Eslint 要求,也保證代碼清晰簡潔;想象下如果你的書桌上整天被擺滿了蟲蠅墨液,你作何想?

  • Vue-cli 已幫配好了代理,無需擔心本地調試跨域問題;但如何能快速提交有效代碼,需要自行配備。命令行也好,SourceTree 可視化工具也罷,方便快捷就好。也該藉助pre-commit工具,在 commit 前執行校驗,防止出現非法提交,影響隊友。

  • 從業歷程中有經歷過手動打各種測試 APK 的凄慘,也經歷了手動各種 build 發佈的艱難,至今想起,滿是心酸。所以,監聽倉庫代碼變化,自動化構建,此乃居家生活必備良品。從業中還經歷過各種關閉 Bug 的奇葩方式,坦言做這事兒比解決所謂 Bug 花費的時間還多。而這些,無非是那時候團隊見識短淺之詬病耳,如今團隊使用 jenkins 和 GitLab,雙劍合壁,再無那種痛楚,感動。

  • 何謂之寫出漂亮 Vue?不僅在於代碼之優美,還在於其高效,資源節省。以數據驅動的 Vue 本身很是效率;但使用 C 寫出的代碼不見得都比 JavaScript 要高效,這變數在於是不同人去寫。由此,除了 Code Review 代碼外,也須有一套行之有效的全方位分析方法。以保證代碼的按需載入,Css 的合理編寫 & 引用,凡此等等。

  • 何謂之寫出漂亮 Vue?還在於其可靠、穩定,而這些最終是要反映在於產品之上;因此,好的產品不僅須配備訪問情況,行為分析,事件埋點,也得有錯誤上報。早先有用簡書這款讀寫一體的產品,如今上面不僅充斥各種雞湯與戾氣縱橫的標題文,還充斥這各種 Bug,尤其是在 Web網頁上(Mac mini,Pc),反饋無門,簡直慘不忍睹;何也?斷定他們肯定是沒有使用 sentry 類似產品工具的。

  • 一門後臺技術;不懂後臺的前端不是好設計師;這看似調侃的話,實則還是挺有道理的。如今,大行其道的前後端分離開發模式,如果各司其職的雙方,能夠懂得彼此技術,則更容易配合,也更效率。而更多時候,何況出於某些需要,前端寫後臺,也是常見;對於個人而言也是好事,藝多不壓身。最近有在寫點個人產品,如果尋找後臺開發協助,比自己學習如何寫後端,其中麻煩肯定不會少;而且也非長久之計。即便都沒這些,要解決 Vue SEO 以及提升渲染速度,做 Vue SSR 相關,也是需要懂些後臺技術。

  • 設計相關;這個設計,不但包括代碼結構、層次、介面等設計,對於前端從業者,必然也包括頁面相關;比如,正在開發的個人產品: 傾城之鏈(英文名曰:NICE LINKS),因為設計美學上的欠缺,可謂步履維艱的初步塑造出大致應用,但,從視覺效果來看,總覺得差那麼些意思,仍在苦思中等待枯竭。即便沒有類似需求,頁面已然有設計師畫出稿來,如要完美的還原,這設計相關的素養,也是不可或缺的存在;畢竟產品最終呈現給用戶的形態,取決於我等前端開發者。

寫在最後的結語


“你首先得是一位程式員,然後才是一位前端程式員”,這個觀點很有道理,並且將隨著時間的更替,顯得越發明顯。因此本篇所要探究的,不僅僅限於對Vue的學習與運用,更深層次的意圖在於,以當前流行框架Vue為突入口,分享時下書寫前端的一些開發經驗、編程心得、以及產品用戶體驗等。很顯然,這裡談及的只是其中冰山一角。況且前端發展如此,欣欣向榮,也是很難面面俱到。我們唯有秉承不斷學習之心態,擁抱變化,面向未來,才能在這洶涌的浪潮中、不至於被落下更遠。談及這裡,很有必要分享下,最近一直在搜集更新的[與時俱進版前端資源教程],其著重搜集時下與未來技術的優秀之文,以及工具、優化、測試、安全等精華之章,宗旨是為前端學習、 技能提升、 視野擴展、 資料查找等行個方便;有興趣的朋友,可以關註瞭解下,或者更進一步,協助補充 & 修正,讓其能服務更多的人。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 品牌:保時捷 案例地址:http://www.199case.com/caseview.aspx?id=2875 來源:199case-H5案例庫 1、內容:一個以”捕捉迅疾魅影“為主題的聲音識別類的h5,用戶可以通過聽取最大的跑車的引擎聲,然後點擊相機狀的按鈕,即可拍攝成功,最後展示類保時捷的跑車 ...
  • 複習作用域 上一節我們說到作用域:是指變數可以訪問的範圍,他規定瞭如何查找變數,以及確定當前執行代碼對變數的訪問許可權;也說到靜態作用域即詞法作用域,是在編譯階段決定變數的引用(由程式定義的位置決定,和代碼執行順序無關,用嵌套的方式解析)。 凝問 如上代碼,在執行run函數時,在run作用域中有nam ...
  • 實現效果: 實現原理: // 步驟 // 1. 獲取事件源以及相關元素 // 2. 複製第一張圖片所在的li,添加到ul的最後面 // 3. 給ol添加li,ul中的個數-1個,並點亮第一個按鈕 // 4. 滑鼠放到ol的li上切換圖片 // 5. 添加定時器 // 6. 左右切換圖片(滑鼠放上去隱 ...
  • 前端分頁的Table配置函數 根據每行數據的一個欄位的值來改變行的背景色(class好像只能調用他本來預設的那幾個,很久之前寫的忘記了是不是這樣的) 這個是根據每行數據的一個欄位的值來是否禁用選擇框(我在之前項目需要做結算,已結算的和未結算的在一起,因此需要這個),formatter還可以寫別的函數 ...
  • 自己整理了一些關於前端這個行業面試題,好多都不會好難過,I NEED AV……. HTML&CSS 常用那幾種瀏覽器測試?有哪些內核(Layout Engine)? (Q1) 瀏覽器:IE,Chrome,FireFox,Safari,Opera。 (Q2) 內核:Trident,Gecko,Pres ...
  • 數據後端分頁排序,其實就是sql語句中oeder by做一些限制。 之前在寫sql語句中的order by是寫死,既然要寫活,就要傳參數到後臺。 之前講到bootstrapTable的queryParams可以自定義參數,這裡就只需要找下點擊需要排序列的欄位名就行 this.sortName 是排序 ...
  • Charles版本:4.0.2 一、開始 連接方式 方法一:電腦和手機連接同一個wifi 方法二:電腦使用網線連接網路,手機通過USB連接電腦 二、過濾網路請求 1.簡單過濾 在Sequence模式下,就可以看到Filter,輸入要過濾的關鍵字即可。 2.長期特定的網路封包 路徑:Proxy Rec ...
  • Generator 函數是協程在 ES6 的實現,最大特點就是可以交出函數的執行權(即暫停執行)參考鏈接:http://www.ruanyifeng.com/blog/2015/04/generator.html{ // genertaor基本定義 有一個星號有一個yield let tell = ... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...