vue2.0 仿手机新闻站(七)过滤器、动画效果
1.全局过滤器

(1)normalTime.js 自定义 将 时间戳 转换成 日期格式 过滤器
/**
* 将 时间戳 转换成 日期格式
*/
export const normalTime = (time) => {
if(time){
var oDate = new Date(); oDate.setTime(time); var y = oDate.getFullYear();
var m = oDate.getMonth() + 1;
var d = oDate.getDate(); var h = oDate.getHours();
var mm = oDate.getMinutes();
var s = oDate.getSeconds(); return y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s;
}
}
(2)index.js 入口文件
/**
* 过滤器
* 入口文件
*/
import { normalTime } from './normalTime' // webpack 2中不允许混用import和module.exports
// module.exports = {
// normalTime
// }; export default {
normalTime
};
2.全局引入
main.js
import Vue from 'vue'
import App from './App.vue'
// 引入 路由
import VueRouter from 'vue-router'
// 引入 路由配置文件
import routes from './router.config'
// 引入 vuex入口文件
import store from './store/index'
// 引入 axios
import axios from 'axios'
// 引入 loading 组件
import Loading from './components/loading'
// 全局引入 自定义过滤器
import filters from './filters' // 向过滤器里添加函数 // ES6 循环遍历所有过滤器
Object.keys(filters).forEach(key => Vue.filter(key, filters[key])) /**
* 以前
* Vue.filter(名字,函数);
* 例如:
Vue.filter('filtername',function(value,参数){
return 参数+value.split('').reverse().join('');
});
*/
/*Vue.filter('normalTime',(time) => {
if(time){
var oDate = new Date(); oDate.setTime(time); var y = oDate.getFullYear();
var m = oDate.getMonth() + 1;
var d = oDate.getDate(); var h = oDate.getHours();
var mm = oDate.getMinutes();
var s = oDate.getSeconds(); return y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s;
}
});*/ Vue.use(VueRouter);
Vue.use(Loading); // 关于axios配置
axios.interceptors.request.use(function(config){
// 发送请求
store.dispatch('showLoading');
return config;
},function(error){
return Promise.reject(error);
}); axios.interceptors.response.use(function(response){
// 请求回来
store.dispatch('hideLoading');
return response;
},function(error){
return Promise.reject(error);
}); // 配置请求的根路径
// axios.default.baseURL = 'http://localhost:8080'; // 设置默认头部信息 post
// axios.default.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; // 把axios对象挂到Vue原型上
Vue.prototype.$http = axios; // 创建 路由
const router = new VueRouter({
mode:'history', // 删除 url 中的'#'号,切换路径模式
scrollBehavior:() => ({y:0}), // 滚动条滚动的行为,不加这个默认就会记忆原来滚动条的位置
routes // routes 等价于 routes:routes
}); require('./assets/css/base.css'); // 全局引入 new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
3.在组件中使用
Article.vue

4.动画效果 (transition 实现动画效果)


App.vue
<template>
<div id="app">
<loading v-show="loading"></loading>
<NavView v-show="headerShow"></NavView>
<!-- transition 实现动画效果 -->
<transition name="slide-down">
<!-- keep-alive 如果有数据,则保持原样 -->
<!-- <keep-alive>
<router-view class="router-view"></router-view>
</keep-alive> -->
<router-view class="router-view"></router-view>
</transition>
<FooterView></FooterView>
</div>
</template> <script>
/**
* 引入 组件
*/
// 头部导航
import NavView from './components/Nav.vue'
// 底部选项卡
import FooterView from './components/Footer.vue' // 引入 vuex 的两个方法
import {mapGetters, mapActions} from 'vuex' export default {
// 计算属性
computed:mapGetters([
// 从getters中获取headerShow的值
'headerShow',
'loading'
]),
watch:{ // 监听,当路由发生变化的时候执行
$route(to,from){
if(to.path == '/user-info'){
/**
* $store来自Store对象
* dispatch 向 actions 发起请求
*/
this.$store.dispatch('hideHeader');
}else{
this.$store.dispatch('showHeader');
}
}
},
components:{
NavView,
FooterView
}
}
</script> <style lang="scss">
@import './assets/css/index.css';
.slide-down-enter-active,
.slide-down-leave-active{
transition: .4s all ease;
opacity:0.2;
transform:translate3d(0,6em,0);
} .slide-down-enter,
.slide-down-leave{
opacity:1;
transform:translate3d(0,6em,0);
}
</style>
5.效果图
vue2.0 仿手机新闻站(七)过滤器、动画效果的更多相关文章
- vue2.0 仿手机新闻站(一)项目开发流程
vue仿手机新闻站: 1.拿到静态页面,直接用vue边布局,边写 2.假数据 没有用任何UI组件,切图完成 做项目基本流程: 1.规划组件结构 Nav.vue Header.vue Home.vue ...
- vue2.0 仿手机新闻站(六)详情页制作
1.结构 2.配置详情页路由 router.config.js /** * 配置 路由 */ // 导入组件 import Home from './components/Home.vue' impo ...
- vue2.0 仿手机新闻站(五)全局的 loading 组件
1.组件结构 index.js const LoadingComponent = require('./Loading.vue') const loading = { install: functio ...
- vue2.0 仿手机新闻站(四)axios
1.axios的配置 main.js import Vue from 'vue' import App from './App.vue' // 引入 路由 import VueRouter from ...
- vue2.0 仿手机新闻站(二)项目结构搭建 及 路由配置
1.项目结构 $ vue init webpack-simple news $ npm install vuex vue-router axios style-loader css-loader -D ...
- vue2.0 仿手机新闻站(三)通过 vuex 进行状态管理
1.创建 store 结构 2.main.js 引入 vuex 3. App.vue 组件使用 vuex <template> <div id="app"&g ...
- 项目vue2.0仿外卖APP(七)
ratings评价列表页实现 在ratings.vue组件里开发 首先先引入seller数据: 书写模板结构: 由于评价页又有之前写过的star.vue组件,所以又要在ratings.vue组件引入: ...
- Vue2.0仿饿了么webapp单页面应用
Vue2.0仿饿了么webapp单页面应用 声明: 代码源于 黄轶老师在慕课网上的教学视频,我自己用vue2.0重写了该项目,喜欢的同学可以去支持老师的课程:http://coding.imooc.c ...
- 项目vue2.0仿外卖APP(六)
goods 商品列表页开发 布局编写 除了商品之外还有购物车,还有个详情页,挺复杂的. 两栏布局:左侧固定宽度,右侧自适应,还是用flex. 因为内容可能会超过手机高度,超过就隐藏.左右两侧的内容是可 ...
随机推荐
- TTL 和 RS-232
下面详细讲解下面这三种的区别 USB转TTL串口板(常用芯片PL2303,CH340) USB转RS-232串口线 TTL转RS-232串口板,RS-232转TTL串口板(常用芯片MAX3232,MA ...
- Treblecross(uva 10561)
题意:一个 1 × n 的棋盘,有 X 和 :,当棋盘上出现三个连续的X 时游戏结束,两人轮流操作,每次能把一个 : 变成 X,问先手必胜方案数以及先手可以放的位置. /* 对于先手,当有一个'X'时 ...
- OpenJudge 2971 抓住那头牛
总时间限制: 2000ms 内存限制: 65536kB 描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0< ...
- 【CF1068B】LCM(数学)
题意:给定b,求lcm(a,b)/a有几种不同的取值 b<=1e10 思路:只有a取b的因子时答案两两不同 #include<cstdio> #include<cstring& ...
- JavaScript文本收缩展开 showdetail
原文发布时间为:2009-11-15 -- 来源于本人的百度文章 [由搬家工具导入] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- httpclient与webapi
System.Net.Http 是微软推出的最新的 HTTP 应用程序的编程接口, 微软称之为“现代化的 HTTP 编程接口”, 主要提供如下内容: 1. 用户通过 HTTP 使用现代化的 Web S ...
- Python学习杂记_10_三元运算符
常用三元运算符来简化分支和循环的代码: 分支简化: a = 1b = 2c = a if a > 1 else bprint(c) # 以上几行等同于 a = 1b = 2if a >1: ...
- Java反射获取类对象的三种方式
package demo01; /* * 获取一个类的class文件对象的三种方式 * 1.对象获取 * 2.类名获取 * 3.Class类的静态方法获取 */ public class Reflec ...
- dhcp 学习整理
centos 6.5 rpm: dhcp-4.1.1-25.P1.el6.x86_64 dhcp-common-4.1.1-25.P1.el6.x86_64 服务: /etc/rc.d/init.d/ ...
- hdu 3657 最小割的活用 / 奇偶方格取数类经典题 /最小割
题意:方格取数,如果取了相邻的数,那么要付出一定代价.(代价为2*(X&Y))(开始用费用流,敲升级版3820,跪...) 建图: 对于相邻问题,经典方法:奇偶建立二分图.对于相邻两点连边2 ...