簡單對gradle插件實現(xiàn)進行復習
上面講到要配置一個入口類,這個入口類就是實現(xiàn)了Plugin接口的類,它有一個override fun apply(project: Project)方法,就是我們插件開始執(zhí)行的地方,相當于main函數(shù),參數(shù)project就是整個工程的配置文件
可以使用以下方法,從我們使用插件的地方獲取到對插件的配置
python復制代碼project.extensions.create("config", Config::class.java)mConfig = project.property("config") as Config
Config是一個java bean數(shù)據(jù)類
"config"是我們在build中的配置名稱
上面說了為什么要實現(xiàn)這樣一個插件和該如何實現(xiàn)一個gradle插件,那么下面就具體介紹該插件的實現(xiàn)過程
上面已經(jīng)說了gradle插件的實現(xiàn),那么我們就從apply方法開始說起。
既然是要hock android打包的編譯過程,那就要尋找android打包時,合適的task
在android插件編譯生成apk的過程中,有好多task都可以生成apk,它們的名字基于Build Types 和 Product Flavor 生成。那么我們怎么拿到具體生成apk的task組呢?
為了解決這個問題。android插件有幾個屬性,就是我們平常配置的變體(所謂的環(huán)境),androd中有三類變體
這三個對象都是實現(xiàn)了BaseVariant(BaseVariantImpl為實現(xiàn)這個接口的抽象類)接口的類的對象的集合
屬性名
屬性類型
說明
name
String
Variant 的名字,唯一
description
String
Variant 的描述說明
dirName
String
Variant 的子文件夾名,唯一。可能有不止一個子文件夾,例如 “debug/flavor1”
baseName
String
Variant 輸出的基礎名字,必須唯一
outputFile
File
Variant 的輸出,該屬性可讀可寫
processManifest
ProcessManifest
處理 Manifest 的 task
aidlCompile
AidlCompile
編譯 AIDL 文件的 task
renderscriptCompile
RenderscriptCompile
編譯 Renderscript 文件的 task
mergeResources
MergeResources
合并資源文件的 task
mergeAssets
MergeAssets
合并 assets 的 task
processResources
ProcessAndroidResources
處理并編譯資源文件的 task
generateBuildConfig
GenerateBuildConfig
生成 BuildConfig 類的 task
javaCompile
JavaCompile
編譯 Java 源代碼的 task
processJavaResources
Copy
處理 Java 資源的 task
assemble
DefaultTask
Variant 的標志性 assemble task
因為我們的插件應該可以應用在主工程或者模塊包上的,所以當我們插件運行后,我們要檢測當前使用我們插件的模塊是主工程,還是模塊包
kotlin復制代碼val hasAppPlugin = project.plugins.hasPlugin("com.android.application")val variants = if (hasAppPlugin) { (project.property("android") as AppExtension).applicationVariants} else { (project.property("android") as LibraryExtension).libraryVariants}
我們想hock住android插件運行的task任務,就需要一個重要的gradle回調
erlang復制代碼project.afterEvaluate{...}
afterEvaluate該方法就是整個gradle配置文件配置成功后的回調,證明此時配置已檢查完畢,所有task已經(jīng)就緒,已經(jīng)可以開始按指定順序運行task了,那么我就需要在這個回調里辦事!
Grade 執(zhí)行順序
執(zhí)行setting,檢測所有module,為每個模塊配置project
加載build.properties,生成task執(zhí)行鏈表和配置
執(zhí)行某個指定task,然后會先執(zhí)行該task所依賴的task
配置完成后,開始遍歷variants中所有的變體
arduino復制代碼project.afterEvaluate { variants.all { variant -> ... }}
mergeResourcesProvider這個任務就是android插件合并所有module中資源的task,看名字就知道了。
我們可以從變體中獲取這個task對象
ini復制代碼val mergeResourcesTask = variant.mergeResourcesProvider.get()
那么,我們自己的任務呢?
gradle api提供給我們可以在代碼中生成task的方法
ini復制代碼val mcPicTask = project.task("CheckBigImage${variant.name.capitalize()}")
使用project.task("taskname")來生成一個我們自己需要執(zhí)行的task
然后我們編寫這個task的邏輯,也是本插件的邏輯
復制代碼mcPicTask.doLast {...}
variant里面有各種對象,allRawAndroidResources恰好就是我們需要的。它只有3.3以上才會有。
ini復制代碼val dir = variant.allRawAndroidResources.files
這個dir對象,就是android所有文件資源的files集合
ok。讓我們遍歷這個文件list吧!
scss復制代碼for (channelDir: File in dir) {check(channelDir)}fun check(file: File) { if(file.isDirectory) { check(file)} else { process(file)}}
如果遇到文件夾,這里是一個遞歸調用。
如果遇到文件,就可以按照自己的規(guī)則處理了。
我們task寫好后,需要和mergeResourcesProvider掛鉤
less復制代碼mergeResourcesTask.dependsOn(project.tasks.findByName(mcPicTask.name))
使mergeResourcesTask依賴我們的mcPicTask,當mergeResourcesTask執(zhí)行前,就會先執(zhí)行我們的mcPicTask了!!
注意:此處直接使用mergeResourcesTask系統(tǒng)task依賴我們的task,我們的task執(zhí)行順序會和mergeResourcesTask原有的依賴混雜在一起,不可控。后面講一種可控的方法
這個邏輯應該實現(xiàn)在上面?zhèn)未aprocess(file:File)方法中
這里我們只處理普通圖片轉換為webp的壓縮。jpg,png的自壓縮原理相同,就不復述了
想壓縮轉換webp圖片,需要用到轉換工具
google提供的有一套命令行轉換工具:cwebp ,各個平臺都有,我們去下載一套,放在我們的主工程文件夾下就可以了
這里需要注意的是:為了方便,如果把cwebp命令行程序放在環(huán)境變量下,那么執(zhí)行命令時,拼接命令時,直接拼接cwebp就好。
如果使用工程目錄下的cwebp,執(zhí)行前,需要在cwebp命令前面拼接它所在的工程目錄。
使用
lua復制代碼project.rootDir.path
可以獲取工程的根目錄
可以使用java的api
scss復制代碼Runtime.getRuntime().exec(cmd)
現(xiàn)在可以愉快的轉換圖片了
bash復制代碼Tools.cmd("cwebp", "${imgFile.path} -o ${webpFile.path} -m 6 -quiet")
轉換后,記得把原圖刪掉
優(yōu)化點:
有的圖片轉換后比以前還大,這里需要注意
第一次掃描過后的無法優(yōu)化的圖片,可以存在一個text文本當中,第二次執(zhí)行時,就不要去轉換了
在linux系統(tǒng)上,創(chuàng)建和刪除文件都需要權限,如果沒有權限就會失敗。這時需要先判斷當前的操作系統(tǒng)是不是linux,如果是,可以執(zhí)行chmod 755 -R ${FileUtil.getRootDirPath()}添加權限
這里可以優(yōu)化一下,在我們的mcPicTask前面再加一個task,用來添加權限,這個task只對文件夾進行遞歸添加就可以了,比一個一個文件要來的快。
因為我們不清楚系統(tǒng)的task(mergeResourcesTask)都依賴了哪些,那么如何在依賴上再加依賴,如何插入task呢?
gradle api提供給了我們一個方法,xxx.taskDependencies.getDependencies(xxx)可以獲取自己的依賴樹
在這里就是
scss復制代碼(project.tasks.findByName(chmodTask.name) asTask).dependsOn(mergeResourcesTask.taskDependencies.getDependencies(mergeResourcesTask))
讓chmodTask依賴mergeResourcesTask的依賴。假如mergeResourcesTask是A,chmodTask是B。A依賴一個系統(tǒng)的C。那么上面的代碼就是讓B依賴了C。這時的task圖就是 B->C,A->C
接下來我們再把mcPicTask(簡稱為D)也依賴進來
arduino復制代碼(project.tasks.findByName(mcPicTask.name) as Task).dependsOn(project.tasks.findByName(chmodTask.name) as Task)
這時就是D->B->C,A->C
最后,回到我們剛剛攔截圖片的邏輯的最后代碼
less復制代碼mergeResourcesTask.dependsOn(project.tasks.findByName(mcPicTask.name))
就變成了A->D->B->C,也就是mergeResourcesTask->mcPicTask->chmodTask->原依賴task,依賴和執(zhí)行順序是相反的。
正常的代碼就是
scss復制代碼(project.tasks.findByName(chmodTask.name) asTask).dependsOn(mergeResourcesTask.taskDependencies.getDependencies(mergeResourcesTask))(project.tasks.findByName(mcPicTask.name) as Task).dependsOn(project.tasks.findByName(chmodTask.name) as Task)mergeResourcesTask.dependsOn(project.tasks.findByName(mcPicTask.name))
直接使用mergeResourcesTask.dependsOn(project.tasks.findByName(mcPicTask.name))插入task。執(zhí)行順序打印
......
Task :app:mainApkListPersistenceDebug UP-TO-DATE
Task :app:CheckBigImageDebug
Task :app:generateDebugResValues UP-TO-DATE Task :app:generateDebugResources UP-TO-DATE Task :app:mergeDebugResources
......
而使用正規(guī)的插入法順序
Task :app:mainApkListPersistenceDebug UP-TO-DATE Task :app:generateDebugResValues UP-TO-DATE Task :app:generateDebugResources UP-TO-DATE Task :app:chmodDebug
Task :app:CheckBigImageDebug
Task :app:mergeDebugResources
我們上面的例子,都是基于比較最新的gradle和android gradle tools版本(>3.3),android插件直接提供給了我們allRawAndroidResources,方便無比,直接在merge前遍歷它就好了。
那么3.3之前的版本呢?就是我們最初的設想了,在合并完各個module資源后,掃描merge文件夾!這里又有aapt和aapt2的差異
關掉aapt2
ini復制代碼android.enableAapt2=false
在mergeDebugResources后,processDebugResources前掃描文件夾
前面說過,mergeDebugResources是合并所有module的資源文件到固定目錄
那么processDebugResources是什么呢?就是處理這些已經(jīng)合并完成的文件,生成R.id,資源索引之類的文件
那么我們的任務就必須插入到processDebugResources前面,而不是mergeDebugResources了
仔細翻了翻MergeResources里面的方法,有一個getResSet和computeResourceSetList看起來有點意思。那么computeResourceSetList中又調用了getResSet。最后發(fā)現(xiàn)computeResourceSetList果然可以獲取所有文件列表。
less復制代碼/*** Computes the list of resource sets to be used during execution based all the inputs.*/@VisibleForTesting@NonNullList<ResourceSet> computeResourceSetList()
注釋也很有意思,有道翻譯一下:根據(jù)所有輸入計算執(zhí)行期間使用的資源集列表。
鑒于該方法是友元方法,就使用反射獲取。
因為3.3之后,aapt2是強制開啟的,并且aapt2 merge后的文件不是原文件了哦!注意aapt1合并后,還是正常的xxx.png。aapt2合并后的文件擴展名為flat
所以,方法一不支持大于3.3的gradle版本。方法二支持。可以平滑過渡到新版本。鑒于新版本的gradle直接提供了allRawAndroidResources這樣的方法,所以在3.3以上,直接使用它就可以了
allRawAndroidResources提供的是未合并前的資源路徑
掃描合并文件夾,掃描的是編譯期merge成功后的文件夾
Vue是一個構建數(shù)據(jù)驅動的 web 界面的漸進式框架。Vue.js 的目標是通過盡可能簡單的 API 實現(xiàn)響應的數(shù)據(jù)綁定和組合的視圖組件特別整理了常用的vue插件,來了個大匯總,方便查找使用,便于工作和學習。很全的vue插件匯總,趕緊收藏下吧!
一、UI組件及框架
element - 餓了么出品的Vue2的web UI工具套件
mint-ui - Vue 2的移動UI元素
iview - 基于 Vuejs 的開源 UI 組件庫
Keen-UI - 輕量級的基本UI組件合集
vue-material - 通過Vue Material和Vue 2建立精美的app應用
muse-ui - 三端樣式一致的響應式 UI 庫
vuetify - 為移動而生的Vue JS 2組件框架
vonic - 快速構建移動端單頁應用
vue-blu - 幫助你輕松創(chuàng)建web應用
vue-multiselect - Vue.js選擇框解決方案
VueCircleMenu - 漂亮的vue圓環(huán)菜單
vue-chat - vuejs和vuex及webpack的聊天示例
radon-ui - 快速開發(fā)產品的Vue組件庫
vue-waterfall - Vue.js的瀑布布局組件
vue-carbon - 基于 vue 開發(fā)MD風格的移動端
vue-beauty - 由vue和ant design創(chuàng)建的優(yōu)美UI組件
bootstrap-vue - 應用于Vuejs2的Twitter的Bootstrap 4組件
vueAdmin - 基于vuejs2和element的簡單的管理員模板
vue-ztree - 用 vue 寫的樹層級組件
vue-tree - vue樹視圖組件
vue-tabs - 多tab頁輕型框架
二、滾動scroll組件
vue-scroller - Vonic UI的功能性組件
vue-mugen-scroll - 無限滾動組件
vue-infinite-loading - VueJS的無限滾動插件
vue-virtual-scroller - 帶任意數(shù)目數(shù)據(jù)的順暢的滾動
vue-infinite-scroll - VueJS的無限滾動指令
vue-scrollbar - 最簡單的滾動區(qū)域組件
vue-scroll - vue滾動
vue-pull-to-refresh - Vue2的上拉下拉
mint-loadmore - VueJS的雙向下拉刷新組件
vue-smoothscroll - smoothscroll的VueJS版本
三、slider組件
vue-awesome-swiper - vue.js觸摸滑動組件
vue-slick - 實現(xiàn)流暢輪播框的vue組件
vue-swipe - VueJS觸摸滑塊
vue-swiper - 易于使用的滑塊組件
vue-images - 顯示一組圖片的lightbox組件
vue-carousel-3d - VueJS的3D輪播組件
vue-slide - vue輕量級滑動組件
vue-slider - vue 滑動組件
vue-m-carousel - vue 移動端輪播組件
dd-vue-component - 訂單來了的公共組件庫
vue-easy-slider - Vue 2.x的滑塊組件
四、編輯器
markcook - 好看的markdown編輯器
eme - 優(yōu)雅的Markdown編輯器
vue-syntax-highlight - Sublime Text語法高亮
vue-quill-editor - 基于Quill適用于Vue2的富文本編輯器
Vueditor - 所見即所得的編輯器
vue-html5-editor - html5所見即所得編輯器
vue2-editor - HTML編輯器
vue-simplemde - VueJS的Markdown編輯器組件
vue-quill - vue組件構建quill編輯器
五、圖表
vue-table - 簡化數(shù)據(jù)表格
vue-chartjs - vue中的Chartjs的封裝
vue-charts - 輕松渲染一個圖表
vue-chart - 強大的高速的vue圖表解析
vue-highcharts - HighCharts組件
chartjs - Vue Bulma的chartjs組件
vue-chartkick - VueJS一行代碼實現(xiàn)優(yōu)美圖表
六、日歷
vue-calendar - 日期選擇插件
vue-datepicker - 日歷和日期選擇組件
vue-datetime-picker - 日期時間選擇控件
vue2-calendar - 支持lunar和日期事件的日期選擇器
vue-fullcalendar - 基于vue.js的全日歷組件
vue-datepicker - 漂亮的Vue日期選擇器組件
datepicker - 基于flatpickr的時間選擇組件
vue2-timepicker - 下拉時間選擇器
vue-date-picker - VueJS日期選擇器組件
vue-datepicker-simple - 基于vue的日期選擇器
七、地址選擇
vue-city - 城市選擇器
vue-region-picker - 選擇中國的省份市和地區(qū)
八、地圖
vue-amap - 基于Vue 2和高德地圖的地圖組件
vue-google-maps - 帶有雙向數(shù)據(jù)綁定Google地圖組件
vue-baidu-map- 基于 Vue 2的百度地圖組件庫
vue-cmap - Vue China map可視化組件
九、播放器
vue-video-player - VueJS視頻及直播播放器
vue-video - Vue.js的HTML5視頻播放器
vue-music-master - vue手機端網(wǎng)頁音樂播放器
十、文件上傳
vue-upload-component - Vuejs文件上傳組件
vue-core-image-upload - 輕量級的vue上傳插件
vue-dropzone - 用于文件上傳的Vue組件
十一、圖片處理
vue-lazyload-img - 移動優(yōu)化的vue圖片懶加載插件
vue-image-crop-upload - vue圖片剪裁上傳組件
vue-svgicon - 創(chuàng)建svg圖標組件的工具
vue-img-loader - 圖片加載UI組件
vue-image-clip- 基于vue的圖像剪輯組件
vue-progressive-image - Vue的漸進圖像加載插件
十二、提示
vue-toast-mobile - VueJS的toast插件
vue-msgbox - vuejs的消息框
vue-tooltip - 帶綁定信息提示的提示工具
vue-verify-pop - 帶氣泡提示的vue校驗插件
十三、進度條
vue-radial-progress - Vue.js放射性進度條組件
vue-progressbar - vue輕量級進度條
vue2-loading-bar - 最簡單的仿Youtube加載條視圖
十四、開發(fā)框架匯總
vue-admin - Vue管理面板框架
electron-vue - Electron及VueJS快速啟動樣板
vue-2.0-boilerplate - Vue2單頁應用樣板
vue-webgulp - 仿VueJS Vue loader示例
vue-bulma - 輕量級高性能MVVM Admin UI框架
vue-spa-template - 前后端分離后的單頁應用開發(fā)
Framework7-Vue - VueJS與Framework7結合
vue-element-starter - vue啟動頁
十五、實用庫匯總
vuelidate - 簡單輕量級的基于模塊的Vue.js驗證
qingcheng - qingcheng主題
vuex - 專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式
vue-axios - 將axios整合到VueJS的封裝
vue-desktop - 創(chuàng)建管理面板網(wǎng)站的UI庫
vue-meta - 管理app的meta信息
avoriaz - VueJS測試實用工具庫
vue-framework7 - 結合VueJS使用的Framework7組件
vue-lazy-render - 用于Vue組件的延遲渲染
vue-svg-icon - vue2的可變彩色svg圖標方案
vue-online - reactive的在線和離線組件
vue-password-strength-meter - 交互式密碼強度計
vuep - 用實時編輯和預覽來渲染Vue組件
vue-bootstrap-modal - vue的Bootstrap樣式組件
element-admin - 支持 vuecli 的 Element UI 的后臺模板
vue-shortkey - 應用于Vue.js的Vue-ShortKey 插件
cleave - 基于cleave.js的Cleave組件
vue-events - 簡化事件的VueJS插件
http-vue-loader - 從html及js環(huán)境加載vue文件
vue-electron - 將選擇的API封裝到Vue對象中的插件
vue-router-transition - 頁面過渡插件
vuemit - 處理VueJS事件
vue-cordova - Cordova的VueJS插件
vue-qart - 用于qartjs的Vue2指令
vue-websocket - VueJS的Websocket插件
vue-gesture - VueJS的手勢事件插件
vue-local-storage - 具有類型支持的Vuejs本地儲存插件
lazy-vue - 懶加載圖片
vue-lazyloadImg - 圖片懶加載插件
vue-bus - VueJS的事件總線
vue-observe-visibility - 當元素在頁面上可見或隱藏時檢測
vue-notifications - 非阻塞通知庫
v-media-query - vue中添加用于配合媒體查詢的方法
vuex-shared-mutations - 分享某種Vuex mutations
vue-lazy-component - 懶加載組件或者元素的Vue指令
vue-reactive-storage - vue插件的Reactive層
vue-ts-loader - 在Vue裝載機檢查腳本
vue-pagination-2 - 簡單通用的分頁組件
vuex-i18n - 定位插件
Vue.resize - 檢測HTML調整大小事件的vue指令
vue-zoombox - 一個高級zoombox
leo-vue-validator - 異步的表單驗證組件
modal - Vue Bulma的modal組件
Famous-Vue - Famous庫的vue組件
vue-input-autosize - 基于內容自動調整文本輸入的大小
vue-file-base64 - 將文件轉換為Base64的vue組件
Vue-Easy-Validator - 簡單的表單驗證
vue-truncate-filter - 截斷字符串的VueJS過濾器
十六、服務端
vue-ssr - 結合Express使用Vue2服務端渲染
nuxt.js - 用于服務器渲染Vue app的最小化框架
vue-ssr - 非常簡單的VueJS服務器端渲染模板
vue-easy-renderer - Nodejs服務端渲染
express-vue - 簡單的使用服務器端渲染vue.js
十七、輔助工具
DejaVue - Vuejs可視化及壓力測試
vue-generate-component - 輕松生成Vue js組件的CLI工具
vscode-VueHelper - 目前vscode最好的vue代碼提示插件
vue-play - 展示Vue組件的最小化框架
VuejsStarterKit - vuejs starter套件
vue-multipage-cli - 簡單的多頁CLI
十八、應用實例
pagekit - 輕量級的CMS建站系統(tǒng)
vuedo - 博客平臺
koel - 基于網(wǎng)絡的個人音頻流媒體服務
CMS-of-Blog - 博客內容管理器
vue-cnode - 重寫vue版cnode社區(qū)
vue-ghpages-blog - 依賴GitHub Pages無需本地生成的靜態(tài)博客
swoole-vue-webim - Web版的聊天應用
fewords - 功能極其簡單的筆記本
jackblog-vue - 個人博客系統(tǒng)
vue-blog - 使用Vue2.0 和Vuex的vue-blog
vue-dashing-js - nuvo-dashing-js的fork
rss-reader - 簡單的rss閱讀器
十九、Demo示例
eleme - 高仿餓了么app商家詳情
NeteaseCloudWebApp - 高仿網(wǎng)易云音樂的webapp
vue-zhihu-daily - 知乎日報 with Vuejs
Vue-cnodejs - 基于vue重寫Cnodejs.org的webapp
vue2-demo - 從零構建vue2 + vue-router + vuex 開發(fā)環(huán)境
vue-wechat - vue.js開發(fā)微信app界面
vue-music - Vue 音樂搜索播放
maizuo - vue/vuex/redux仿賣座網(wǎng)
vue-demo - vue簡易留言板
spa-starter-kit - 單頁應用啟動套件
zhihudaily-vue - 知乎日報web版
douban - 模仿豆瓣前端
vue-Meizi - vue最新實戰(zhàn)項目
vue-demo-kugou - vuejs仿寫酷狗音樂webapp
vue2.0-taopiaopiao - vue2.0與express構建淘票票頁面
node-vue-server-webpack - Node.js+Vue.js+webpack快速開發(fā)框架
VueDemo_Sell_Eleme - Vue2高仿餓了么外賣平臺
vue-leancloud-blog - 一個前后端完全分離的單頁應用
vue-fis3 - 流行開源工具集成demo
mi-by-vue - VueJS仿小米官網(wǎng)
vue-demo-maizuo - 使用Vue2全家桶仿制賣座電影
vue2.x-douban - Vue2實現(xiàn)簡易豆瓣電影webApp
vue-adminLte-vue-router - vue和adminLte整合應用
vue-zhihudaily - 知乎日報 Web 版本
Zhihu-Daily-Vue.js - Vuejs單頁網(wǎng)頁應用
vue-axios-github - 登錄攔截登出功能
vue2.x-Cnode - 基于vue全家桶的Cnode社區(qū)
hello-vue-django - 使用帶有Django的vuejs的樣板項目
websocket_chat - 基于vue和websocket的多人在線聊天室
x-blog - 開源的個人blog項目
vue-cnode - vue單頁應用demo
vue-express-mongodb - 簡單的前后端分離案例
photoShare - 基于圖片分享的社交平臺
notepad - 本地存儲的記事本
vue-zhihudaily-2.0 - 使用Vue2.0+vue-router+vuex創(chuàng)建的zhihudaily
vueBlog - 前后端分離博客
Zhihu_Daily - 基于Vue和Nodejs的Web單頁應用
vue-ruby-china - VueJS框架搭建的rubychina平臺
vue-koa-demo - 使用Vue2和Koa1的全棧demo
life-app-vue - 使用vue2完成多功能集合到小webapp
vue-trip - vue2做的出行webapp
github-explorer - 尋找最有趣的GitHub庫
vue-ssr-boilerplate - 精簡版的ofvue-hackernews-2
vue-bushishiren - 不是詩人應用
houtai - 基于vue和Element的后臺管理系統(tǒng)
ios7-vue - 使用vue2.0 vue-router vuex模擬ios7
Framework7-VueJS - 使用移動框架的示例
cnode-vue - 基于vue和vue-router構建的cnodejs web網(wǎng)站SPA
vue-cli-multipage-bootstrap - 將vue官方在線示例整合到組件中
vue-cnode - 用 Vue 做的 CNode 官網(wǎng)
seeMusic - 跨平臺云音樂播放器
HyaReader - 移動友好的閱讀器
zhihu-daily - 輕松查看知乎日報內容
vue-cnode - 使用cNode社區(qū)提供的接口
zhihu-daily-vue - 知乎日報
vue-dropload - 用以測試下拉加載與簡單路由
vue-cnode-mobile - 搭建cnode社區(qū)
Vuejs-SalePlatform - vuejs搭建的售賣平臺demo
vue-memo - 用 vue寫的記事本應用
sls-vuex2-demo - vuex2商城購物車demo
v-notes - 簡單美觀的記事本
vue-starter - VueJs項目的簡單啟動頁
二十、其他實用插件匯總
vue-dragging- 使元素可以拖拽
Vue.Draggable- 實現(xiàn)拖放和視圖模型數(shù)組同步
vue-picture-input- 移動友好的圖片文件輸入組件
rubik- 基于Vuejs2的開源 UI 組件庫
VueStar- 帶星星動畫的vue點贊按鈕
vue-tables-2- 顯示數(shù)據(jù)的bootstrap樣式網(wǎng)格
DataVisualization- 數(shù)據(jù)可視化
vue-drag-and-drop-list- 創(chuàng)建排序列表的Vue指令
vuwe- 基于微信WeUI所開發(fā)的專用于Vue2的組件庫
vue-typer- 模擬用戶輸入選擇和刪除文本的Vue組件
vue-impression- 移動Vuejs2 UI元素
vue-datatable- 使用Vuejs創(chuàng)建的DataTableView
vue-instant- 輕松創(chuàng)建自動提示的自定義搜索控件
vue-slider-component- 在vue1和vue2中使用滑塊
vue-touch-ripple- vuejs的觸摸ripple組件
coffeebreak- 實時編輯CSS組件工具
vue-datasource- 創(chuàng)建VueJS動態(tài)表格
handsontable- 網(wǎng)頁表格組件
vue-bootstrap-table- 可排序可檢索的表格
vue-google-signin-button- 導入谷歌登錄按鈕
vue-float-label- VueJS浮動標簽模式
vue-tagsinput- 基于VueJS的標簽組件
vue-social-sharing- 社交分享組件
vue-popup-mixin- 用于管理彈出框的遮蓋層
cubeex- 包含一套完整的移動UI
vue-fullcalendar- vue FullCalendar封裝
vue-material-design- Vue MD風格組件
vue-morris- Vuejs組件封裝Morrisjs庫
we-vue- Vue2及weui1開發(fā)的組件
vue-form-2- 全面的HTML表單管理的解決方案
vue-side-nav- 響應式的側邊導航
mint-indicator- VueJS移動加載指示器插件
vue-ripple- 制作谷歌MD風格漣漪效果的Vue組件
vue-touch-keyboard- VueJS虛擬鍵盤組件
vue-parallax- 整潔的視覺效果
vue-typewriter- vue組件類型
vue-ios-alertview- iOS7+ 風格的alertview服務
paco-ui-vue- PACOUI的vue組件
vue-button- Vue按鈕組件
原文鏈接:https://blog.csdn.net/qq_25838839/article/details/84613644
關注我的頭條號,分享更多的技術學習文章,我自己是一名從事了多年開發(fā)的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的web前端學習干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:前端,即可免費獲取。
果你對數(shù)據(jù)分析感興趣,希望學習更多的方法論,希望聽聽經(jīng)驗分享,
歡迎移步寶藏公眾號「小火龍說數(shù)據(jù)」,無廣告、無軟文、純干貨,更多精彩原創(chuàng)文章與你分享!
1、OneTab:一鍵合并 tabTab 過多的時候,要關閉瀏覽器的時候OneTab可以幫助你快速的保存、整理瀏覽器。
2、掘金:最新的技術動態(tài)每次打開新的 tab 頁面就可以看到最新、最熱的技術文章。
3、markdown here超好用的 MD 編輯器,任何地方都可以把 MD 輕松的轉換為富文本,我們可以把簡書寫好的文章(帶md語法)直接復制到微信公眾號啦。
4、Adblock Plus:免除廣告困擾你是不是每次搜索百度前幾個都是廣告?有了它,你的搜索結果只有純凈。
5、LastPass:密碼管理軟件LastPass,全球知名在線密碼管理工具之一,采用軍事級加密算法,支持自動填充網(wǎng)站用戶名和密碼,與朋友分享登錄信息等實用功能,且在全平臺同步免費,無需訂閱 Premium,即可在手機、網(wǎng)頁、電腦端同步你的所有 LastPass 信息。
6、二維碼(QR碼)生成器在線的二維碼生成器。最方便的用法是把當前的頁面生成二維碼,方便手機掃碼快速訪問。
7、下載+Chrome的下載管理在二級菜單里,進去很不方便。裝了這個插件就可以直接看和管理,很好用。
8、Github 加速器一鍵加速 Github 訪問速度,當 Github 訪問慢的時候點擊右鍵直加速,同時支持多個加速鏡像。
9、購物黨在線的比價工具,剁手黨們趕緊裝起來。
10、新浪微博圖床簡單好用的新浪微博圖床,同時可以快速轉換格式,HTML和Markdown等格式,支持瀏覽和刪除歷史記錄。
11、crxMouse Chrome Gestures對于國產瀏覽器自帶鼠標手勢的功能,真覺得很方便!有了這款插件,也足夠讓你裝B了。
12、Imagus圖片放大鏡的功能,在瀏覽新聞和博客的時候想右鍵看一下高清圖,有了這個插件完全不用,鼠標懸浮就能看高清圖片。
13、Save to Pocket看到感興趣的先收藏著,然后走哪兒都能看,并且它由各個平臺的版本支持,同時可以自動去廣告,只把關鍵的內容保存,這樣非常方便各個平臺閱讀。
14、網(wǎng)頁截圖:注釋&批注網(wǎng)頁截圖,批注工具。
15、Image Downloader Chrome想下載某個頁面的圖片,不用再去資源里面一個一個看了,直接安裝這個插件,一鍵就可以下載。
16、Google翻譯Google翻譯是一款由谷歌公司提供的網(wǎng)頁劃詞翻譯插件,它支持動態(tài)的劃詞翻譯功能,也支持網(wǎng)頁翻譯,真是閱讀外文網(wǎng)站的好幫手啊。
17、Lucidchart Diagrams - Desktop:在線繪制多種圖表繪制各種流程圖手頭沒有趁手的工具,直接試試這個工具哈。
18、Vimium:Linux 系統(tǒng)的 vim 編輯器快捷鍵功能能夠在chrome中應用類vim快捷鍵進行操作,實現(xiàn)雙手從鼠標上的解放,強烈推薦!
19、New Tab Startup Quotes:學習成功人士的格言每次打開新的 tab 都會有一個名人名言,不過是英文的,得思考一下才能理解其中的奧妙,如果你能做一個中文版就好了。
20、Search by Image:強大的以圖搜圖發(fā)現(xiàn)了一個圖片,但是不知道他是什么,或者想搜索一些類似的,那么就用這個插件。
21、為什么你們就是不能加個空格呢 自動把網(wǎng)頁中所有中文、英文、數(shù)字、符號之間插入一個空格。
22、Clear Cache點擊圖標即可清除緩存、cookie等,開發(fā)必備!
23、JSON ViewerJSONView 是一個方便查看 Json 結構的插件,展開,折疊,可以非常方便的查看接口返回數(shù)據(jù)。
24、Postman相信開發(fā)者朋友一定知道這款插件,非常方便的調用和調試 API 接口。
25、Octotreegithub上查看代碼的時候總是一層層進入再出來,有點麻煩,有了這個插件,你可以想瀏覽本地 IDE 一樣瀏覽 Github。
26、Table of contents sidebarTable of contents sidebar 可以讓你在閱讀很長篇幅的文章時候清晰的看到文章輪廓。
27、Tampermonkey俗稱‘油猴子’,方便的管理插件的插件,你試試就知道如何的優(yōu)秀。
28、Code ColaCode Cola是一個可視化編輯在線頁面css樣式的chrome插件。
29、WEB前端助手FE助手:包括字符串編解碼、圖片base64編碼、代碼壓縮、美化、JSON格式化、正則表達式、時間轉換工具、二維碼生成器、編碼規(guī)范檢測、頁面性能檢測、柵格檢測、JS運行效率分析等等你日常生活中不可缺少的插件。
30、sider:ChatGPT側邊欄輕松應用ChatGPT,實現(xiàn)Chrome與ChatGPT的聯(lián)動應用,強烈推薦!
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。