首页博客列表的开发

1、修改index.vue,使能够支持列表功能

<template>
<div>
<PostList v-for="(item,index) in postList" :title="item.title" :content="item.content" :postCount="postCount"
:key="index"></PostList>
</div>
</template> <script>
import PostList from '@/components/post-list' export default {
name: "index",
components: {
PostList
},
data() {
return {
postList: [
{
title: '测试1',
content: '啊啊啊啊啊啊啊啊啊啊啊'
},
{
title: '测试1',
content: '啊啊啊啊啊啊啊啊啊啊啊'
},
{
title: '测试1',
content: '啊啊啊啊啊啊啊啊啊啊啊'
},
{
title: '测试1',
content: '啊啊啊啊啊啊啊啊啊啊啊'
},
],
postCount: 100
}
} }
</script> <style scoped> </style>

2、添加PostList自定义组件,自定义组件中使用到了iView中的Card标签

<template>
<div style="background: #eee;padding: 1px;">
<Card :bordered="false">
<p>{{title}}</p>
<p>{{content}}</p>
</Card>
</div>
</template> <script>
export default {
name: "PostList",
props: {
title: {
type: String,
default: ''
},
content: {
type: String,
default: ''
},
postCount: {
type: Number,
default: 0
}
}
}
</script> <style scoped> </style>

3、效果(访问根路径的话,会自动渲染index.vue中的内容,具体看router/index.js中的路由配置)

4、用router-link生成一个可点击的链接,使能够跳转到具体内容页面(post.vue)--页面还是渲染到home.vue中,修改post-list.vue组件,添加了一个router-link,这样,再点击每一块的时候都会跳转到post.vue中,并且会带着postId值

<template>
<div style="background: #eee;padding: 1px; margin-left: 10%;margin-right: 10%">
<router-link tag="div" :to="{name:'Post',params:{postId:postId}}">
<Card :bordered="false">
<p>{{title}}</p>
<p>{{content}}</p>
</Card>
</router-link>
</div>
</template> <script>
export default {
name: "PostList",
props: {
postId: {
type: String,
default: ''
},
title: {
type: String,
default: ''
},
content: {
type: String,
default: ''
},
postCount: {
type: Number,
default: 0
}
},
methods: {}
}
</script> <style scoped> </style>

5、修改home页的menu标签,改成根据数据自动渲染菜单,zIndex这个是为了不覆盖菜单

<template>
<div class="layout">
<Layout>
<Header :style="{position: 'fixed', width: '100%',zIndex:'900'}">
<Menu mode="horizontal" theme="dark" active-name="1">
<div class="layout-logo">
<img src="static/img/logo.png" alt="">
</div>
<div class="layout-nav">
<MenuItem v-for="(item,index) in menuList" :name="index" :to="item.to" :key="index">
<Icon :type="item.icon"></Icon>
{{item.name}}
</MenuItem>
</div>
</Menu>
</Header> <Content :style="{margin: '88px 0 0', background: '#fff', minHeight: '500px'}">
<router-view></router-view>
</Content>
<Footer class="layout-footer-center">2011-2016 &copy; TalkingData</Footer>
</Layout>
</div>
</template> <script>
export default {
name: "home",
data() {
return {
menuList:[
{
name:'首页',
icon:'ios-navigate',
to:'index'
},
{
name:'类别',
icon:'ios-keypad',
to:'postClass'
},
{
name:'新建',
icon:'ios-analytics',
to:'create'
},
{
name:'修改',
icon:'ios-paper',
to:'edit'
},
{
name:'关于我',
icon:'ios-paper',
to:'aboutMe'
}
]
}
}
}
</script> <style scoped>
@import "../static/css/home.css"; </style>

6、首页基本功能写完后,使用mock模拟后台返回的json数据,此方式基于axios发送请求方式,因此安装axios

①npm install axios --save

②安装完成之后,将axios绑定为全局函数,因此在main.js中添加

import axios from 'axios'

Vue.prototype.$axios = axios

使用时: 

this.$axios.get('api/getNewsList')
.then((response)=>{
this.newsList=response.data.data;
}).catch((response)=>{
console.log(response);
}) 或者 import axios from 'axios'
import VueAxios from 'vue-axios' Vue.use(VueAxios,axios); 使用:
this.axios.get('api/getNewsList').then((response)=>{
this.newsList=response.data.data;
}).catch((response)=>{
console.log(response);
})

③安装mockjs

npm install mockjs --save-dev   //开发使用  所以加上dev

④修改main.js,添加自定义的mock.js(http://mockjs.com/

https://blog.csdn.net/xiaoxiaojie12321/article/details/81301399

require('./mock/mock.js')

⑤自定义mock.js

//引入mockjs
const Mock = require('mockjs')
// 获取mock.Random对象
const Random = Mock.Random
//mock数据
const data = () => {
let posts = []
for (let i = 0; i < 50; i++) {
let post = {
title: Random.csentence(5, 30),
content: Random.csentence(4000, 5000)
}
posts.push(post)
} return {
posts: posts
}
} Mock.mock('/api/posts','get',data)

⑥修改index.vue中的获取数据的方式

    created() {
this.$axios({
url: '/api/posts',
method: 'get'
}).then(response => {
this.postList = response.data.posts
console.log(this.postList)
})
}

⑦添加bootstrap支持

npm install bootstrap jquery --save

webpack.base.conf.js

  plugins:[
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"windows.jQuery": "jquery"
})
],

main.js

//boostrap
import $ from 'jquery'
import 'bootstrap/dist/css/bootstrap.min.css'
import 'bootstrap/dist/js/bootstrap.min.js'

整体:

点击每一个框:

vue - blog开发学习2的更多相关文章

  1. vue - blog开发学习5

    基本功能和后台联调 1.首页的所有博客 因为是前后台都是本地开发,所以前端vue需要设置proxy:修改/config/index.js中的这个proxyTable proxyTable: { '/a ...

  2. vue - blog开发学习1

    1.安装vue-cli vue intall -g vue-cli 2.创建项目 vue init webpack nblog 3.按提示要求配置项目 ? Project name nblog ? P ...

  3. vue - blog开发学习6

    1.问题,如下图,使用iviewui中的card导致页面不能出现滚动条(不太会弄,在网上查了一个vue组件vuescroll,因此使用这个做滚动条) 2.安装vuescroll cnpm instal ...

  4. vue - blog开发学习4

    1.新建页面的修改,集成富文本编辑 edit-post.vue(新建和修改都用该组件) <template> <div class="editor"> &l ...

  5. vue - blog开发学习3

    1.添加less 和less-loader支持 npm install less less-loader --save-dev 2.新建main.less,将这个样式添加到home.vue中的cont ...

  6. vue - blog开发学7

    将基本的项目部署到linux上(前后台只是实现了基本的功能,本次只是记录一些基本的开发流程,完善,等后续) 1.linux环境准备(我用的是阿里云服务器) ①jre.mysql,Nginx基本上这些就 ...

  7. Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发

    ===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...

  8. 前端开发 Vue -1windows环境搭建Vue Node开发环境

    解决几个疑问: 想学习下vue.js,我理解的它是一个前端的框架,主要作用是对数据的处理,和juqery类似,所以不太理解为什么要在nodejs中npm install vue呢?在html文件中引入 ...

  9. Android开发学习路线图

    Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...

随机推荐

  1. Scrapy框架: 通用爬虫之XMLFeedSpider

    步骤01: 创建项目 scrapy startproject xmlfeedspider 步骤02: 使用XMLFeedSpider模版创建爬虫 scrapy genspider -t xmlfeed ...

  2. 【题解】图的m着色问题

    题目背景 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的.图的m着色问题是对于给定图G和m ...

  3. c# WInform 自定义导航布局

    问题形成原因:软件一般都是左侧树导航或上部菜单导航,做好一个软件后,有的客户可能想用一个页面做导航图像,而各个客户用的功能可能不同,所以导航布局需要自定义. 思路:1.把菜单列出来 2.双击菜单生成一 ...

  4. 小程序中使用async函数 会报 regeneratorRuntime is not defined的问题

    async await比Promise更好的解决异步操作问题,但是在小程序中直接使用会出现以下的错误提示 是因为缺少了regeneratorRuntime这个模块,需要从外部引入 1.在新建的文件夹中 ...

  5. Linux历史命令管理以及用法

    history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...] -c: 清空命令历史 -d offset: ...

  6. Ubuntu命令行操作

    一.文件/文件夹管理 ls 列出当前目录文件(不包括隐含文件) ls -a 列出当前目录文件(包括隐含文件) ls -l 列出当前目录下文件的详细信息 cd .. 回当前目录的上一级目录 cd - 回 ...

  7. jQuery实现网页放大镜功能

    京东等电商网站中可以对商品进行放大观察,本文要实现的就是模仿这个放大镜功能,大致效果如下图所示: 简要说明实现思路: 1.原图窗口与放大窗口插入的是同一个图片,不过原图窗口的图片要适当缩小,放大窗口图 ...

  8. setattr(object, name, value)¶

    This is the counterpart of getattr(). The arguments are an object, a string and an arbitrary value. ...

  9. Concurrent - 线程池

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11426981.html ThreadPoolExecutor底层方法参数: @param corePo ...

  10. Spring data jpa 依赖配置

    <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...