基于豆瓣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 相关文章推荐
javascript 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
JavaScript 拖拉缩放效果
Dec 10 Javascript
javascript动态生成树形菜单的方法
Nov 14 Javascript
JS判断是否长按某一键的方法
Mar 02 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
详解Node项目部署到云服务器上
Jul 12 Javascript
详谈innerHTML innerText的使用和区别
Aug 18 Javascript
JavaScript实现计数器基础方法
Oct 10 Javascript
微信小程序如何获取手机验证码
Nov 04 Javascript
jquery分页优化操作实例分析
Aug 23 jQuery
vscode中eslint插件的配置(prettier配置无效)
Sep 10 Javascript
vue组件的路由高亮问题解决方法
May 11 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 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
python利用有道翻译实现"语言翻译器"的功能实例
2017/11/14 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
python对视频画框标记后保存的方法
2018/12/07 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
基于PyTorch中view的用法说明
2021/03/03 Python
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
制冷与电控专业应届生求职信
2013/11/11 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
《假如》教学反思
2016/02/17 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
MySQL的join buffer原理
2021/04/29 MySQL