基于豆瓣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,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
Apr 15 Javascript
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
JavaScript实现数组随机排序的方法
Jun 26 Javascript
微信公众号支付H5调用支付解析
Nov 04 Javascript
详解axios在vue中的简单配置与使用
May 10 Javascript
ionic2懒加载配置详解
Sep 01 Javascript
JS简单实现滑动加载数据的方法示例
Oct 18 Javascript
PM2自动部署代码步骤流程总结
Dec 10 Javascript
vue-router源码之history类的浅析
May 21 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
Aug 04 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
Nov 30 Javascript
Javascript中Microtask和Macrotask鲜为人知的知识点
Apr 02 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
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP 组件化编程技巧
2009/06/06 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
js实现文字截断功能
2016/09/14 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
使用Python获取Linux系统的各种信息
2014/07/10 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
Mysql数据库group by原理详解
2022/07/07 MySQL