基于豆瓣API+Angular开发的web App


Posted in Javascript onJanuary 02, 2015

一、扯淡的说

name:【豆瓣搜索】

最近关注了下豆瓣的API,发现豆瓣开放平台需要加强API文档撰写啊....但是有个可喜的发现豆瓣V2接口提供了搜索接口。最近在用phantom弄些爬虫,想想,真是美丽极了!有个豆瓣的接口,我都不用去爬数据,不用数据存储,丢给github page直接完事。豆瓣,Nice!最近也在看angular,于是就萌生了使用Angular + 豆瓣API 做一个web app。于是...网上回家就折腾了。

体验地址:http://vczero.github.io/t/html/index.html#/

基于豆瓣API+Angular开发的web App项目地址:https://github.com/vczero/search (欢迎大家fork,任意修改,继续增加功能;欢迎拍砖,一起进步。)

二、直接上图

(1)图书搜索

基于豆瓣API+Angular开发的web App

(2)音乐搜索界面

基于豆瓣API+Angular开发的web App

(3)图书详情

基于豆瓣API+Angular开发的web App

(4)电影搜索

基于豆瓣API+Angular开发的web App

三、项目结构和简介

基于豆瓣API+Angular开发的web App

三、几个注意点

(1)-webkit-tap-highlight-color:rgba(255,255,255,0);去除点击时的高亮阴影

(2)box-sizing:border-box的使用,包含padding的像素计算

(3)position fixed 和 搜索跳转的结合(虚拟键盘引起)

(4)angular-ui-router的多视图控制

(5)ios & android系统的各种细节

(6)压缩angularjs代码依赖注入的问题

...

我觉得比较重要的服务和状态路由的代码贴出来

/*服务的URL配置*/

app.constant('ServiceConfig', {

    book_search: 'https://api.douban.com/v2/book/search',

    book_search_id: 'https://api.douban.com/v2/book/',

    music_search: 'https://api.douban.com/v2/music/search',

    music_search_id: 'https://api.douban.com/v2/music/',

    movie_search: 'https://api.douban.com/v2/movie/search',

    movie_search_id: 'https://api.douban.com/v2/movie/subject/'

});

app.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $urlRouterProvider){

    /*URL路由*/

    $urlRouterProvider.otherwise("/");

    /*状态配置*/

    $stateProvider

        //首页

        .state('index',{

            url: '/',

            views:{

                header:{

                    templateUrl: '../html/views/list_header.html',

                    controller: 'SearchController'

                },

                container:{

                    templateUrl: '../html/views/list_book.html',

                    controller: 'BookListController'

                },

                footer:{

                    templateUrl: '../html/views/list_footer.html',

                    controller: ''

                }

            }

        })

        //book list

        .state('book_list',{

            url: '/book',

            views:{

                header:{

                    templateUrl: '../html/views/list_header.html',

                    controller: 'SearchController'

                },

                container:{

                    templateUrl: '../html/views/list_book.html',

                    controller: 'BookListController'

                },

                footer:{

                    templateUrl: '../html/views/list_footer.html',

                    controller: ''

                }

            }

        })

        // book detail

        .state('book_detail',{

            url: '/book/:id',

            views:{

                header:{

                    templateUrl: '../html/views/list_header.html',

                    controller: 'SearchController'

                },

                container:{

                    templateUrl: '../html/views/detail_book.html',

                    controller: 'BookDetailController'

                },

                footer:{

                    templateUrl: '../html/views/list_footer.html',

                    controller: ''

                }

            }

        })

        // music list

        .state('music_lsit',{

            url: '/music',

            views:{

                header:{

                    templateUrl: '../html/views/list_header.html',

                    controller: 'SearchController'

                },

                container:{

                    templateUrl: '../html/views/list_music.html',

                    controller: 'musicListController'

                },

                footer:{

                    templateUrl: '../html/views/list_footer.html',

                    controller: ''

                }

            }

        })

        // movie list

        .state('movie_lsit',{

            url: '/movie',

            views:{

                header:{

                    templateUrl: '../html/views/list_header.html',

                    controller: 'SearchController'

                },

                container:{

                    templateUrl: '../html/views/list_movie.html',

                    controller: 'movieListController'

                },

                footer:{

                    templateUrl: '../html/views/list_footer.html',

                    controller: ''

                }

            }

        })

        .state('search',{

            url: '/search/:type',

            views:{

                header:{

                    templateUrl: '../html/views/search.html',

                    controller: 'Search'

                },

                container:{

                    templateUrl: '',

                    controller: ''

                },

                footer:{

                    templateUrl: '',

                    controller: ''

                }

            }

        });

}]);
Javascript 相关文章推荐
一个tab标签切换效果代码
Mar 27 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
Jan 13 Javascript
浅谈js中变量初始化
Feb 03 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
Jun 01 Javascript
jQuery实现带玻璃流光质感的手风琴特效
Nov 20 Javascript
基于JS实现省市联动效果代码分享
Jun 06 Javascript
AngularJS指令用法详解
Nov 02 Javascript
Vue.js实现价格计算器功能
Mar 30 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
vue渲染时闪烁{{}}的问题及解决方法
Mar 28 Javascript
Element 默认勾选表格 toggleRowSelection的实现
Sep 04 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 #Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
Jan 02 #Javascript
javascript制作的cookie封装及使用指南
Jan 02 #Javascript
分享一则javascript 调试技巧
Jan 02 #Javascript
javascript实现无限级select联动菜单
Jan 02 #Javascript
javascript实现表格排序 编辑 拖拽 缩放
Jan 02 #Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 #Javascript
You might like
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
python如何实现反向迭代
2018/03/20 Python
python合并同类型excel表格的方法
2018/04/01 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
房屋委托书范本
2014/04/04 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
扬尘污染防治方案
2014/06/15 职场文书
森林防火标语
2014/06/23 职场文书
教育见习报告范文
2014/11/03 职场文书
考研复习计划
2015/01/19 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python