基于豆瓣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的ajax简单结构示例代码
Feb 17 Javascript
Jquery对select的增、删、改、查操作
Feb 06 Javascript
Augularjs-起步详解
Jul 08 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
Aug 01 Javascript
浅谈js的html元素的父节点,子节点
Aug 06 Javascript
Bootstrap字体图标无法正常显示的解决方法
Oct 08 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
Dec 13 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
javascript实现搜索筛选功能实例代码
Nov 12 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
Dec 10 Javascript
解决vue-router的beforeRouteUpdate不能触发
Apr 14 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
模仿OSO的论坛(一)
2006/10/09 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python实现文件路径和url相互转换的方法
2015/07/06 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
Python中模块string.py详解
2017/03/12 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
2014法制宣传日活动总结范文
2014/11/01 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
给朋友的道歉短信
2015/05/12 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
opencv检测动态物体的实现
2021/07/21 Python
Python读写yaml文件
2022/03/20 Python