基于豆瓣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 相关文章推荐
JS代码同步文本框内容的实例方法
Jul 12 Javascript
jQuery中$(function() {});问题详解
Aug 10 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
Oct 01 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
Mar 22 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
Feb 16 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
vue实现城市列表选择功能
Jul 16 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
简单分析js中的this的原理
Aug 31 Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 Javascript
Vue router配置与使用分析讲解
Dec 24 Vue.js
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 Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
Flask配置Cors跨域的实现
2019/07/12 Python
python多任务之协程的使用详解
2019/08/26 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
幼儿园春游活动方案
2014/01/19 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
博士导师推荐信
2015/03/25 职场文书
中标通知书格式
2015/04/17 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL