基于豆瓣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 相关文章推荐
jquery trim() 功能源代码
Feb 14 Javascript
分享27个jQuery 表单插件集合推荐
Apr 25 Javascript
JQuery实现表格中相同单元格合并示例代码
Jun 26 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
Nov 26 Javascript
jQuery之过滤元素操作小结
Nov 30 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
Apr 06 Javascript
分享12个非常实用的JavaScript小技巧
May 11 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
JavaScript使用Math.random()生成简单的验证码
Jan 21 Javascript
JavaScript实现简单计算器功能
Dec 19 Javascript
js实现小星星游戏
Mar 23 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 Javascript
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
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
js右键菜单效果代码
2007/07/21 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Python调用C++程序的方法详解
2017/01/24 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
项目计划书范文
2014/01/09 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
安全生产实施方案
2014/02/23 职场文书
贷款委托书范本
2014/04/08 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
个人汇报材料范文
2014/12/30 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
社区党建工作总结2015
2015/05/13 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android