
他们提供的接口是完全的,也就是说我们可以通过这些接口再做一个他们这样的论坛.
项目计划
1.做一个列表页面,可以读取cNodeJs的列表内容.
2.做一个详情页面,在列表页面点击链接,进入详情页面.
3.采用ssi技术实现html代码的复用.相关内容搜索ssi+shtml了解.
4.css代码使用sass预编译.
文件目录
├─index.shtml 渲染列表页面
├─content.shtml 渲染详情页面
├─inc 碎片文件
│ ├─bar.html 侧边栏代码
│ ├─footer.html 版权部分代码
│ ├─head.html head区域调用js等代码
│ └─header.html 页头logo以及导航代码
└─res 资源文件
├─image
├─js
│ ├─common 我的代码目录
│ │ ├─common.js 公共执行js
│ │ └─method.js 自定义方法js
│ ├─jquery jquery源码目录
│ ├─plugins 其他插件目录
│ │ └─laypage laypage 分页插件
│ └─vue VUE源码目录
└─style
├─style.scss sass源文件
├─style.css 编译好的css 文件
├─base
└─scss
下载我的源文件 https://github.com/fengcms/vue-cNodeJsOrgTest
开始写代码
首先是按照上面的文件目录设计,开始往里面写文件.res里面是资源目录,你可以稍微看下,或者知道里面是什么就可以了.
其实重点就是 index.shtml和content.shtml两个文件而已.
准备首页列表html文件
<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <title>title</title> <link rel="stylesheet" href="res/style/style.css"></head><body> <header class="header"> <h1 class="logo"> <a href="index.html" title="cnNodeJs.Org Home By FungLeo">cnNodeJs.Org Home By FungLeo</a> </h1> <nav class="nav"> <ul> <li>导航列表</li> </ul> </nav> </header> <section class="home"> <section class="main"> <ul class="list"> <li> <i class="user_ico"> <img src="#头像url" alt="用户名"> <span>用户名</span> </i> <time class="time">发表于 5 天前</time> <a class="talk" href="content.html?链接ID">帖子标题</a> </li> </ul> <div class="page"></div> </section> <aside class="bar"> <h3>本页说明</h3> ... </aside> </section> <footer class="copy"> 版权说明 </footer> <div class="go_top"></div></body></html>如上代码,是我首先写出来的静态页面.配合我的css,效果如下图所示:

完整代码请从github 里面获取
引入vue&jquery等js文件
<script src="res/js/jquery/jquery-2.2.3.min.js"></script><script src="res/js/vue/vue.min.js"></script><script src="res/js/common/common.js"></script>从接口获取数据
$(function(){ $.ajax({ type:"get", url:"http://cnodejs.org/api/v1/topics", dataType: "json", success: function(data){ if (data.success){ console.log(data) }else{ alert(JSON.stringify(data)); } }, error: function(data){ alert(JSON.stringify(data)); } });})代码如上,我们看下浏览器控制台,截图如下:
如上图所示,我们成功的拿到了数据.
分析数据

如上图所示,数据里面包含了如下内容
1.作者
1.作者头像url
2.作者用户名
2.作者ID
3.帖子内容
4.发布时间
5.是否是精华
6.帖子ID
7.最后回复时间
8.回复数量
9.归属标签
10.帖子标题
11.是否置顶
12.浏览统计
数据接口如上.当然,如果是做全功能的论坛的话,这些数据都是有作用的.而在我的项目中,有很多是用不到的.我们来看下我需要那些.
<li> <i class="user_ico"> <img src="#头像url" alt="用户名"> <span>用户名</span> </i> <time class="time">发表于 5 天前</time> <a class="talk" href="content.html?链接ID">帖子标题</a></li>如上代码所示,我们需要循环的内容包括
// ajax get json 方法function getJson(url,func){ $.ajax({ type:"get", url:url, dataType: "json", success: function(data){ if (data.success){ func(data); }else{ alert("接口调用失败"); } }, error: function(data){ alert(JSON.stringify(data)); } });}如上,在需要的地方,我们只需要用 getJson(url,func) 这个函数就可以了.$(function(){ var url = "http://cnodejs.org/api/v1/topics"; getJson(url,function(data){ console.log(data); });});修改成这样之后,我们再来看下,看看能不能打印出来我们所需要的数据?如下图所示:
没有任何问题,我们依然获得了数据.我们在把这个回调的函数再封装一下,改成下面的代码
$(function(){ var url = "http://cnodejs.org/api/v1/topics"; getJson(url,pushDom);});function pushDom(data){ console.log(data);}好,如果没有出错的话,绝对还是能够打印出来接口数据的.这样操作后,我们的代码就无比的简练,并且可阅读性大大增加了.而我们下面要做的事情,就是在 pushDom(data) 这个函数里面去做就好了.<li v-for="info in data"> <i class="user_ico"> <img src="{{ info.author.avatar_url }}" alt="{{ info.author.loginname }}"> <span>{{ info.author.loginname }}</span> </i> <time class="time">{{ info.create_at }}</time> <a class="talk" href="content.html?{{ info.id }}">{{ info.title }}</a></li>1vue知识点 function pushDom(data){ var vm = new Vue({ el: ".list", data: data });}我们来看一下效果:
好,非常兴奋,短短的几行代码,我们就成功用vue将列表给渲染出来了.
小结
1.ajax获取数据是关键
2.了解一点点vue的内容,就可以上手了.
3.构建项目时,代码和文件一定要清晰明了.
附录
VUE官方网站
cNodeJs Api 详细介绍
本系列教程源码下载
VUEJS 实战教程第一章,构建基础并渲染出列表
VUEJS 实战教程第二章,修复错误并且美化时间
VUEJS 实战教程第三章,利用laypage插件实现分页
本文由FungLeo原创
首发地址:http://blog.csdn.net/FungLeo/article/details/51649074
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。