基于豆瓣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 相关文章推荐
经典的带阴影的可拖动的浮动层
Jun 26 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
Apr 25 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
May 11 Javascript
JS限制文本框只能输入数字和字母方法
Feb 28 Javascript
vue实现todolist单页面应用
Apr 11 Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 Javascript
JavaScript实现三级级联特效
Nov 05 Javascript
vue+Element-ui实现分页效果实例代码详解
Dec 10 Javascript
详解Vue之父子组件传值
Apr 01 Javascript
基于Vue实现电商SKU组合算法问题
May 29 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 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
Phpbean路由转发的php代码
2008/01/10 PHP
解析php中const与define的应用区别
2013/06/18 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
一个javascript参数的小问题
2008/03/02 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
js实现点赞效果
2020/03/16 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
Python selenium 三种等待方式解读
2016/09/15 Python
Python面向对象特殊成员
2017/04/24 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
新浪网技术部笔试题
2016/08/26 面试题
什么是SCM(软件配置管理)
2014/08/16 面试题
自荐信的五个重要部分
2013/10/29 职场文书
大学生找工作推荐信范文
2013/11/28 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
年度考核自我评价
2014/01/25 职场文书
公司感谢信范文
2015/01/22 职场文书
导游词格式
2015/02/13 职场文书
检讨书格式
2015/05/07 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
python获取字符串中的email
2022/03/31 Python