[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8786":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":22,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},8786,"douban","jeneser\u002Fdouban","jeneser","Awesome douban DEMO created with Vue2.x + Vuex + Vue-router + Superagent","https:\u002F\u002Fjeneser.github.io\u002Fdouban",null,"Vue",2297,698,114,4,0,1,60.63,"MIT License",false,"master",true,[5,24,25,26,27,28,29,30,31],"superagent","vue-cli","vue-demo","vue-resoure","vue-router","vue2","vuex","webpack2","2026-06-12 04:00:41","\u003Cp align=\"center\">\n\t\u003Cimg src=\".\u002Fscreenshot\u002Fdouban_logo.png\">\n\u003C\u002Fp>\n\n\u003Cbr>\n\n\u003Cp align=\"center\">\nAwesome douban DEMO created with Vue2.x + Vuex + Vue-router + Superagent\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n\n[![Build Status](https:\u002F\u002Ftravis-ci.org\u002Fjeneser\u002Fdouban.svg?branch=master)](https:\u002F\u002Ftravis-ci.org\u002Fjeneser\u002Fdouban) [![David](https:\u002F\u002Fimg.shields.io\u002Fdavid\u002Fexpressjs\u002Fexpress.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fjeneser\u002Fdouban) [![Codacy Badge](https:\u002F\u002Fapi.codacy.com\u002Fproject\u002Fbadge\u002FGrade\u002Faa2dd7f4191546258edf6e55464d1962)](https:\u002F\u002Fwww.codacy.com\u002Fapp\u002Fjeneser\u002Fdouban?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=jeneser\u002Fdouban&amp;utm_campaign=Badge_Grade) [![Powered](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPowered%20by-vue2%2B-brightgreen.svg)](https:\u002F\u002Fgithub.com\u002Fvuejs\u002Fvue) [![Percentage of issues still open](http:\u002F\u002Fisitmaintained.com\u002Fbadge\u002Fopen\u002Fjeneser\u002Fdouban.svg)](http:\u002F\u002Fisitmaintained.com\u002Fproject\u002Fjeneser\u002Fdouban \"Percentage of issues still open\") [![Average time to resolve an issue](http:\u002F\u002Fisitmaintained.com\u002Fbadge\u002Fresolution\u002Fjeneser\u002Fdouban.svg)](http:\u002F\u002Fisitmaintained.com\u002Fproject\u002Fjeneser\u002Fdouban \"Average time to resolve an issue\") [![PR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPR-welcome-brightgreen.svg)](https:\u002F\u002Fgithub.com\u002Fjeneser\u002Fdouban\u002Fpulls) [![license](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-brightgreen.svg)](https:\u002F\u002Fgithub.com\u002Fjeneser\u002Fdouban\u002Fblob\u002Fmaster\u002FLICENSE)\n\n\u003C\u002Fp>\n\u003Cbr>\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\".\u002Fscreenshot\u002Fdouban_home.gif\" >\n    \u003Cimg src=\".\u002Fscreenshot\u002Fdouban_movie.gif\" >\n    \u003Cbr>\n     \u003Cimg src=\".\u002Fscreenshot\u002Fdouban_login.gif\" >\n    \u003Cimg src=\".\u002Fscreenshot\u002Fdouban_search.gif\" >\n    \u003Cbr>\u003Cbr>\n    \u003Cstrong>......\u003C\u002Fstrong>\n    \u003Cbr>\n\t \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fjeneser.github.io\u002Fdouban\u002F\">Live Demo\u003C\u002Fa>\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n## Features\n\n- Vue + vue-router + vuex + Superagent working together\n- Vuex divide store into modules\n- Modern JavaScript syntax with ES6\n- vue-cli webpack template\n- Single-file Vue Components\n- API request seperated\n- Real remote API and some mock data\n- eslint linter integration\n- Hot-reload in development\n- Css with Sass\n- No third party CSS framework\n- Complex and different style view logic\n- Infinite loading list\n- Complete search logic\n- Custom components like List, Rating, Tags ...\n- Authentication with JSON Web Tokens\n- Complete register login logic\n......\n\n\n## Build Setup\n\n``` bash\n# install dependencies\nnpm install\n\n# serve with hot reload at localhost:8080\nnpm run dev\n\n# build for production with minification\nnpm run build\n\n```\n\nFor detailed explanation on how things work, checkout the [guide](http:\u002F\u002Fvuejs-templates.github.io\u002Fwebpack\u002F) and [docs for vue-loader](http:\u002F\u002Fvuejs.github.io\u002Fvue-loader).\n\n## Libraries\n\n- [Vuex](https:\u002F\u002Fvuex.vuejs.org) : Centralized State Management for Vue.js\n- [Vue-router](http:\u002F\u002Frouter.vuejs.org\u002F) : The official router for Vue.js\n- ~~[vue-resource](https:\u002F\u002Fgithub.com\u002Fpagekit\u002Fvue-resource) : The HTTP client for Vue.js~~\n- [Superagent](https:\u002F\u002Fgithub.com\u002Fvisionmedia\u002Fsuperagent) : Ajax with less suck - (and node.js HTTP client to match)\n- [vue-infinite-loading](https:\u002F\u002Fgithub.com\u002FPeachScript\u002Fvue-infinite-loading) : An infinite scroll plugin for Vue.js 1.0 & Vue.js 2.0.\n- [normalize.css](https:\u002F\u002Fgithub.com\u002Fnecolas\u002Fnormalize.css) :  A collection of HTML element and attribute style-normalizations\n- [vue-scroll-behavior](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fvue-scroll-behavior) :  Completely customize the scroll behavior on route navigation\n\n## API\n\nDouban Api V2\n- Basic URI : `https:\u002F\u002Fapi.douban.com\u002FV2\u002F`\n- Online activities\n  - Activities list : `\u002Fevent\u002Flist?loc=108288&count=&start=`\n  - Single activitie info : `\u002Fevent\u002Fid`\n- Movie\n  - In theaters : `\u002Fmovie\u002Fin_theaters?count=`\n  - Coming soon : `\u002Fmovie\u002Fcoming_soon?count=`\n  - Top 250 : `\u002Fmovie\u002Ftop250?count=`\n  - Single movie info : `\u002Fmovie\u002Fsubject\u002Fid`\n- Book\n  - Search some books : `\u002Fbook\u002Fsearch?q=&count=`\n  - Single book info : `\u002Fbook\u002Fid`\n- Search\n  - Search books : `\u002Fbook\u002Fsearch?q=`\n  - Search movie : `\u002Fmovie\u002Fsearch?q=`\n  - Search music : `\u002Fmusic\u002Fsearch?q=`\n\nMock Douban Backend\n- User Basic URI : `https:\u002F\u002Fdouban.herokuapp.com\u002Fuser\u002F`\n- Register\n  - Path: `\u002Fuser`\n  - method: `POST`\n- Login\n  - Path: `\u002Fuser\u002F:id`\n  - method: `GET`\n\nFor detailed explanation, checkout the [Douban Api V2](https:\u002F\u002Fdevelopers.douban.com\u002Fwiki\u002F?title=api_v2) and [Douban Backend](https:\u002F\u002Fgithub.com\u002Fjeneser\u002Fdouban-backend)\n\n## File Structure\n```\n.\n├── build\n│   ├── build.js\n│   ├── check-versions.js\n│   ├── dev-client.js\n│   ├── dev-server.js\n│   ├── utils.js\n│   ├── vue-loader.conf.js\n│   ├── webpack.base.conf.js\n│   ├── webpack.dev.conf.js\n│   └── webpack.prod.conf.js\n├── config\n│   ├── dev.env.js\n│   ├── index.js\n│   └── prod.env.js\n├── index.html\n├── LICENSE\n├── package.json\n├── README.md\n├── src\n│   ├── App.vue\n│   ├── assets\n│   │   ├── avatar.png\n│   │   ├── book_zw.jpg\n│   │   ├── camera.svg\n│   │   ├── douban-app-logo.png\n│   │   ├── pen.svg\n│   │   ├── promotion_bg.jpg\n│   │   └── user_normal.jpg\n│   ├── components\n│   │   ├── Banner.vue\n│   │   ├── Card.vue\n│   │   ├── DownloadApp.vue\n│   │   ├── Group.vue\n│   │   ├── HeaderBar.vue\n│   │   ├── List.vue\n│   │   ├── Rating.vue\n│   │   ├── Scroller.vue\n│   │   ├── Marking.vue\n│   │   ├── SubNav.vue\n│   │   ├── Tags.vue\n│   │   ├── Types.vue\n│   │   └── UserBar.vue\n│   ├── main.js\n│   ├── router\n│   │   └── index.js\n│   ├── store\n│   │   ├── index.js\n│   │   └── modules\n│   │       ├── activities.js\n│   │       ├── book.js\n│   │       ├── group.js\n│   │       ├── movie.js\n│   │       ├── search.js\n│   │       ├── subject.js\n│   │       └── user.js\n│   └── views\n│       ├── BookView.vue\n│       ├── DetailView.vue\n│       ├── GroupView.vue\n│       ├── HomeView.vue\n│       ├── LoginView.vue\n│       ├── MovieView.vue\n│       ├── PagesView.vue\n│       ├── RegisterView.vue\n│       ├── SearchView.vue\n│       ├── StatusView.vue\n│       ├── SubjectView.vue\n│       └── TalionView.vue\n└── static\n    └── logo.png\n```\n\n## Change log\n\n- Aug 24, 2017:\n  - Merged PR #19\n  - Remove dist\u002F, use tschaub\u002Fgh-pages\n- Aug 11, 2017:\n  - Add dir \u002Fscreenshot.\n  - Update README fix screenshot\n- June 24, 2017:\n  - Update vue-scroll-behavior fix scroll behavior\n- May 28, 2017:\n  - Using superagent\n\n## Contributing\n\n1. Fork it!\n2. Create your feature branch: `git checkout -b my-new-feature`\n3. Commit your changes: `git commit -am 'Add some feature'`\n4. Push to the branch: `git push origin my-new-feature`\n5. Submit a pull request\n\n## Thanks\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FLIANGWEIBIAO\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Favatars2.githubusercontent.com\u002Fu\u002F24608984?v=4&s=460\" width=\"38px\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flizhanjie1314\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Favatars1.githubusercontent.com\u002Fu\u002F15324887?v=4&s=460\" width=\"38px\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffredshare\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Favatars3.githubusercontent.com\u002Fu\u002F765082?v=4&s=460\" width=\"38px\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWerb\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Favatars1.githubusercontent.com\u002Fu\u002F12763277?v=4&s=460\" width=\"38px\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjfliapp\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Favatars2.githubusercontent.com\u002Fu\u002F27725921?v=4&s=460\" width=\"38px\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbluestrings\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Favatars2.githubusercontent.com\u002Fu\u002F6144152?v=4&s=460\" width=\"38px\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsilverpeng\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Favatars2.githubusercontent.com\u002Fu\u002F25680922?v=4&s=460\" width=\"38px\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FKngZhi\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Favatars1.githubusercontent.com\u002Fu\u002F11361147?v=4&s=460\" width=\"38px\">\u003C\u002Fa>\n\n## License\n\n[MIT](https:\u002F\u002Fgithub.com\u002Fjeneser\u002Fdouban\u002Fblob\u002Fmaster\u002FLICENSE) Copyright (c) 2017 [Jeneser](https:\u002F\u002Fjeneser.github.io\u002F)\n","该项目是一个基于豆瓣的优秀演示应用，使用了Vue2.x、Vuex、Vue-router和Superagent等技术构建。其核心功能包括模块化的状态管理、现代JavaScript语法（ES6）、API请求分离以及热重载开发环境。此外，它还集成了自定义组件、无限加载列表、完整的搜索逻辑及用户认证等功能。此项目适合于学习Vue.js及其生态系统相关技术的开发者，也可作为类似内容展示类网站或应用的参考模板。",2,"2026-06-11 03:19:44","top_language"]