1
0
Fork 0
mirror of https://github.com/vuejs/awesome-vue.git synced 2025-02-10 15:34:40 -05:00

First set of working revamp

This commit is contained in:
An Phan 2016-06-21 22:34:53 +08:00
parent ab34a44edd
commit c6d650c694
41 changed files with 808 additions and 2894 deletions

3
.babelrc Normal file
View file

@ -0,0 +1,3 @@
{
"presets": ["es2015"]
}

2
.editorconfig Normal file
View file

@ -0,0 +1,2 @@
indent_style = space
indent_size = 2

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
.DS_Store
node_modules/
dist/
npm-debug.log

471
README.md
View file

@ -1,467 +1,18 @@
<p align="center">
<br>
<img width="400" src="https://rawgit.com/vuejs/awesome-vue/master/logo.png" alt="awesome">
<br>
<br>
</p>
## Awesome Vue.js [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
# awesome-vue
> A curated list of awesome things related to Vue.js
- [Official Resources](#official-resources)
- [External Resources](#external-resources)
- [Community](#community)
- [Podcasts](#podcasts)
- [Official Examples](#official-examples)
- [Tutorials](#tutorials)
- [Development Tools](#development-tools)
- [Syntax Highlighting](#syntax-highlighting)
- [Snippets](#snippets)
- [Autocomplete](#autocomplete)
- [Component Collections](#component-collections)
- [Libraries & Plugins](#libraries--plugins)
- [Routing](#routing)
- [Ajax/Data](#ajaxdata)
- [State Management](#state-management)
- [Validation](#validation)
- [UI Components](#ui-components)
- [i18n](#i18n)
- [Examples](#examples)
- [Boilerplates](#boilerplates)
- [Scaffolding](#scaffolding)
- [Integrations](#integrations)
- [General Plugins/Directives](#general-pluginsdirectives)
- [SEO](#seo)
- [Projects Using Vue.js](#projects-using-vuejs)
- [Open Source](#open-source)
- [Apps/Websites](#appswebsites)
- [Interactive Experiences](#interactive-experiences)
- [Enterprise Usage](#enterprise-usage)
## Build Setup
### Official Resources
``` bash
# install dependencies
npm install
- [Official Guide](http://vuejs.org/guide/)
- [API Reference](http://vuejs.org/api/)
- [**GitHub Repo ★20,319**](https://github.com/vuejs/vue)
- [Release Notes](https://github.com/vuejs/vue/releases)
# serve with hot reload at localhost:8080
npm run dev
### External Resources
# build for production with minification
npm run build
```
- [Vue.js資料まとめ(for japanese)](https://gist.github.com/hashrock/f575928d0e109ace9ad0) by @hashrock
### Community
- [Twitter](https://twitter.com/vuejs)
- [Gitter Chat Room](https://gitter.im/vuejs/vue)
- [Official Forum](http://forum.vuejs.org/)
- [vue-requests ★25](https://github.com/vuejs/vue-requests) - Request a Vue.js module you wish existed or get ideas for modules
### Podcasts
- [Full Stack Radio #30 (11-23-2015)](http://www.fullstackradio.com/30)
- [JavaScript Jabber #187 (11-25-2015)](https://devchat.tv/js-jabber/187-jsj-vue-js-with-evan-you)
- [Changelog #184 (11-27-2015)](https://changelog.com/184/)
- [Software Engineering Daily (12-29-2015)](http://softwareengineeringdaily.com/2015/12/29/front-end-javascript-with-evan-you/)
- [Javascript Air 016 (03-30-2016)](https://javascriptair.com/episodes/2016-03-30/)
### Official Examples
- [Basic Examples](http://vuejs.org/guide/)
- [Vue.js TodoMVC](https://github.com/vuejs/vue/tree/dev/examples/todomvc)
- [CoffeeScript Version ★3](https://github.com/anfelor/TodoMVC-CoffeeScript-and-Vue.js)
- [**Vue.js HackerNews Clone ★908**](https://github.com/vuejs/vue-hackernews)
### Tutorials
- [Vue.js screencasts](https://laracasts.com/series/learning-vue-step-by-step) on Laracasts
- [What's New in Vue.js 1.0](http://www.sitepoint.com/whats-new-in-vue-js-1-0/) on Sitepoint
- [Build an App with Vue.js: From Authentication to Calling an API](https://auth0.com/blog/2015/11/13/build-an-app-with-vuejs/) on Auth0 blog
- [Create a GitHub File Explorer Using Vue.js](https://scotch.io/tutorials/create-a-github-file-explorer-using-vue-js) on Scotch.io
- [Vue.js Tutorial](http://vegibit.com/vue-js-tutorial/) on Vegibit
- [Vue.js build set-up from scratch with webpack, vue-loader and hot reload](http://skyronic.com/2015/12/28/vue-project-scratch/)
- [Vuex basics: Tutorial and explanation](http://skyronic.com/2016/01/03/vuex-basics-tutorial/)
- [Vuex introduction video - James Browne from London Vue.js Meetup #1](https://www.youtube.com/watch?v=l1KHL-TX3qs)
- [Vue.js 中文系列视频教程](https://laravist.com/series/vue-js-1-0-in-action-series) on Laravist
- [Vue.js: The Basics](http://coligo.io/vuejs-the-basics/) on Coligo.io
- [Practical Intro to Components in Vue.js](http://coligo.io/vuejs-components) on Coligo.io
- [Develop a Reactive Invoice App using Vue.js](http://craigmckenna.com/develop-a-reactive-invoice-app-using-vue-js/) on craigmckenna.com
- [Understanding Filters in Vue.js](http://coligo.io/vuejs-filters/) on Coligo.io
- [Hybrid App Example with Laravel and Vue.js in portuguese](https://www.youtube.com/watch?v=TGSJjDahlrQ) by @vedovelli
- [Creating a Markdown Editor with VueJs and GitHub's API](http://coligo.io/markdown-editor-vuejs/) on Coligo.io
- [Building a Real-Time Web Analytics Dashboard with NodeJs, Socket.io, and VueJs](http://coligo.io/real-time-analytics-with-nodejs-socketio-vuejs/) on Coligo.io
- [Vue.js Introduction Turkish Language](http://oguzhan.in/vue-js-ile-uygulama-gelistirme/) on oguzhan.in
- [Vue.js VideoTutoral Series in Spanish (3-8-2016)](https://www.youtube.com/watch?v=IlFk3cyRB0Y&list=PLM-Y_YQmMEqD2EWfWpSbiV3WgShRRW3FE&index=7) on YouTube by Juan Andrés Núñez
- [Building a Bookmarking App with Electron, VueJs, and Firebase](http://coligo.io/bookmarking-app-electron-vuejs-firebase/) on Coligo.io
- [Learn Vuex by Building a Notes App](https://coligo.io/learn-vuex-by-building-notes-app/) on Coligo.io
- [Vue.js Screencast Series in Spanish](https://styde.net/curso-de-vue-js/) on Styde.net
- [讲解Vue.js 官网 中文-含代码、百度云、youtube] (https://github.com/bhnddowinf/vuejs-learn) on bhnddowinf
#### 0.12 and earlier
- [Vue.js screencasts](https://laracasts.com/series/learning-vuejs) on Laracasts <sup>0.12</sup>
- [Build an App with Vue.js](https://scotch.io/tutorials/build-an-app-with-vue-js-a-lightweight-alternative-to-angularjs) on Scotch.io <sup>0.12</sup>
- [Getting Started with Vue.js](http://www.sitepoint.com/getting-started-with-vue-js/) on Sitepoint <sup>0.12</sup>
- [Vue.js video series in portuguese](http://forum.vuejs.org/topic/49/vue-js-video-series-in-portuguese) <sup>0.12</sup>
- [Vue.js video series in russian](http://ausite.ru/category/js/vue-js) on Ausite <sup>0.12</sup>
- [A Quick Introduction to Vue.js](http://mattsparks.com/a-quick-introduction-to-vue-js/) by Matt Sparks <sup>0.12</sup>
- [Getting Started with Vue.js + vue-router](https://www.youtube.com/watch?v=QN7l3ydXvx0) by Michael Calkins <sup>0.12</sup>
- [Many JS Frameworks but Vue.js Is Different](http://taha-sh.com/blog/many-js-frameworks-but-vuejs-is-different) by Taha Shashtari <sup>0.12</sup>
- [Getting Started with Vue.js - AngularJS perspective](http://fadeit.dk/blog/post/getting-started-with-vuejs-angularjs-perspective) by Dan Mindru <sup>0.11</sup>
### Development Tools
- [**vue-cli ★569**](https://github.com/vuejs/vue-cli): official CLI for scaffolding Vue.js projects.
- [**vue-loader ★453**](https://github.com/vuejs/vue-loader) - Vue component loader for Webpack.
- [**vueify ★409**](https://github.com/vuejs/vueify) - Vue component transform for Browserify.
- [**vue-devtools ★589**](https://github.com/vuejs/vue-devtools) - Chrome devtools extension for debugging Vue applications.
- [grunt-vueify ★1](https://github.com/SkewedAspect/grunt-vueify) - Translate `.vue` files to pure JavaScript, without using Browserify. (Useful for Electron apps)
- [vue-compiler ★2](https://github.com/paulpflug/vue-compiler) - A simple CLI wrapper around vueify
- [vue-autocompile](https://atom.io/packages/vue-autocompile) - Atom.io package to compile `.vue` files on save.
- [vue-dev-server ★3](https://github.com/paulpflug/vue-dev-server) - A small webpack-based development server for building standalone `vue` components
- [vue-go-cli ★2](https://github.com/rodzzlessa24/vue-go-cli) - a CLI tool for scaffolding new projects generating components, services, and mixins.
- [brunch-vue ★2](https://github.com/nblackburn/vue-brunch) - Adds support to Brunch for pre-compiling single file Vue components.
- [vueify-extract-css ★18](https://github.com/rawcreative/vueify-extract-css) - Browserify plugin to extract css from Vueify-compiled single file components to a separate css file.
- [eslint-plugin-vue ★21](https://github.com/Twiknight/eslint-plugin-vue) - Eslint plugin for .vue files.
- [vbuild ★59](https://github.com/egoist/vbuild) - Preset build tool for Vue.js apps.
- [vue-markdown-loader](https://github.com/QingWei-Li/vue-markdown-loader) Convert Markdown file to Vue Component using markdown-it.
### Syntax Highlighting
- [**Sublime Text ★164**](https://github.com/vuejs/vue-syntax-highlight)
- [Atom](https://atom.io/packages/language-vue) by @hedefalk
- [Atom (2)](https://atom.io/packages/language-vue-component) by @CYBAI
- [Vim ★30](https://github.com/posva/vim-vue) by @darthmall and @posva
- [Visual Studio Code](https://marketplace.visualstudio.com/items/liuji-jim.vue) by Jim Liu
- [Brackets ★6](https://github.com/pandao/brackets-vue) by @pandao
- [**IntelliJ IDEA / WebStorm ★135**](https://github.com/henjue/vue-for-idea) by @henjue
- [Emacs ★2](https://github.com/CodeFalling/vue-mode) by @CodeFalling
- [Visual Studio 2015](https://github.com/madskristensen/VuePack) by @madskristensen
### Snippets
- [vue-snippets](https://atom.io/packages/vue-snippets) for Atom.io by [@ealves-pt](https://github.com/ealves-pt)
### Autocomplete
- [vue-autocomplete](https://atom.io/packages/vue-autocomplete) for Atom.io by [@ealves-pt](https://github.com/ealves-pt)
### Component Collections
- [VueStrap](http://yuche.github.io/vue-strap/), Bootstrap components built with pure Vue.js by @yuche <sup>1.0</sup>
- [VueBoot](http://morgul.github.io/vueboot/), Bootstrap v4 components by @Morgul <sup>1.0</sup>
- [**vue-mdl ★284**](https://github.com/posva/vue-mdl): Reusable Vue.js components using Material Design Lite. By [@posva](https://github.com/posva)
- [Extra Vuestrap components](http://gritcode.github.io/gritcode-components/#/toast), more components built with just B4 and Vue.js, by @kzima <sup>1.0</sup>
- [VueStrap Base Components](http://kzima.github.io/vuestrap-base-components/#/accordion), A complete set of Bootstrap 4 web components built with pure Vue.js, by @kzima <sup>1.0</sup>
- [**vux ★1,068**](https://github.com/airyland/vux): Mobile web UI Components based on Vue and WeUI
- [Vue Material Components](http://appcomponents.org/material-components/): Vue.js UI components using [materializecss.com](http://materializecss.com/) by mjanys
- [Vue Upload Component](https://github.com/lian-yue/vue-upload-component/): Vue.js Multiple file upload component support ie9 [lianyue.org](http://www.lianyue.org) by LianYue
- [vue-comps](https://github.com/vue-comps): A collection of unstyled and unanimated plain vue components
- [vue-materialize ★25](https://github.com/paulpflug/vue-materialize): materializeCss styles and animations for `vue-comps`
- [vue-clusterize ★18](https://github.com/vue-comps/vue-clusterize): implementation of clusterize.js in vue, invisible pagination
- [vue-side-nav](https://github.com/vue-comps/vue-side-nav): responsive, touch enabled side nav
- [vue-parallax](https://github.com/vue-comps/vue-parallax): Scrolls a image slower than the window to create a neat optical effect
- [vue-zoombox](https://github.com/vue-comps/vue-zoombox): implementation of [zoomerang](https://github.com/yyx990803/zoomerang), Zooms into everything (images, text) - without animations
- [vue-icons](https://github.com/vue-comps/vue-icons): webpack based - load only what you need - svg inline icons - font compatible mode - fa, material, mdi and octicons
- [keen-ui](https://github.com/JosephusPaye/keen-ui): A collection of essential UI components inspired by Material Design
- [material-ui-vue](http://material-ui-vue.jackyang.me/docs/index.html#!/components/badges/badge): materializecss UI components with Vue, by [@jack](https://github.com/JackGit)
- [vue-spectre](vace.me/a/vue-spectre/index.html): [github](https://github.com/vace/vue-spectre),spectre components built with Vue.js by @vace <sup>1.0</sup>
- [vue-desktop ★100](https://github.com/ElemeFE/vue-desktop): A UI library for building admin panel website, by [@ElemeFE](https://github.com/ElemeFE)
- [smart](https://github.com/shenlq/smart): Reusable mobile components based on Vue, by [@shenlq](https://github.com/shenlq)
- [vue-admin](https://github.com/fundon/vue-admin): Vue Admin Panel Framework, by [@fundon](https://github.com/fundon)
- [vue-material-design](https://github.com/loujiayu/vue-material-design): A set of material components by [@loujiayu](https://github.com/loujiayu)
- [mint-ui ★767](https://github.com/ElemeFE/mint-ui): Mobile UI elements for Vue.js, by [@ElemeFE](https://github.com/ElemeFE)
### Libraries & Plugins
- #### Routing
- [**vue-router ★1,076**](https://github.com/vuejs/vue-router) - Official router for building SPAs. <sup>1.0 compatible</sup>
- [Vue page ★15](https://github.com/AlexToudic/vue-page), a routing system based on pagejs by @AlexToudic
- [Vue Lanes ★19](https://github.com/bpierre/vue-lanes), an event-based routing system for Vue by @bpierre
- [Vue route ★70](https://github.com/ayamflow/vue-route), ng-view inspired routes for Vue by @ayamflow
- [**voie ★108**](https://github.com/inca/voie) — simple router / layout manager inspired by FSMs and ui-router by [Boris Okunskiy](https://github.com/inca)<sup>1.0</sup>
- [vue-script2](https://github.com/taoeffect/vue-script2) - Load route-specific code or vendor scripts with a `<script>`-like tag, by @taoeffect
- #### Ajax/Data
- [**vue-resource ★1,162**](https://github.com/vuejs/vue-resource) - AJAX/Resource plugin maintained by the [PageKit](http://pagekit.com/) team. <sup>1.0 compatible</sup>
- [**vue-async-data ★174**](https://github.com/vuejs/vue-async-data) - Async data loading plugin <sup>1.0 compatible</sup>
- [vue-async-computed ★15](https://github.com/foxbenjaminfox/vue-async-computed) - Plugin to support computed properties that are calculated asynchronously. By [@foxbenjaminfox](https://github.com/foxbenjaminfox)
- [vue-model](https://github.com/aarondfrancis/vue-model) - Plugin to make rich models with built-in HTTP actions by [@aaronfrancis](https://github.com/aarondfrancis)
- #### State Management
- [**vuex ★1,200**](https://github.com/vuejs/vuex) - Flux/Redux inspired application architecture for Vue.js.
- [**revue ★159**](https://github.com/revue/revue) - Redux binding for Vue by @egoist
- [vue-redux ★74](https://github.com/yang-wei/vue-redux) - Redux binding for Vue by @yang-wei
- [vue-freeze ★29](https://github.com/BosNaufal/vue-freeze) - Simple state management whitout bloating API and Concept for Vue by [@BosNaufal](https://github.com/BosNaufal)
- [vue-simple-store ★25](https://github.com/BosNaufal/vue-simple-store) - Store Organizer To Simplify Your Stores for Vue By [@BosNaufal](https://github.com/BosNaufal)
- #### Validation
- [**vue-validator ★538**](https://github.com/vuejs/vue-validator) - Form validation plugin maintained by @kazupon <sup>1.0 compatible</sup>
- [Vue validator ★34](https://github.com/xrado/vue-validator) by @xrado
- [**vue-form ★105**](https://github.com/fergaldoyle/vue-form) by @fergaldoyle <sup>1.0 compatible</sup>
- [Vuex Validator](https://github.com/sebastian-software/vuex-validator) - Validator library for simple and complex state validation by @sebastiansoft <sup>1.0 compatible</sup>
- #### UI Components
- [vue-countup ★8](https://github.com/samcrosoft/vue-countup): A Vue.js component for the very interesting [CountUp.js](https://inorganik.github.io/countUp.js/) plugin. <sup>1.0 compatible</sup>
- [Vue Tag Editor Component ★19](https://github.com/hnakamur/vue.tag-editor.js) by @hnakamur
- [Vue Crop](http://pespantelis.github.io/vue-crop/)
- [Vue Typeahead](http://pespantelis.github.io/vue-typeahead/)
- [Typed select component ★3](https://github.com/dgerber/vue-select-js) by @dgerber
- [vue-select ★45](https://github.com/Haixing-Hu/vue-select): A Vue.js component implementing the select control with the [jQuery select2 plugin](https://github.com/select2/select2). By @Haixing-Hu
- [vue-html-editor ★55](https://github.com/Haixing-Hu/vue-html-editor): A Vue.js component implementing the HTML editor with the [jQuery summernote plugin](https://github.com/summernote/summernote). By @Haixing-Hu
- [vue-datetime-picker ★54](https://github.com/Haixing-Hu/vue-datetime-picker): A Vue.js component implementing the datetime picker control using the [Eonasdan's bootstrap datetime picker plugin](https://github.com/Eonasdan/bootstrap-datetimepicker). By @Haixing-Hu
- [vue-country-select ★11](https://github.com/Haixing-Hu/vue-country-select): A Vue.js component implementing the select control used to select countries. It depends on [vue-select](https://github.com/Haixing-Hu/vue-select) and [vue-i18n](https://github.com/Haixing-Hu/vue-i18n). By @Haixing-Hu
- [Form generation from JSON Schema ★19](https://github.com/dgerber/vue-formidable) by @dgerber
- [vue-panel ★36](https://github.com/ericmcdaniel/vue-panel): A suite of Vue.js components for building Flexbox layouts by @ericmcdaniel
- [vue-google-maps](https://github.com/GuillaumeLeclerc/vue-google-maps/): A suite of Vue.js components to build reactive Google Maps Applications by @GuillaumeLeclerc
- [vue-transition ★34](https://github.com/Twiknight/vue-transition): A component to trigger a CSS transition at any time by @Twiknight
- [SVG icons](http://kzima.github.io/vuestrap-icons/#/icons), SVG sprites in form of a simple `<icon>` component, by @kzima <sup>1.0</sup>
- [Vue YouTube Embed ★16](https://github.com/kaorun343/vue-youtube-embed): a component for Vue.js and YouTube by @kaorun343
- [Vue datepicker ★48](https://github.com/hilongjw/vue-datepicker): calendar and datepicker component with material design for Vue.js by @hilongjw
- [vue-date-picker ★16](https://github.com/Bubblings/vue-date-picker): A simple datepicker component for Vue.js by @Bubblings
- [**vue-spinner ★131**](https://github.com/greyby/vue-spinner): A collection of loading spinners with Vue.js.
- [vue-image-loader ★14](https://github.com/eduardostuart/vue-image-loader): Async image loader for Vue.js by @eduardostuart
- [Vue-progressbar ★36](https://github.com/hilongjw/vue-progressbar): A lightweight progress bar for Vue.js by @hilongjw
- [Famous-Vue ★10](https://github.com/irwansyahwii/Famous-Vue): Declarative Famous using Vue
- [**vue-waterfall ★206**](https://github.com/MopTym/vue-waterfall): A waterfall layout component for Vue.js by @MopTym
- [vue-charts ★17](https://github.com/haydenbbickerton/vue-charts): A Google Charts plugin for Vue.js by [@haydenbbickerton](https://github.com/haydenbbickerton)
- [**vue-select ★155**](https://github.com/sagalbot/vue-select): Simple component that implements Select2/Chosen style dropdowns with no dependencies<sup>1.0</sup>
- [Vue-slide ★29](https://github.com/hilongjw/vue-slide): A lightweight slide component for Vue.js by @hilongjw
- [Vue-quill ★5](https://github.com/CroudSupport/vue-quill): A Vue component implementing the [Quill](https://github.com/quilljs/quill.git) text editor by @brockreece
- [vue-pagenav ★6](https://github.com/zxdong262/vue-pagenav): A vue pagenav plugin by [@zxdong262](https://github.com/zxdong262)
- [Vue-calendar ★1](https://github.com/cucygh/vue-calendar): A vue calendar component with less code by cucygh
- [vue-autocomplete ★22](https://github.com/BosNaufal/vue-autocomplete) Autocomplete Component for Vue by [@BosNaufal](https://github.com/BosNaufal)
- [vue-loading-bar ★26](https://github.com/BosNaufal/vue-loading-bar) Youtube Like Loading Bar Component for Vue by [@BosNaufal](https://github.com/BosNaufal)
- [vue-bootstrap-modal ★5](https://github.com/Coffcer/vue-bootstrap-modal) Bootstrap style modal component for Vue by [@Coffcer](https://github.com/Coffcer)
- [vue-waves ★3](https://github.com/Teddy-Zhu/vue-waves):Click effect inspired by Google's Material Design ,the vue version By @Teddy-Zhu
- [vue-table] (https://github.com/ratiw/vue-table): component that will automatically request (JSON) data from the server and display them nicely in html table with swappable/extensible pagination component. By @ratiw
- [vue-tables] (https://github.com/matfish2/vue-tables): This Vue package offers an easy and intuitive way of displaying Bootstrap-styled grids with data coming either from the client or from the server. By @matfish2
- [vue-smart-table] (https://github.com/gurghet/vue-smart-table): Much table, many enterprise, so nested components, wow!
- [fire-select] (https://github.com/firework/fire-select): Vue component that transforms overwhelming select boxes into something fancy, simple and user-friendly. It is similar to Selectize, Chosen, Select2, etc.
- [vue-color](https://github.com/xiaokaike/vue-color), Color picker
- [vue-avatar](https://github.com/eliep/vue-avatar): display user avatar with fallback to user's initials.
- [vue-msui](https://github.com/yjj5855/vue-msui) by [@yjj5855](https://github.com/yjj5855) : A Vue modal
- [vue-file-base64](https://github.com/BosNaufal/vue-file-base64) - Vue Component for Converting File to base64 by [@BosNaufal](https://github.com/BosNaufal)
- [vue-ripple](https://github.com/BosNaufal/vue-ripple) - Vue Component to Make Google Material Design Ripple Effect by [@BosNaufal](https://github.com/BosNaufal)
- [vue-scrollbar](https://github.com/BosNaufal/vue-scrollbar) - The Simplest Scroll Area Component with custom scrollbar for Vue by [@BosNaufal](https://github.com/BosNaufal)
- [vue-tagsinput](https://github.com/Ginhing/vue-tagsinput): A tags input component based on Vue.js
- [vue-markdown](https://github.com/miaolz123/vue-markdown): A Powerful and Highspeed Markdown Parser for Vue. By [@miaolz123](https://github.com/miaolz123)
- [vue-awesome](https://github.com/Justineo/vue-awesome): Font Awesome component for Vue.js, using inline SVG. By [@Justineo](https://github.com/Justineo)
- [vue-smoothscroll](https://github.com/Teddy-Zhu/vue-smoothscroll):scroll website smoothly , By [@Teddy-Zhu](https://github.com/Teddy-Zhu)
- [vue-breadcrumbs](https://github.com/samturrell/vue-breadcrumbs): Implements simple breadcrumb functionality with vue-router. By [@SamTurrell](https://github.com/samturrell)
- [vue-datepicker](https://github.com/weifeiyue/vue-datepicker): datepicker component for Vue.js. By [@weifeiyue](https://github.com/weifeiyue)
- [vue-timeago](https://github.com/egoist/vue-timeago): A timeago component for Vue by [@EGOIST](https://github.com/egoist)
- [vue-calendar](https://github.com/ihanyang/vue-calendar): Vue Material date picker for Vue by [@ihanyang](https://github.com/ihanyang)
- [vue-multiselect](https://github.com/monterail/vue-multiselect): Configurable dropdown/select component similar to Select2/Chosen, with NO dependecies by [@shentao](https://github.com/shentao)
- [vue-infinite-loading ★7](https://github.com/PeachScript/vue-infinite-loading): An infinite loading/scroll plugin for Vue.js, support any scrollable element. By [@PeachScript](https://github.com/PeachScript)
- [vue-swipe](https://github.com/ElemeFE/vue-swipe): touch slider component for Vuejs [@ElemeFE](https://github.com/ElemeFE)
- [vue-loadmore](https://github.com/ElemeFE/vue-loadmore): two-direction mobile pull-to-refresh component for Vuejs [@ElemeFE](https://github.com/ElemeFE)
- [vue-tree-view](https://github.com/10quality/vue-tree-view): Tree View component for Vuejs [@10quality](https://github.com/10quality)
- [vue-swiper](https://github.com/weilao/vue-swiper): Swiper component. Easy to use. [@weilao](https://github.com/weilao)
- [vue-peity](https://github.com/fundon/vue-peity): A Vue version of an excellent [peity](https://github.com/benpickles/peity) library for beautiful mini <svg> graphs, by [@fundon](https://github.com/fundon)
- #### i18n
- [**vue-i18n ★164**](https://github.com/kazupon/vue-i18n): Internationalization plugin by @kazupon <sup>1.0, 2.0-pre-alpha compatible</sup>
- [vue-localize](https://github.com/Saymon-biz/vue-localize): Internationalization plugin for vue.js based applications
- [vue-i18n ★32](https://github.com/Haixing-Hu/vue-i18n): A plugin providing a global interface used to localize internationalized messages used in the application. By @Haixing-Hu
- [vue-i18n ★5](https://github.com/jinzhe/vue-i18n): Internationalization plugin by @jinzhe<sup>1.x</sup>
- [vue-locale ★9](https://github.com/sebastian-software/vue-locale): Advanced localization support for VueJS by @sebastiansoft
- [vue-jade-editor ★0](https://github.com/zxdong262/vue-jade-editor): a online jade(pug) editor plugin by [@zxdong262](https://github.com/zxdong262)
- #### Examples
- [Starter Application with JWT Auth + sample backend API in Laravel](http://forum.vuejs.org/topic/39/starter-application-with-jwt-auth-sample-backend-api)
- [Node Webkit + Vue example ★34](https://github.com/brandonjpierce/node-webkit-boilerplate) by @brandonjpierce
- [Vue Samples ★18](https://github.com/superlloyd/VueSamples) by @superlloyd
- [HackerNews clone with vue.js + vue-router ★2](https://github.com/kazupon/vue-router-hackernews) by @kazupon
- [**Electron + Vue example ★145**](https://github.com/bradstewart/electron-boilerplate-vue) by @bradstewart
- [Single page application example (Vue + Voie)](https://github.com/inca/voie-example) by [Boris Okunskiy](https://github.com/inca)
- [Begin - Task Manager SPA written in Vue + Lumen ★10](https://github.com/rajabishek/begin) by [Raj Abishek](https://github.com/rajabishek)
- [Vue Mini Shop ★10](https://github.com/BosNaufal/vue-mini-shop) by [BosNaufal](https://github.com/BosNaufal)
- [Vue SoundCloud ★12](https://github.com/mul14/vue-soundcloud) by [mul14](https://github.com/mul14)
- [Feature Requests (Laravel + Vue Combo)](https://github.com/haydenbbickerton/feature-requests-app) by [haydenbbickerton](https://github.com/haydenbbickerton)
- [Vue Cookbook (Vue1.0 + express) ★65](https://github.com/yjj5855/node-vue-server-webpack) by [@yjj5855](https://github.com/yjj5855): A demo first screen rendering of a service
- [Vuejs Starter Kit] (https://github.com/MetinSeylan/VuejsStarterKit) modern starter kit by [MetinSeylan](https://github.com/MetinSeylan)
- [Strong Together](https://github.com/websemantics/strong-together) - A starter project to build single page Vue.js apps as stand-alone or for Laravel / Laravel Spark projects, based on Browserify and Semantic-ui) by [WebSemantics](https://github.com/websemantics)
- [vuetest: an ad admin web with user auth, bootstrap ui, uploader, WYSIWYG editor in iframe](https://github.com/sjerrys/vuetest)
- [vue-shopping ★105](https://github.com/andylei18/vue-shopping) by [andylei18](https://github.com/andylei18)
- [Vue-cnodejs ★962](https://github.com/shinygang/Vue-cnodejs) by [@shinygang](https://github.com/shinygang)
- #### Boilerplates
- [Boilerplate for Vue.js plugin ★16](https://github.com/kazupon/vue-plugin-boilerplate) by @kazupon <sup>vue-cli compatible</sup>
- [Boilerplate for Vue.js & Atom Electron ★33](https://github.com/rodzzlessa24/vue-electron) by @rodzzlessa24
- [Boilerplate for single page applications](https://github.com/sebastian-software/modern-spa-boilerplate) by @sebastiansoft
- [Boilerplate for SPAs use vuex & vue-router ★6](https://github.com/crossjs/plato) by @crossjs
- [electron-vue](https://github.com/SimulatedGREG/electron-vue) by @SimulatedGREG
- #### Scaffolding
- [**vue-cli ★569**](https://github.com/vuejs/vue-cli): official CLI for scaffolding Vue.js projects.
- [Vue generator ★64](https://github.com/BirdEggegg/generator-vuejs): a simple yeoman generator for Vue by @BirdEggegg
- [VENM stack yeoman generator ★35](https://github.com/jfelsinger/generator-venm) by @jfelsinger
- [Grail Yeoman Generator ★9](https://github.com/mustardamus/generator-grail): a advanced yeoman generator for a modern modular one page web app, extendable with Vue.js alongside other nice tools
- [**VuePack ★158**](https://github.com/egoist/vuepack): A modern starter for Vue and Webpack by @egoist
- [VueWebgulp ★32](https://github.com/rodzzlessa24/vue-webgulp): A skeleton app using Vuejs, Gulp, and Webpack by @rodzzlessa24
- [Vuetober ★21](https://github.com/scottbedard/oc-vuetober-theme): SPA scaffolding for October CMS
- [vue-go-cli ★2](https://github.com/rodzzlessa24/vue-go-cli) - a CLI tool for scaffolding new projects generating components, services, and mixins.
- [Brunch with Vue ★9](https://github.com/nblackburn/brunch-with-vue) - A skeleton application utilizing vue, vuex, vue-resource and vue-router.
- #### Integrations
- [Vue for Meteor ★74](https://github.com/zhouzhuojie/meteor-vue) by @zhouzhuojie
- [ScalaJS bindings for Vue.js ★22](https://github.com/fancellu/scalajs-vue) by @fancellu
- [Socketize Backend ★6](https://github.com/Socketize/vue.js-plugin): Sync your model data to Socketize backend automatically. By [@Socketize](https://github.com/Socketize)
- [Vue-Meteor-Data ★12](https://github.com/Grottolabs/vue-meteor-data) Two-way-reactivity mixin for Vue and Meteor by @JakobRosenberg
- [Vue Proerty Decorator ★7](https://github.com/kaorun343/vue-property-decorator): Property Decorators for Vue.js by @kaorun343
- [Vue-Typed](https://github.com/budiadiono/vue-typed): The vue-class-component in typescript favor by @budiadiono
- [Vue as a Meteor UI layer](https://github.com/Akryum/meteor-vue-component): Packages to integrate vue in your meteor project as first-class citizen (with single-file components & apollo support) by @Akryum
- #### General Plugins/Directives
- [vue-element ★73](https://github.com/vuejs/vue-element): Register real custom elements with Vue.
- [**vue-touch ★220**](https://github.com/vuejs/vue-touch): Hammer.js wrapper directives for touch gestures. (Updated for 1.0!)
- [vue-animated-list ★88](https://github.com/vuejs/vue-animated-list): A Vue.js plugin for easily animating `v-for` rendered lists.
- [Vue placeholder directives ★46](https://github.com/lithiumjake/vue-placeholders) by @lithiumjake
- [Vue in viewport detection directive ★27](https://github.com/holic/vue-viewport) by @holic
- [Vue once directive ★10](https://github.com/kewah/vue-once) by @kewah
- [Vue Modified Directive ★10](https://github.com/KyleRoss/vue-modified) by @KyleRoss
- [Maintain scroll position on page changes ★16](https://github.com/mark-hahn/vue-keep-scroll) by @mark-hahn
- [vue-titlecase ★9](https://github.com/Haixing-Hu/vue-titlecase): A plugin providing a global filter and an instance method used to titlecase (different from capitalize) strings. By @Haixing-Hu
- [vue-format ★9](https://github.com/Haixing-Hu/vue-format): A plugin providing a global filter and an instance method used to format messages with arguments. By @Haixing-Hu
- [vue-clickaway ★33](https://github.com/simplesmiler/vue-clickaway): Assign a method to be called whenever user clicks away from the element. By @simplesmiler
- [vue-focus ★31](https://github.com/simplesmiler/vue-focus): Manage input focus in the MVVM-friendly way. By @simplesmiler
- [vue-transfer-dom ★18](https://github.com/rhyzx/vue-transfer-dom): Transfer DOM to another location. by @rhyzx
- [vue-lazyload ★60](https://github.com/hilongjw/vue-lazyload): lazyloading images. by @hilongjw
- [v-touch ★5](https://github.com/didierfranc/v-touch): The easiest way to use Hammer.js with Vue.js and use touch gestures. by [@didierfranc](https://github.com/didierfranc) <sup>Vue.js 1.x</sup>
- [vue-mixins ★9](https://github.com/paulpflug/vue-mixins) A collection of mixins aimed to replace some jQuery functionality
- [vue-filters ★2](https://github.com/paulpflug/vue-filters) A collection of filters
- [vue-round-filter ★0](https://github.com/rascada/vue-round-filter) filter for rounding with whichever decimal accuracy
- [vue-paginate ★40](https://github.com/TahaSh/vue-paginate) A simple plugin to use pagination in vue.js. by @TahaSh
- [vue-super ★5](https://github.com/rpkilby/vue-super) A simple plugin to call methods on parent components.
- [vue-deepstream ★6](https://github.com/arexio/vue-deepstream) Plugin to simplify event subscription and event trigger when using [deepstream.io](https://deepstream.io/)
- [vue-plain ★1](https://github.com/Coffcer/vue-plain) Plugin to get plain object from vue getter/setter object.
- [vue-calc-input ★1](https://github.com/BosNaufal/vue-calc-input) Vue directive to make a calculator input behavior by [@BosNaufal](https://github.com/BosNaufal)
- [vue-move-dom ★1](https://github.com/BosNaufal/vue-move-dom) Vue Directive to move the DOM without losing all the VM data, event, etc. by [@BosNaufal](https://github.com/BosNaufal)
- [vue-animate ★10](https://github.com/haydenbbickerton/vue-animate): Use [Animate.css](https://github.com/daneden/animate.css "Animate.css") with Vue.js transitions. By [@haydenbbickerton](https://github.com/haydenbbickerton)
- [vue-sortable ★19](https://github.com/sagalbot/vue-sortable): A lightweight directive for reorderable drag-and-drop lists using [RubaXa/Sortable](https://github.com/RubaXa/Sortable). By [@sagalbot](https://github.com/sagalbot)
- [vue-loading ★14](https://github.com/Coffcer/vue-loading): Vue directive, show loading block in any element. By [@coffcer](https://github.com/Coffcer)
- [vue-gesture ★6](https://github.com/mlyknown/vue-gesture):touch events plugin for Vue.js.You can v-gesture directive,and directive auguments can use a tap, swipe, etc.
- [vue-lazyload-img ★6](https://github.com/JALBAA/vue-lazyload-img) another image lazyload plugin for Vue, especially optimized for mobile browser. By [@JALBAA](https://github.com/JALBAA)
- [vue-helmet](https://github.com/miaolz123/vue-helmet) : Like [react-helmet](https://github.com/nfl/react-helmet), a HTML head manager for Vue, edit the page title easily. By [@miaolz123](https://github.com/miaolz123)
- [vue-socket.io ★37](https://github.com/MetinSeylan/Vue-Socket.io) : [socket.io-client](http://socket.io) plugin for Vuejs, manage socket.io event in Vue vm. By [@MetinSeylan](https://github.com/MetinSeylan)
- [vue-clipboard](https://github.com/xiaokaike/vue-clipboard)
- [vue-dragula](https://github.com/Astray-git/vue-dragula): Vue wrapper for [dragula](https://github.com/bevacqua/dragula)
- [vue-infinite-scroll](https://github.com/ElemeFE/vue-infinite-scroll): infinite scroll directive for Vuejs [@ElemeFE](https://github.com/ElemeFE)
- [vue-toast-mobile](https://github.com/ElemeFE/vue-toast-mobile): mobile toast plugin for Vuejs [@ElemeFE](https://github.com/ElemeFE)
- [vue-indicator](https://github.com/ElemeFE/vue-indicator): mobile loading indicator plugin for Vuejs [@ElemeFE](https://github.com/ElemeFE)
- [vue-msgbox](https://github.com/ElemeFE/vue-msgbox): message box (like Sweet Alert) plugin for Vuejs [@ElemeFE](https://github.com/ElemeFE)
- [vue-scroll](https://github.com/suguangwen/vue-scroll): add scroll up function and optimize the origin algorithm. Reference to ElemeFE/vue-infinite-scroll. [@suguangwen](https://github.com/suguangwen)
- #### SEO
- [vue-head](https://github.com/ktquez/vue-head) - Manager the meta information of the head tag, a simple and easy way
- #### Talks
- [Vue unit tests](http://www.slideshare.net/coulix/vuejs-testing) by [coulix](https://github.com/coulix)
### Projects Using Vue.js
- #### Open Source
- [PageKit](http://pagekit.com/) <sup>[[Source]](https://github.com/pagekit/pagekit)</sup>
- [p5.js editor](http://p5js.org/download/) <sup>[[Source]](https://github.com/processing/p5.js-editor)</sup>
- [Python China](https://python-china.org) <sup>[[Source]](https://github.com/zerqu/qingcheng)</sup>
- [npmcharts.com](http://npmcharts.com) <sup>[[Source]](https://github.com/cheapsteak/npmcharts.com)</sup>
- [Todolist ★11](https://github.com/Memkits/todolist) by @jiyinyiyong
- [Dashboard framework ★40](https://github.com/thelinuxlich/vue-dashing-js) by @thelinuxlich
- [a simple notepad ★43](https://github.com/sapjax/fewords)
- [**FilterBlend ★135**](https://github.com/ilyashubin/FilterBlend): CSS blend modes and filters playground by @ilyashubin
- [Koel](http://koel.phanan.net): Music streaming server
- [Selection Translator](https://chrome.google.com/webstore/detail/ikhdkkncnoglghljlkmcimlnlhkeamad) <sup>[[Source]](https://github.com/lmk123/crx-selection-translate)</sup> A Chrome Extension let browse any language websites has never been easier.
- [SwitchHosts](https://oldj.github.io/SwitchHosts/) <sup>[[Source]](https://github.com/oldj/SwitchHosts)</sup> Switch hosts quickly.
- [**RSS Reader ★139**](https://github.com/mrgodhani/rss-reader) Simple RSS Reader made using atom electron and vue.js.
- [**Gokotta ★124**](https://github.com/Zhangdroid/Gokotta): A simple music player built by electron and vue.
- [Coffeebreak ★38](https://github.com/Kocisov/coffeebreak) Tool for live editing CSS components
- [BaiduHui: Push Notification - 百度惠:实时推送优惠](https://chrome.google.com/webstore/detail/blcmlhpbpimcnifnkgkfjhhmoolbidik)<sup>[[Source]](https://github.com/DanielZhu/Magnet-baiduhui-chrome-extension)</sup> A Chrome Extension allows user use Baidu-Hui services and recieves the push notification about the latest discount infos.
- [CoPilot](http://copilot.mistergf.io/) - An admin portal based on AdminLTE with vue.js integration. <sup>[[Source]](https://github.com/misterGF/CoPilot)</sup>
- [Retrospectify](http://pepf.nl/retrospective/)<sup>[[Source]](https://github.com/pepf/retrospectify)</sup> A simple tool for doing collaborative retrospectives in agile teams.
- [jade-press](http://jade-press.org/)<sup>[[Source]](https://github.com/jade-press/jade-press)</sup> cms based on mongodb, nodejs, koa, vue and more.
- [astralapp](http://astralapp.com/)<sup>[[source]](https://github.com/astralapp/astral)</sup> Organize Your GitHub Stars With Ease.
- [liqi.newtab - 利器 · 灵感生成器 New Tab](https://chrome.google.com/webstore/detail/lidppokaooioojchghdjekhcgdjkkohe)<sup>[[Source]](https://github.com/DanielZhu/liqi.io.chrome-newtab.git)</sup> A New Tab Chrome Extension gives you a moment to read the good quotations with their recommanded tools which were excerpted from the interviews made by liqi.com, you can always find your favorites.
- #### Apps/Websites
- [Laravel Spark](https://spark.laravel.com/)
- [Vice Video](https://video.vice.com/)
- [Formlets](https://www.formlets.com)
- [Laracasts](https://laracasts.com)
- [Sainsbury's Entertainment onboarding platform](https://register.sainsburysentertainment.co.uk/)
- [CUUSOO](https://cuusoo.com)
- [esa.io](https://esa.io/)
- [N1.ru](http://n1.ru)
- [稀土掘金](http://gold.xitu.io)
- [Prague Airport](http://www.prague-airport.com/)
- [Expressionery](https://www.expressionery.com)
- [BUYIT](http://bt.workswell.com.au) by @[Workswell Australia](http://workswell.com.au)
- [Portfolio Site](http://corentinbac.com/) by Corentin Bac
- [Compare Prices by Currys & PCWorld](https://play.google.com/store/apps/details?id=uk.co.dixons.compareprices&hl=en)
- [Grammarly](https://grammarly.com/) mistake-free writing service
- [Laravist](https://laravist.com/)
- [Atiiv](https://atiiv.com) An app aimed for personal trainers and their clients.
- [Embalses!](http://embalses.azurewebsites.net/) A tool to report water dam level using the U.S. Geological Survey database.
- [TravelMap](http://clem.travelmap.fr) A simple way for travellers to create a blog based on a Map
- [movienote.org](http://movienote.org) A app which help users maintaining a list about what movie they have watched.
- [Proper Cloth Shirt Builder](https://propercloth.com/design-a-shirt) Custom shirt builder
- [CheckIt ★0](https://github.com/julesbou/checkit)
- [Reddit News ★27](https://github.com/Mati365/reddit-news) A browser extension which show notifications and news from reddit
- [Powerpuff Yourself by Cartoon Networks](https://www.powerpuffyourself.com/)
- [小桃酱](https://app.xiaotaojiang.com/)
- [金哲博客](http://jinzhe.net/)
- [cloudradioo](https://github.com/devfake/cloudradioo) Web app that plays randomly all top 50 songs from the soundcloud charts
- [Zova](https://zova.com/)
- [风投侠](https://vcshare.cn/)
- [COPA 2016](http://www.ca2016.com/)
- [Subordination](http://subordination.cu.cc/) A desktop app for translating and editing subtitles
- [SPA Blog](http://ktquez.surge.sh/) Personal blog and portfolio site [see repository](https://github.com/ktquez/ktquez.com)
- #### Interactive Experiences
- [Jean-Pierre Morin | 1700 LAPOSTE](http://1700laposte.com/jean-pierre-morin/) - by Écorce & KFFEIN
- [Facebook NewsFeed](https://newsfeed.fb.com/)
- [YouTube AdBlitz 2016](https://adblitz.withyoutube.com/#!/advertisers)
- [Blood, Sweat and Tools](http://bloodsweatandtools.discovery.ca/gamebench/) - by Jam3, led by @cheapsteak
- [Omnisense Experience](http://omnisense.net) - *Awwwards & FWA SOTD, FWA Cutting Edge. Awwwards SOTM nominee.*
- [Being the Bear](https://danslapeaudelours.canalplus.fr/en/) - *Awwwards & FWA SOTD, FWA Cutting Edge, Awwwards SOTM nominee.*
- [Heineken Star Experience](http://www.starexperience.fr/) - *FWA SOTD.*
- [Louis Ansa Website (portfolio)](http://louisansa.com) - *Awwwards SOTD, FWA nominee.*
- [Digital For All](http://www.digitalforallnow.com/en/experience)
- [Djeco.com](http://www.djeco.com/en)
- #### Enterprise Usage
- Alibaba
- Baidu
- Sina Weibo
- Xiaomi
- Ele.me
- Optimizely
- Expedia
- UCWeb
- Line
- Nintendo
- Celtra
- Sainsbury's
- [AREX](https://arex.io/)
- DJI
## License
[![CC0](https://i.creativecommons.org/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)
For detailed explanation on how things work, consult the [docs for vue-loader](http://vuejs.github.io/vue-loader).

50
app/lib/parser.js Normal file
View file

@ -0,0 +1,50 @@
import fs from 'fs'
import path from 'path'
import yaml from 'js-yaml'
import somebody from 'somebody'
import chalk from 'chalk'
const opts = {
root: `${process.cwd()}/awesomeness`,
output: `${process.cwd()}/app/site/dist/data.js`
}
const json = JSON.stringify(parseDir(opts.root).children)
fs.writeFile(opts.output, `window.data = ${json};`, {}, err => {
if (err) {
console.log(chalk.red(err))
return
}
console.log(chalk.green(`Data generated at ${opts.output}.`))
})
function parseDir(filename) {
if (filename[0] === '.') {
return
}
const stats = fs.lstatSync(filename)
const info = {
name: path.basename(filename)
}
if (stats.isDirectory()) {
info.type = 'group'
info.children = fs.readdirSync(filename).map(child => {
return parseDir(`${filename}/${child}`)
})
return info
}
if (stats.isFile() && path.extname(filename) === '.md') {
info.type = 'item'
info.content = yaml.safeLoad(fs.readFileSync(filename, 'utf8'))
if (info.content.author) {
info.content.author = somebody.parse(info.content.author)
}
}
return info
}

16
app/site/index.html Normal file
View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Awesome Vue</title>
<meta name="description" content="A curated list of awesome things related to Vue.js">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600|Roboto Mono' rel='stylesheet' type='text/css'>
</head>
<body>
<div id="app"></div>
<script src="dist/data.js"></script>
<script src="dist/build.js"></script>
</body>
</html>

329
app/site/src/App.vue Normal file
View file

@ -0,0 +1,329 @@
<template>
<div id="app">
<section class="left">
<div class="wrap">
<hgroup>
<h1><span class="thin">Awesome</span> Vue.js</h1>
<h2 class="tagline thin">A curated list of awesome things related to
<a href="https://vuejs.org/">Vue.js</a></h2>
</hgroup>
<form>
<label>
<input
type="search"
placeholder="type to filter"
v-model="q"
id="seachField"
autofocus="autofocus">
<a :href="`#${q}`"
v-show="q.trim()"
title="Link to this search"
class="link">
<i class="fa fa-link"></i>
</a>
</label>
</form>
<explore></explore>
<footer>
<a href="https://github.com/vuejs/awesome-vue"
title="Contribute on GitHub"
class="github">
<i class="fa fa-github"></i>
</a>
</footer>
</div>
</section>
<div class="right">
<div class="wrap">
<group v-for="g in groups" :group="g"></group>
</div>
</div>
</div>
</template>
<script>
import _ from 'lodash'
import { event } from './utils'
import group from './components/Group.vue'
import explore from './components/Explore.vue'
export default {
components: { group, explore },
data () {
return {
groups: window.data,
q: ''
}
},
watch: {
q() {
let q = this.q.trim()
if (q === 'everything') {
q = ''
}
if (!q) {
this.groups = window.data
return
}
this.groups = this.filter(_.cloneDeep(window.data), q)
}
},
created() {
event.on('tag-selected', tag => {
this.q = tag[0]
// Set the focus into the search field. Some little UX doesn't kill.
this.$nextTick(() => {
document.getElementById('seachField').focus()
})
})
if (window.location.hash) {
this.q = /^#(.*)/.exec(window.location.hash)[1].toLowerCase()
}
},
methods: {
/**
* Filter our awesome data.
* @param {Array.<Object>} groups The groups to apply filtering on
* @param {String} q
* @return {Array}
*/
filter(groups, q) {
q = q.toLowerCase()
const res = []
_.each(groups, g => {
// If the group name contains the keyword, it passes the test.
if (g.name.toLowerCase().indexOf(q) !== -1) {
res.push(g)
return
}
// Keep a copy of the original children and work out the filtered ones.
const children = g.children
g.children = []
// Recursively process the subgroups, if any.
const subGroups = _.filter(children, { type: 'group' })
if (subGroups.length) {
g.children = this.filter(subGroups, q)
}
// Apply our filter logic on the items.
const items = _.filter(children, item => {
return item.type === 'item'
&& this.buildFilterHaystack(item).indexOf(q) !== -1
})
g.children = _.concat(g.children, items)
if (g.children.length) {
res.push(g)
}
})
return res
},
/**
* Build a "haystack" of keywords to filter.
* @param {Object} item
* @return {String}
*/
buildFilterHaystack(item) {
let haystack = ''
_.each(['name', 'description', 'url'], p => {
if (item.content[p]) {
haystack += ` ${item.content[p]}`
}
})
if (item.content.author) {
haystack += ` ${item.content.author.name}`
}
return _.reduce(item.content.tags, (h, tag) => `${h} ${tag}`, haystack)
.toLowerCase()
.trim()
}
}
}
</script>
<style lang="sass">
body, html {
font: 400 15px/22px "Source Sans Pro", sans-serif;
color: #34495e;
height: 100%;
}
*, *::before, *::after {
box-sizing: border-box;
}
a {
color: #3cb982;
text-decoration: none;
transition: color .3s;
&:hover {
color: darken(#3cb982, 20%);
}
}
.thin {
font-weight: 300;
}
#app {
display: flex;
flex-flow: row wrap;
height: 100%;
overflow: hidden;
.left, .right {
width: 50%;
padding: 64px;
}
.left {
text-align: right;
border-right: 1px solid #ebebeb;
display: flex;
align-items: center;
justify-content: flex-end;
background: #fcfcfc;
hgroup {
h1 {
font-size: 2.7rem;
margin-bottom: 1.6rem;
}
h2 {
font-size: 1.3rem;
margin-bottom: 2.4rem;
}
}
form {
margin-bottom: 1.2rem;
label {
display: inline-block;
overflow: hidden;
position: relative;
}
$searchHeight: 36px;
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
display: none;
}
input[type="search"] {
-webkit-appearance: none;
border: 1px solid #ebebeb;
height: $searchHeight;
line-height: $searchHeight;
border-radius: $searchHeight/2;
width: 234px;
outline: none;
background: #fff url(./assets/search.png) 8px no-repeat;
background-size: 24px;
padding: 0 40px 0 32px;
font: 300 1rem "Source Sans Pro", sans-serif;
transition: border-color .3s;
&:focus {
border-color: #42b983;
}
}
.link {
background: #42b983;
background: linear-gradient(to bottom, #42b983 0%,#2a8f61 100%);
color: #fff;
height: $searchHeight;
position: absolute;
right: 0;
top: 0;
border-radius: 0 $searchHeight/2 $searchHeight/2 0;
line-height: $searchHeight;
padding: 0 12px;
&:hover {
background: linear-gradient(to top, #42b983 0%,#2a8f61 100%);
}
&:active {
background: linear-gradient(to top, #42b983 0%, darken(#2a8f61, 10%) 100%);
box-shadow: inset -2px 3px 4px rgba(0,0,0,.2);
}
}
}
}
.right {
overflow: auto;
.wrap {
max-width: 480px;
}
}
}
@keyframes soho {
0% {
transform: rotate(0);
}
50% {
transform: rotate(-8deg);
}
100% {
transform: rotate(0);
}
}
footer {
margin-top: 4rem;
.github {
color: #34495e;
font-size: 2rem;
width: 149px;
display: inline-block;
position: relative;
&::after {
content: "";
display: block;
width: 100%;
height: 27px;
background: url(./assets/look-here.png) no-repeat;
background-size: 149px;
position: absolute;
right: -5px;
transform: rotate(-4deg);
transform-origin: 100% 0;
}
&:hover::after {
animation: soho 1s ease-in-out infinite;
}
}
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,62 @@
<template>
<section class="explore">
<h1 class="thin">Explore</h1>
<ul>
<li v-for="tag in coolStuff">
<a :href="`#${tag}`"
@click="filterByTag(tag)">{{ tag }}</a>
</li>
</ul>
</section>
</template>
<script>
import { filterByTag } from '../mixins'
export default {
mixins: [filterByTag],
data() {
return {
coolStuff: [
'tutorials',
'official examples',
'boilerplates',
'websites',
'projects using Vue.js',
'everything'
]
}
}
}
</script>
<style lang="sass" scoped>
.explore {
font-size: 1.25rem;
h1 {
margin-bottom: .4rem;
}
ul {
max-width: 274px;
display: inline-block;
font-size: 1rem;
}
li {
display: inline-block;
&::before {
content: "·";
color: #7f8c8d;
margin: 0 5px;
}
&:first-child::before {
display: none;
}
}
}
</style>

View file

@ -0,0 +1,39 @@
<template>
<section>
<h1>{{ group.name }}</h1>
<group v-for="g in subGroups" :group="g"></group>
<item v-for="i in items" :item="i.content"></item>
</section>
</template>
<script>
import _ from 'lodash'
import item from './Item.vue'
export default {
props: ['group'],
components: { item },
computed: {
items() {
return _.filter(this.group.children, { type: 'item' })
},
subGroups() {
return _.filter(this.group.children, { type: 'group' })
}
}
}
</script>
<style lang="sass" scoped>
section {
> h1 {
font-size: 2rem;
margin: 1.5rem 0 1.7rem;
}
> section h1 {
font-size: 1.6rem;
margin: 1.2rem 0;
}
}
</style>

View file

@ -0,0 +1,75 @@
<template>
<article>
<h1>
<a v-if="item.url" :href="item.url">{{ item.name }}</a>
<span v-else>{{ item.name }}</span>
<span class="author thin" v-if="item.author">by
<a v-if="item.author.url" :href="item.author.url">{{ item.author.name }}</a>
<template v-else>{{ item.author.name }}</template>
</span>
</h1>
<p class="thin" v-if="item.description">{{ item.description }}</p>
<footer class="thin" v-if="item.tags">
<ul>
<li v-for="tag in item.tags">
<a :href="`#${tag}`" @click="filterByTag(tag)">{{ tag }}</a>
</li>
</ul>
</footer>
</article>
</template>
<script>
import { filterByTag } from '../mixins'
export default {
props: ['item'],
mixins: [filterByTag]
}
</script>
<style lang="sass" scoped>
article {
border-bottom: 1px solid #efefef;
padding: 17px 0;
&:first-of-type {
padding-top: 0;
}
h1 {
font-size: 1.2rem;
margin-bottom: .5rem;
&:only-child {
margin-bottom: 0;
}
}
footer {
margin-top: .8rem;
ul {
&::before {
font-family: FontAwesome;
content: "\f02c";
color: #7f8c8d;
margin-right: 6px;
}
}
li {
display: inline-block;
&::before {
content: "·";
color: #7f8c8d;
margin: 0 5px;
}
&:first-child::before {
display: none;
}
}
}
}
</style>

13
app/site/src/main.js Normal file
View file

@ -0,0 +1,13 @@
import Vue from 'vue'
import App from './App.vue'
import Group from './components/Group.vue'
import { event } from './utils'
new Vue({
el: '#app',
render: h => h(App),
created() {
Vue.component('group', Group)
event.init()
}
})

View file

@ -0,0 +1,11 @@
import { event } from '../utils'
const filterByTag = {
methods: {
filterByTag(tag) {
event.emit('tag-selected', tag)
}
}
}
export { filterByTag }

View file

@ -0,0 +1 @@
export * from './filterByTag'

View file

@ -0,0 +1,23 @@
import Vue from 'vue'
const event = {
bus: null,
init() {
if (!this.bus) {
this.bus = new Vue()
}
return this.bus
},
emit(name, ...args) {
this.bus.$emit(name, args)
},
on(name, func) {
this.bus.$on(name, func)
}
}
export { event }

View file

@ -0,0 +1 @@
export * from './event'

BIN
assets/design.psd Normal file

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,3 @@
---
name: Official Forum
url: http://forum.vuejs.org/

View file

@ -0,0 +1,3 @@
---
name: Gitter Chat Room
url: https://gitter.im/vuejs/vue

View file

@ -0,0 +1,3 @@
---
name: Twitter
url: https://twitter.com/vuejs

View file

@ -0,0 +1,4 @@
---
name: vue-requests
url: https://github.com/vuejs/vue-requests
description: Request a Vue.js module you wish existed or get ideas for modules

View file

@ -0,0 +1,3 @@
---
name: API Reference
url: http://vuejs.org/api/

View file

@ -0,0 +1,3 @@
---
name: Official Guide
url: http://vuejs.org/guide/

View file

@ -0,0 +1,3 @@
---
name: Release Notes
url: https://github.com/vuejs/vue/releases

View file

@ -0,0 +1,3 @@
---
name: GitHub Repo
url: https://github.com/vuejs/vue

View file

@ -0,0 +1,5 @@
---
name: Dashboard Framework
url: https://github.com/thelinuxlich/vue-dashing-js
author: "@thelinuxlich (https://github.com/thelinuxlich)"
description: The dashboard framework Dashing reimplemented in Node.js + Vue.js

View file

@ -0,0 +1,5 @@
---
name: fewords
url: https://github.com/sapjax/fewords
author: "@sapjax (https://github.com/sapjax)"
description: A simple notepad that supports Markdown.

View file

@ -0,0 +1,5 @@
---
name: FilterBlend
url: https://github.com/ilyashubin/FilterBlend
author: "@ilyashubin (https://github.com/ilyashubin/FilterBlend)"
description: CSS blend modes and filters playground

View file

@ -0,0 +1,10 @@
---
name: koel
url: http://koel.phanan.net
author: Phan An (http://phanan.net)
description: A personal music streaming server that works.
tags:
- music
- streaming
- electron
- laravel

View file

@ -0,0 +1,5 @@
---
name: npmcharts
url: http://npmcharts.com/
author: Chang Wang (https://twitter.com/CheapSteak)
description: Compare npm packages and spot download trends.

View file

@ -0,0 +1,4 @@
---
name: p5.js Editor
url: http://p5js.org/download/
description: p5.js a JS client-side library for creating graphic and interactive experiences, based on the core principles of Processing.

View file

@ -0,0 +1,4 @@
---
name: PageKit
url: http://pagekit.com/
description: A modern Open Source CMS. Intuitive. Modular. Flexible.

View file

@ -0,0 +1,3 @@
---
name: Python China
url: https://python-china.org/

View file

@ -0,0 +1,5 @@
---
name: Todolist
url: https://github.com/Memkits/todolist
author: "@jiyinyiyong (https://github.com/jiyinyiyong)"
description: A stack-based personal Todo app.

View file

@ -0,0 +1,4 @@
---
name: Vue.js Screencasts
url: https://laracasts.com/series/learning-vue-step-by-step
author: Laracasts (http://laracasts.com)

View file

@ -0,0 +1,4 @@
---
name: What's New in Vue.js 1.0
url: http://www.sitepoint.com/whats-new-in-vue-js-1-0/
author: Sitepoint

32
package.json Normal file
View file

@ -0,0 +1,32 @@
{
"name": "awesome-vue",
"description": "A curated list of awesome things related to Vue.js",
"author": "An Phan <an@construct.sg>",
"private": true,
"scripts": {
"parse": "babel-node app/lib/parser.js",
"dev": "npm run parse && webpack-dev-server --inline --hot --content-base app/site",
"build": "npm run parse && cross-env NODE_ENV=production webpack --progress --hide-modules"
},
"dependencies": {
"vue": "^2.0.0-alpha.2"
},
"devDependencies": {
"babel-cli": "^6.10.1",
"babel-core": "^6.0.0",
"babel-loader": "^6.0.0",
"babel-preset-es2015": "^6.0.0",
"chalk": "^1.1.3",
"cross-env": "^1.0.6",
"css-loader": "^0.23.1",
"file-loader": "^0.8.4",
"js-yaml": "^3.6.1",
"lodash": "^4.13.1",
"node-sass": "^3.8.0",
"sass-loader": "^3.2.1",
"somebody": "^2.0.0",
"vue-loader": "^9.0.0",
"webpack": "^1.12.2",
"webpack-dev-server": "^1.12.0"
}
}

57
webpack.config.js Normal file
View file

@ -0,0 +1,57 @@
var path = require('path')
var webpack = require('webpack')
module.exports = {
entry: './app/site/src/main.js',
output: {
path: path.resolve(__dirname, './app/site/dist'),
publicPath: '/dist/',
filename: 'build.js'
},
resolveLoader: {
root: path.join(__dirname, 'node_modules'),
},
module: {
loaders: [
{
test: /\.vue$/,
loader: 'vue'
},
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file',
query: {
name: '[name].[ext]?[hash]'
}
}
]
},
devServer: {
historyApiFallback: true,
noInfo: true
},
devtool: '#eval-source-map'
}
if (process.env.NODE_ENV === 'production') {
module.exports.devtool = '#source-map'
// http://vue-loader.vuejs.org/en/workflow/production.html
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
}),
new webpack.optimize.OccurenceOrderPlugin()
])
}