webpack开发案例(四)

基于webpack开发案例(三)

案例一(新闻列表的实现)

目录结构

步骤一:创建newslist.vue文件

<template>
  <div id="tml">
    <!--使用mui框架,实现新闻资讯列表样式-->
    <ul class="mui-table-view">
      <li v-for="item in list" class="mui-table-view-cell mui-media">
        <a href="javascript:;">
          <img class="mui-media-object mui-pull-left" :src="item.img_url">
          <div class="mui-media-body">
            {{item.title}}
            <p class=‘mui-ellipsis‘ v-text="item.zhaiyao"></p>
            <div class="ft">
              <span>发表时间:{{item.add_time}}</span>
              <span>点击数:{{item.click}}</span>
            </div>
          </div>
        </a>
      </li>
    </ul>
  </div>
</template>

<script>
  import { Toast } from ‘mint-ui‘;
  export default {
    data() {
      return {
        list: [] //新闻列表功能
      }
    },
    created() {
      this.getnewslist();
    },
    methods: {
      //获取JSON中的新闻资讯
      getnewslist() {
        //1.0确定url
        var url = ‘../../json/newslist.json‘;
        // 2.0调用$http.get()
        this.$http.get(url).then(function(response) {
          //3.0获取响应报文体数据
          var data = response.body;
          //4.0判断响应报文体中的状态值
          //如果非0,则将服务器响应回来的错误消息提示给用户
          if(data.status != 0) {
            Toast(data.message);
            return;
          }

          //5.0如果服务器返回数据正常,则赋值给list
          this.list = data.message;
        })
      }
    }

  }
</script>

<style>
  .mui-table-view img {
    height: 80px;
    width: 80px;
  }

  .mui-table-view .mui-media-object {
    height: 80px;
    line-height: 80px;
    max-width: 80px;
  }

  .ft {
    margin-top: 1.5em;
    font-size: 14px;
    color: #0094ff;
  }
</style>

步骤二:创建json文件,模仿服务端接口

{
    "status": 0,
    "message": [
        {
            "id": 13,
            "title": "1季度多家房企利润跌幅超50%,去库存促销战打响",
            "add_time": "2017-12",
            "zhaiyao": "测试ing",
            "click": 1,
            "img_url": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1514605009&di=9253c7bf43894d72950b1620a53cd0d4&imgtype=jpg&er=1&src=http%3A%2F%2Fimg2.niutuku.com%2Fdesk%2Fanime%2F4703%2F4703-633.jpg"
        }, {
            "id": 14,
            "title": "1季度多家房企利润跌幅超50%,去库存促销战打响",
            "add_time": "2017-11",
            "zhaiyao": "测试ing",
            "click": 2,
            "img_url": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1514605009&di=9253c7bf43894d72950b1620a53cd0d4&imgtype=jpg&er=1&src=http%3A%2F%2Fimg2.niutuku.com%2Fdesk%2Fanime%2F4703%2F4703-633.jpg"
        }, {
            "id": 15,
            "title": "能和心爱的人一起睡觉,是件幸福的事情;可是,打呼噜怎么办?",
            "add_time": "2017-10",
            "zhaiyao": "测试ing",
            "click": 3,
            "img_url": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1514605009&di=9253c7bf43894d72950b1620a53cd0d4&imgtype=jpg&er=1&src=http%3A%2F%2Fimg2.niutuku.com%2Fdesk%2Fanime%2F4703%2F4703-633.jpg"
        }
    ]
}

步骤三:配置入口文件路由

//1.0导入vue核心包
import Vue from ‘vue‘;

//2.0 导入App.vue的vue对象
import App from ‘./App.vue‘;

//3.0 导入vue-router
import vueRouter from ‘vue-router‘;

//3.0.1将vueRouter对象绑定到Vue对象上
Vue.use(vueRouter);

//3.0.2导入路由规则对应的组件对象
import home from ‘./components/Home.vue‘;
import shopcar from ‘./components/shopcar/car.vue‘;
import news from ‘./components/news/newslist.vue‘;

//3.0.3定义路由规则
var router1 = new vueRouter({
  linkActiveClass:‘mui-active‘,  //改变路由激活时的class名称
  routes:[
      {path:‘/home‘,component:home},
      {path:‘/shopcar‘,component:shopcar},
      {path:‘/news/newlist‘,component:news}
  ]
});

//4.0注册mint-ui
//导入mint-ui的css文件
import ‘mint-ui/lib/style.min.css‘;
//导入mint-ui组件对象
import mintui from ‘mint-ui‘;
//在Vue中全局使用mintui
Vue.use(mintui);

//5.0注册mui的css样式
import ‘../statics/mui/css/mui.css‘;

//6.0导入一个当前系统的全局基本样式
import ‘../statics/css/site.css‘;

//7.0将vue-resource在vue中绑定,自动在vue对象实例上注入一个$http对象就可以使用ajax方法了
import vueResource from ‘vue-resource‘;
Vue.use(vueResource);

//8.0利用Vue对象进行解析渲染
new Vue({
  el: ‘#app‘,
  //使用路由对象实例
  router: router1,
  render: c => c(App) //es6写法
})

案例二(新闻资讯日期格式)

步骤一:下载安装Moment.js日期处理类库

步骤二:在入口文件中定义一个全局过滤器

main.js

//1.0导入vue核心包
import Vue from ‘vue‘;

//2.0 导入App.vue的vue对象
import App from ‘./App.vue‘;

//3.0 导入vue-router
import vueRouter from ‘vue-router‘;

//3.0.1将vueRouter对象绑定到Vue对象上
Vue.use(vueRouter);

//3.0.2导入路由规则对应的组件对象
import home from ‘./components/Home.vue‘;
import shopcar from ‘./components/shopcar/car.vue‘;
import news from ‘./components/news/newslist.vue‘;

//3.0.3定义路由规则
var router1 = new vueRouter({
  linkActiveClass:‘mui-active‘,  //改变路由激活时的class名称
  routes:[
      {path:‘/home‘,component:home},
      {path:‘/shopcar‘,component:shopcar},
        {path:‘/news/newlist‘,component:news}
  ]
});

//4.0注册mint-ui
//导入mint-ui的css文件
import ‘mint-ui/lib/style.min.css‘;
//导入mint-ui组件对象
import mintui from ‘mint-ui‘;
//在Vue中全局使用mintui
Vue.use(mintui);

//5.0注册mui的css样式
import ‘../statics/mui/css/mui.css‘;

//6.0导入一个当前系统的全局基本样式
import ‘../statics/css/site.css‘;

//7.0将vue-resource在vue中绑定,自动在vue对象实例上注入一个$http对象就可以使用ajax方法了
import vueResource from ‘vue-resource‘;
Vue.use(vueResource);

//8.0定义一个全局过滤器实现日期的格式化
import moment from ‘moment‘;
Vue.filter(‘datefmt‘,function(input,fmtstring){
    //使用momentjs这个日期格式化类库实现日期的格式化功能
    return moment(input).format(fmtstring);
});

//9.0利用Vue对象进行解析渲染
new Vue({
  el: ‘#app‘,
  //使用路由对象实例
  router: router1,
  render: c => c(App) //es6写法
})

步骤三:在newslist.vue中使用过滤器

<template>
  <div id="tml">
    <!--使用mui框架,实现新闻资讯列表样式-->
    <ul class="mui-table-view">
      <li v-for="item in list" class="mui-table-view-cell mui-media">
        <a href="javascript:;">
          <img class="mui-media-object mui-pull-left" :src="item.img_url">
          <div class="mui-media-body">
            {{item.title}}
            <p class=‘mui-ellipsis‘ v-text="item.zhaiyao"></p>
            <div class="ft">
              <span>发表时间:{{item.add_time | datefmt(‘YYYY-MM-DD HH:mm:ss‘)}}</span>
              <span>点击数:{{item.click}}</span>
            </div>
          </div>
        </a>
      </li>
    </ul>
  </div>
</template>

<script>
  import { Toast } from ‘mint-ui‘;
  export default {
    data() {
      return {
        list: [] //新闻列表功能
      }
    },
    created() {
      this.getnewslist();
    },
    methods: {
      //获取JSON中的新闻资讯
      getnewslist() {
        //1.0确定url
        var url = ‘../../json/newslist.json‘;
        // 2.0调用$http.get()
        this.$http.get(url).then(function(response) {
          //3.0获取响应报文体数据
          var data = response.body;
          //4.0判断响应报文体中的状态值
          //如果非0,则将服务器响应回来的错误消息提示给用户
          if(data.status != 0) {
            Toast(data.message);
            return;
          }

          //5.0如果服务器返回数据正常,则赋值给list
          this.list = data.message;
        })
      }
    }

  }
</script>

<style>
  .mui-table-view img {
    height: 80px;
    width: 80px;
  }

  .mui-table-view .mui-media-object {
    height: 80px;
    line-height: 80px;
    max-width: 80px;
  }

  .ft {
    margin-top: 1.5em;
    font-size: 14px;
    color: #0094ff;
  }
</style>

案例三(新闻资讯详情页)

步骤一:配置入口文件的路由规则

//1.0导入vue核心包
import Vue from ‘vue‘;

//2.0 导入App.vue的vue对象
import App from ‘./App.vue‘;

//3.0 导入vue-router
import vueRouter from ‘vue-router‘;

//3.0.1将vueRouter对象绑定到Vue对象上
Vue.use(vueRouter);

//3.0.2导入路由规则对应的组件对象
import home from ‘./components/Home.vue‘;
import shopcar from ‘./components/shopcar/car.vue‘;
import newslist from ‘./components/news/newslist.vue‘;
import newsinfo from ‘./components/news/newsinfo.vue‘;

//3.0.3定义路由规则
var router1 = new vueRouter({
  linkActiveClass: ‘mui-active‘, //改变路由激活时的class名称
  routes: [{
      path: ‘/home‘,
      component: home
    },
    {
      path: ‘/‘,
      component: home
    },
    {
      path: ‘/shopcar‘,
      component: shopcar
    },
    {
      path: ‘/news/newslist‘,
      component: newslist
    },
    {
      path: ‘/news/newsinfo/:id‘,
      component: newsinfo
    }
  ]
});

//4.0注册mint-ui
//导入mint-ui的css文件
import ‘mint-ui/lib/style.min.css‘;
//导入mint-ui组件对象
import mintui from ‘mint-ui‘;
//在Vue中全局使用mintui
Vue.use(mintui);

//5.0注册mui的css样式
import ‘../statics/mui/css/mui.css‘;

//6.0导入一个当前系统的全局基本样式
import ‘../statics/css/site.css‘;

//7.0将vue-resource在vue中绑定,自动在vue对象实例上注入一个$http对象就可以使用ajax方法了
import vueResource from ‘vue-resource‘;
Vue.use(vueResource);

//8.0定义一个全局过滤器实现日期的格式化
import moment from ‘moment‘;
Vue.filter(‘datefmt‘, function(input, fmtstring) {
  //使用momentjs这个日期格式化类库实现日期的格式化功能
  return moment(input).format(fmtstring);
});

//9.0利用Vue对象进行解析渲染
new Vue({
  el: ‘#app‘,
  //使用路由对象实例
  router: router1,
  render: c => c(App) //es6写法
})

步骤二:配置newslist文件

<template>
  <div id="tml">
    <!--使用mui框架,实现新闻资讯列表样式-->
    <ul class="mui-table-view">
      <li v-for="item in list" class="mui-table-view-cell mui-media">
        <router-link v-bind="{to:‘/news/newsinfo/‘+item.id}">
          <img class="mui-media-object mui-pull-left" :src="item.img_url">
          <div class="mui-media-body">
            {{item.title}}
            <p class=‘mui-ellipsis‘ v-text="item.zhaiyao"></p>
            <div class="ft">
              <span>发表时间:{{item.add_time | datefmt(‘YYYY-MM-DD HH:mm:ss‘)}}</span>
              <span class="fb">点击数:{{item.click}}</span>
            </div>
          </div>
        </router-link>
      </li>
    </ul>
  </div>
</template>

<script>
  import { Toast } from ‘mint-ui‘;
  export default {
    data() {
      return {
        list: [] //新闻列表功能
      }
    },
    created() {
      this.getnewslist();
    },
    methods: {
      //获取JSON中的新闻资讯
      getnewslist() {
        //1.0确定url
        var url = ‘../../json/newslist.json‘;
        // 2.0调用$http.get()
        this.$http.get(url).then(function(response) {
          //3.0获取响应报文体数据
          var data = response.body;
          //4.0判断响应报文体中的状态值
          //如果非0,则将服务器响应回来的错误消息提示给用户
          if(data.status != 0) {
            Toast(data.message);
            return;
          }

          //5.0如果服务器返回数据正常,则赋值给list
          this.list = data.message;
        })
      }
    }

  }
</script>

<style>
  .mui-table-view img {
    height: 80px;
    width: 80px;
  }

  .mui-table-view .mui-media-object {
    height: 80px;
    line-height: 80px;
    max-width: 80px;
  }

  .ft {
    margin-top: 1.5em;
    font-size: 14px;
    color: #0094ff;
  }
  .fb{
      margin-left: 20px;
  }
</style>

步骤三:创建一些json文件,伪造数据库存放新闻信息

{
    "status": 0,
    "message": [
        {
            "id": 13,
            "title": "1季度多家房企利润跌幅超50% 去库存促销战打响",
            "click": 1,
            "add_time": "2015-04-16T03:50:28.000Z",
            "content": "sdfsdf"
        }
    ]
}

步骤四:创建一个新闻详情页

<template>
  <div id="tml">
    <!--1.0 实现新闻详情-->
    <div class="title" v-for="item in info">
      <h4 v-text="item.title"></h4>
      <p>
        <span>{{ item.add_time | datefmt(‘YYYY-MM-DD‘) }}</span>
        <span>{{item.click}}次浏览</span>
      </p>
      <div id="content" v-html="item.content"></div>
    </div>
    <!--2.0 实现评论组件的集成-->
    <!--10.2 实现评论组件-->
    <comment :id="id"></comment>
  </div>
</template>

<script>
  //10.0 导入评论组件 comment.vue
  import comment from ‘../subcom/comment.vue‘;

  export default {
    components: {
      comment // 10.1 注册评论组件
    },
    data() {
      return {
        id: 0, // 传入的id值
        info: []
      }
    },
    created() {
      //1.0 获取url传入的id参数值赋值给data中的id属性
      this.id = this.$route.params.id;

      //2.0 请求服务器获取到这个id对应的详情数据对象
      this.getinfo();
    },
    methods: {
      getinfo() {
        //1.0 定义url
        var url = ‘../../json/newslist‘ + this.id + ‘.json‘;
        //2.0 发出ajax请求获取数据
        this.$http.get(url).then(function(res) {
          var body = res.body;
          if(body.status != 0) {
            alert(body.message);
            return;
          }
          //3.0 赋值
          this.info = body.message;
        });
      }
    }
  }
</script>

<style scoped>
  .title h4 {
    color: #0094ff;
  }

  .title p {
    color: rgba(0, 0, 0, 0.5);
  }

  .title,
  #content {
    padding: 5px;
  }
</style>

项目结构:

案例四(评论组件的实现)

步骤一:创建json文件,伪造数据库存放信息

{
    "status": 0,
    "message": [
        {
            "user_name":"匿名用户",
            "add_time":"2017-12-24",
            "content":"haha"
        },{
            "user_name":"匿名用户",
            "add_time":"2017-12-24",
            "content":"haha"
        },{
            "user_name":"匿名用户",
            "add_time":"2017-12-24",
            "content":"haha"
        }
    ]
}

步骤二:创建评论组件

<template>
  <div id="tml">
    <!--评论组件-->
    <!--1.0 实现提交评论数据到服务器的静态结构-->
    <div id="postcomment">
      <h3>提交评论</h3>
      <p class="p"></p>
      <textarea placeholder="请输入您要评论的内容..." v-model="postcontent"></textarea>
      <mt-button type="primary" size="large" @click="postcomment">发表</mt-button>
    </div>

    <!--2.0 实现获取评论数据列表-->
    <div id="list">
      <h3>评论列表</h3>
      <p class="p"></p>
      <div v-for="(item,index) in list">
        <div class="title">
          <span>第{{index + 1}}楼:</span>
          <span>用户:{{item.user_name}}</span>
          <span>发表时间:{{item.add_time | datefmt(‘YYYY-MM-DD‘)}}</span>
        </div>
        <ul class="mui-table-view">
          <li class="mui-table-view-cell" v-text="item.content"></li>
        </ul>
      </div>
    </div>

    <!--3.0 实现获取更多按钮-->
    <mt-button type="primary" size="large">加载更多</mt-button>
  </div>
</template>

<script>
  import { Toast } from ‘mint-ui‘;

  export default {
    data() {
      return {
        id: 0,
        postcontent: ‘‘, //用来自动获取用户填写的评论内容
        list: [] //评论数据的数组
      }
    },
    created() {
      //1.0 获取url传入的id参数值赋值给data中的id属性
      this.id = this.$route.params.id;

      //1.0 获取当前资讯数据的评论信息列表
      this.getcommentlist();
    },
    methods: {
      //2.0 获取当前数据的评论数据 pageindex:代表的是当前获取的是哪一页的数据,默认值是1
      getcommentlist() {
        //1.0 确定评论数据的url
        var url = ‘../../json/userslist‘ + this.id + ‘.json‘;
        //2.0 发出ajax请求获取数据即可
        this.$http.get(url).then(function(res) {
          if(res.body.status != 0) {
            Toast(res.body.message);
            return;
          }
          //3.0 message数组中的数据赋值给this.list
          this.list = this.list.concat(res.body.message);
        });
      },
      //1.0 评论数据的提交
      postcomment() {
        //1.0 判断用户是否填写评论内容
        if(this.postcontent.trim().length <= 0) {
          Toast(‘您要评论的内容不能为空‘);
          return;
        }
      }
    }
  }
</script>

<style scoped>
  /* 1.0 实现提交评论样式 */

  #postcomment {
    padding: 5px;
  }

  .p {
    height: 1px;
    width: 100%;
    border-bottom: 1px solid rgba(0, 0, 0, 0.3);
  }
  /*2.0 评论列表的样式*/

  #list {
    padding: 5px;
  }

  .title {
    padding: 5px;
    color: #6d6d72;
    font-size: 15px;
    background-color: rgba(0, 0, 0, 0.1);
  }
</style>
时间: 2024-10-14 05:03:11

webpack开发案例(四)的相关文章

webpack开发案例(三)

基于webpack开发案例(二) 项目结构 案例一(实现根组件的头部和底部样式) App.vue <!--以后项目的根组件--> <template> <div> <!--1.0利用mint-ui中的header组件实现整个系统的头部--> <mt-header fixed title="hello"></mt-header> <!--2.0利用vue-router的<router-view>&l

[转]微信公众平台开发(四) 简单回复功能开发

本文转自:http://www.cnblogs.com/mchina/p/3155072.html 一.简介 微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性.下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发. 二.思路分析 用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现. 关键代码如下: if($keyword=="你好"){ $contentStr

【小程序源码案例】微信小程序项目开发案例分享

作者:web小二本文标签: 微信小程序 小程序源码案例 小程序项目小程序的开发,并不是适合所有公司,我今天跟大家分享小程序方面的教程,主要是供大家学习使用.学习这种东西,有时候则是单纯的喜欢,没有任何目的,很单纯的为了好玩,记得很早之前学flash,没有想法,就是觉得好玩,纯娱乐爱好而已.到后来玩视频剪辑也是出于同样的原因,不图钱财名利,只是图自己个人爱好娱乐. 但是,学习,有时候则是需要有明确目的,特别是关系到自己吃饭问题的时候,你就需要非常有目的去学习,并且还需要制定好学习的计划与目标,希望

使用Jquery+EasyUI 进行框架项目开发案例讲解之五 模块(菜单)管理源码分享

http://www.cnblogs.com/huyong/p/3454012.html 使用Jquery+EasyUI 进行框架项目开发案例讲解之五  模块(菜单)管理源码分享    在上四篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享>  <使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享>  <使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享> <

Kendo UI经典开发案例赏析

Kendo UI 是一个非常强大的HTML5界面开发框架,基于最新的HTML5.CSS3和JavaScript标准,既可以开发Web应用,又可以开发跨平台的移动应用.Kendo UI的界面风格清新大气,组件功能完善,性能可靠,程序员只需要少量编码就可以实现相应的效果,能节省大量的时间成本.那么Kendo UI到底能实现一些什么样的效果呢?下面我汇总了Kendo UI的四个开发案例 Bootstrap 经常有人问到Kendo UI是否可以和Bootstrap 结合使用,答案当然是肯定的.这个应用是

微信公众平台开发(四) 简单回复功能开发

原文地址:http://www.cnblogs.com/mchina/p/3155072.html 一.简介 微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性.下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发. 二.思路分析 用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现. 关键代码如下: if($keyword=="你好"){ $contentStr

公众号第三方平台开发 教程四 代公众号处理消息和事件

公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号授权第三方平台 公众号第三方平台开发 教程四 代公众号发起网页授权说明 公众号第三方平台开发 教程五 代公众号处理消息和事件 公众号第三方平台开发 教程六 代公众号使用JS SDK说明 另,感谢一下这个大虾的博客,这几篇东西都是在他的博文基础上完成的,他的博客里也有一些接口代码可以下载 微信开发系列

Hadoop应用开发案例(实战)视频教程(项目实战)视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

SpringBoot开发案例之多任务并行+线程池处理

前言 前几篇文章着重介绍了后端服务数据库和多线程并行处理优化,并示例了改造前后的伪代码逻辑.当然了,优化是无止境的,前人栽树后人乘凉.作为我们开发者来说,既然站在了巨人的肩膀上,就要写出更加优化的程序. SpringBoot开发案例之JdbcTemplate批量操作 SpringBoot开发案例之CountDownLatch多任务并行处理 改造 理论上讲,线程越多程序可能更快,但是在实际使用中我们需要考虑到线程本身的创建以及销毁的资源消耗,以及保护操作系统本身的目的.我们通常需要将线程限制在一定