{"id":13536362,"url":"https://github.com/jeneser/douban","last_synced_at":"2025-10-05T00:29:53.829Z","repository":{"id":118362221,"uuid":"83137235","full_name":"jeneser/douban","owner":"jeneser","description":"Awesome douban DEMO created with Vue2.x + Vuex + Vue-router + Superagent","archived":false,"fork":false,"pushed_at":"2017-11-05T07:20:09.000Z","size":11790,"stargazers_count":2303,"open_issues_count":5,"forks_count":704,"subscribers_count":116,"default_branch":"master","last_synced_at":"2025-05-22T19:11:21.721Z","etag":null,"topics":["douban","superagent","vue-cli","vue-demo","vue-resoure","vue-router","vue2","vuex","webpack2"],"latest_commit_sha":null,"homepage":"https://jeneser.github.io/douban","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeneser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-02-25T14:31:20.000Z","updated_at":"2025-05-16T10:37:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"4eaefc02-d838-4d49-8200-7f126b6da22f","html_url":"https://github.com/jeneser/douban","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jeneser/douban","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeneser%2Fdouban","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeneser%2Fdouban/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeneser%2Fdouban/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeneser%2Fdouban/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeneser","download_url":"https://codeload.github.com/jeneser/douban/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeneser%2Fdouban/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278395778,"owners_count":25979685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["douban","superagent","vue-cli","vue-demo","vue-resoure","vue-router","vue2","vuex","webpack2"],"created_at":"2024-08-01T09:00:37.781Z","updated_at":"2025-10-05T00:29:53.774Z","avatar_url":"https://github.com/jeneser.png","language":"Vue","funding_links":[],"categories":["Demo示例","Vue","awesome-vue [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)","Resources","Awesome Vue.js [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg) ★101652](https://github.com/sindresorhus/awesome)","Awesome Vue.js [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)","Examples [🔝](#readme)"],"sub_categories":["例子","Examples"],"readme":"\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./screenshot/douban_logo.png\"\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\nAwesome douban DEMO created with Vue2.x + Vuex + Vue-router + Superagent\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\n[![Build Status](https://travis-ci.org/jeneser/douban.svg?branch=master)](https://travis-ci.org/jeneser/douban) [![David](https://img.shields.io/david/expressjs/express.svg?style=flat-square)](https://github.com/jeneser/douban) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/aa2dd7f4191546258edf6e55464d1962)](https://www.codacy.com/app/jeneser/douban?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=jeneser/douban\u0026amp;utm_campaign=Badge_Grade) [![Powered](https://img.shields.io/badge/Powered%20by-vue2%2B-brightgreen.svg)](https://github.com/vuejs/vue) [![Percentage of issues still open](http://isitmaintained.com/badge/open/jeneser/douban.svg)](http://isitmaintained.com/project/jeneser/douban \"Percentage of issues still open\") [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/jeneser/douban.svg)](http://isitmaintained.com/project/jeneser/douban \"Average time to resolve an issue\") [![PR](https://img.shields.io/badge/PR-welcome-brightgreen.svg)](https://github.com/jeneser/douban/pulls) [![license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/jeneser/douban/blob/master/LICENSE)\n\n\u003c/p\u003e\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./screenshot/douban_home.gif\" \u003e\n    \u003cimg src=\"./screenshot/douban_movie.gif\" \u003e\n    \u003cbr\u003e\n     \u003cimg src=\"./screenshot/douban_login.gif\" \u003e\n    \u003cimg src=\"./screenshot/douban_search.gif\" \u003e\n    \u003cbr\u003e\u003cbr\u003e\n    \u003cstrong\u003e......\u003c/strong\u003e\n    \u003cbr\u003e\n\t \u003cstrong\u003e\u003ca href=\"https://jeneser.github.io/douban/\"\u003eLive Demo\u003c/a\u003e\u003c/strong\u003e\n\u003c/p\u003e\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://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).\n\n## Libraries\n\n- [Vuex](https://vuex.vuejs.org) : Centralized State Management for Vue.js\n- [Vue-router](http://router.vuejs.org/) : The official router for Vue.js\n- ~~[vue-resource](https://github.com/pagekit/vue-resource) : The HTTP client for Vue.js~~\n- [Superagent](https://github.com/visionmedia/superagent) : Ajax with less suck - (and node.js HTTP client to match)\n- [vue-infinite-loading](https://github.com/PeachScript/vue-infinite-loading) : An infinite scroll plugin for Vue.js 1.0 \u0026 Vue.js 2.0.\n- [normalize.css](https://github.com/necolas/normalize.css) :  A collection of HTML element and attribute style-normalizations\n- [vue-scroll-behavior](https://www.npmjs.com/package/vue-scroll-behavior) :  Completely customize the scroll behavior on route navigation\n\n## API\n\nDouban Api V2\n- Basic URI : `https://api.douban.com/V2/`\n- Online activities\n  - Activities list : `/event/list?loc=108288\u0026count=\u0026start=`\n  - Single activitie info : `/event/id`\n- Movie\n  - In theaters : `/movie/in_theaters?count=`\n  - Coming soon : `/movie/coming_soon?count=`\n  - Top 250 : `/movie/top250?count=`\n  - Single movie info : `/movie/subject/id`\n- Book\n  - Search some books : `/book/search?q=\u0026count=`\n  - Single book info : `/book/id`\n- Search\n  - Search books : `/book/search?q=`\n  - Search movie : `/movie/search?q=`\n  - Search music : `/music/search?q=`\n\nMock Douban Backend\n- User Basic URI : `https://douban.herokuapp.com/user/`\n- Register\n  - Path: `/user`\n  - method: `POST`\n- Login\n  - Path: `/user/:id`\n  - method: `GET`\n\nFor detailed explanation, checkout the [Douban Api V2](https://developers.douban.com/wiki/?title=api_v2) and [Douban Backend](https://github.com/jeneser/douban-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/, use tschaub/gh-pages\n- Aug 11, 2017:\n  - Add dir /screenshot.\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://github.com/LIANGWEIBIAO\" target=\"_blank\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/24608984?v=4\u0026s=460\" width=\"38px\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/lizhanjie1314\" target=\"_blank\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/15324887?v=4\u0026s=460\" width=\"38px\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/fredshare\" target=\"_blank\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/765082?v=4\u0026s=460\" width=\"38px\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Werb\" target=\"_blank\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/12763277?v=4\u0026s=460\" width=\"38px\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/jfliapp\" target=\"_blank\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/27725921?v=4\u0026s=460\" width=\"38px\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/bluestrings\" target=\"_blank\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/6144152?v=4\u0026s=460\" width=\"38px\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/silverpeng\" target=\"_blank\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/25680922?v=4\u0026s=460\" width=\"38px\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/KngZhi\" target=\"_blank\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/11361147?v=4\u0026s=460\" width=\"38px\"\u003e\u003c/a\u003e\n\n## License\n\n[MIT](https://github.com/jeneser/douban/blob/master/LICENSE) Copyright (c) 2017 [Jeneser](https://jeneser.github.io/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeneser%2Fdouban","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeneser%2Fdouban","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeneser%2Fdouban/lists"}