基于豆瓣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对象和DOM对象使用说明
Jun 25 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
Jan 15 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
Jun 30 Javascript
JS基础随笔(菜鸟必看篇)
Jul 13 Javascript
babel基本使用详解
Feb 17 Javascript
layui表格checkbox选择全选样式及功能的实例
Mar 07 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
node.js制作一个简单的登录拦截器
Feb 10 Javascript
前端vue+express实现文件的上传下载示例
Feb 18 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 正则表达式小结
2009/08/31 PHP
php ftp文件上传函数(基础版)
2010/06/03 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
django站点管理详解
2017/12/12 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python 获取等间隔的数组实例
2019/07/04 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
LINUX下线程,GDI类的解释
2012/04/17 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
运动会入场口号
2014/06/07 职场文书
文秘应届生求职信
2014/07/05 职场文书
员工辞职信怎么写
2015/02/27 职场文书
运动会宣传稿100字
2015/07/23 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
Python基础之hashlib模块详解
2021/05/06 Python