博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue2+VueRouter2+webpack 构建项目实战(四):接通api,渲染列表
阅读量:6927 次
发布时间:2019-06-27

本文共 3406 字,大约阅读时间需要 11 分钟。

通过前面几篇教程,我们已经顺利搭建起来了,并且已经组建好路由了。本章节,我们需要做一个列表页面,然后利用获取 的公开API,渲染出来。

我们打开src/page/index.vue文件,在这里写入下面的代码:

通过浏览器,我们可以看到如图所示的渲染结果:

图片描述

使用scss写样式

新建文件, src/style/scss/_index.scss

然后在 src/style/style.scss中输入

@import "scss/index";

然后,我们就可以在浏览器中,看到带样式的列表了,如图所示:

图片描述

注:我的习惯是,一个文件,一个样式,文件位于src/page/文件夹下面,样式位于src/style/scss下面。文件和样式同名。如果文件位于子目录,如src/page/user/pay.vue,那么,对应的scss文件就是src/style/scss/user/_pay.scss这样。

每一个团队的规范都是不一样的,都是各有所长的,重要的是,条理性。

调用api.js

在第二节中,我们在src/config目录下面建立了一个api.js的空文件。在第三节中没有使用。本节,我们要开始使用了。

首先,我们编辑 src/main.js ,引用 src/config/api.js。如下:

import api from './config/api'Vue.prototype.$api = api

插入这两行代码,就引用好了api.js,并且,把它绑定到了全局,然后我们就可以在各种地方使用这个文件了。虽然这个文件是空的。

那么src/main.js的完整代码:

import Vue from 'vue'import App from './App'import router from './config/routes.js'Vue.config.productionTip = falseimport api from './config/api.js'Vue.prototype.$api = apinew Vue({  el: '#app',  router,  template: '
', components: { App }})

安装superagent组件

要请求接口,就必须有相对应的组件。如果你使用过jQuery,应该熟悉其中的AJAX方法。当然,在vue中,我们就不考虑使用jquery了。我们使用superagent这个组件。

安装非常简单,我们首先跳转到项目根目录,然后输入 npm install superagent -D进行安装。

图片描述

编写api.js文件

有了工具了,我们就需要来编写api.js文件,使它可以完成我们想要的工作。

// 配置API接口地址var root = 'https://cnodejs.org/api/v1';// 引用superagentvar request = require('superagent');// 自定义判断元素类型JSfunction toType(obj) {  return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}// 参数过滤函数function filter_null(o) {  for (var key in o) {    if (o[key] == null) {      delete o[key]    }    if (toType(o[key]) == 'string') {      o[key] = o[key].trim()      if (o[key].length == 0) {        delete o[key]      }    }  }  return o}/*  接口处理函数  这个函数每个项目都是不一样的,我现在调整的是适用于  https://cnodejs.org/api/v1 的接口,如果是其他接口  需要根据接口的参数进行调整。参考说明文档地址:  https://cnodejs.org/topic/5378720ed6e2d16149fa16bd*/function _api_base(method, url, params, success, failure) {  var r = request(method, url).type('text/plain')  if (params) {    params = filter_null(params);    if (method === 'POST' || method === 'PUT') {      if (toType(params) == 'object') {        params = JSON.stringify(params);      }      r = r.send(params)    } else if (method == 'GET' || method === 'DELETE') {      r = r.query(params)    }  }  r.end(function(err, res) {    if (err) {      alert('api error, HTTP CODE: ' + res.status);      return;    };    if (res.body.success == true) {      if (success) {        success(res.body);      }    } else {      if (failure) {        failure(res.body);      } else {        alert('error: ' + JSON.stringify(res.body));      }    }  });};// 返回在vue模板中的调用接口export default {  get: function(url, params, success, failure) {    return _api_base('GET', root + '/' + url, params, success, failure)  },  post: function(url, params, success, failure) {    return _api_base('POST', root + '/' + url, params, success, failure)  },  put: function(url, params, success, failure) {    return _api_base('PUT', root + '/' + url, params, success, failure)  },  delete: function(url, params, success, failure) {    return _api_base('DELETE', root + '/' + url, params, success, failure)  },}

这个文件就有点狂拽酷炫吊炸天了。目前,我们测试cnodejs.org的接口,我调整得可以使用。实际上在其他的接口项目中,这个是需要调整的,要调整到你的项目合适的代码。主要是根据接口返回的内容进行各种判断和处理,其中主要的框架代码是不用动的。

模板中调用api接口试试

编辑src/page/index.vue文件,代码如下:

保存后,我们在浏览器中,就可以看到渲染出来的列表了。如下图所示:

图片描述

参考

参考地址:

转载地址:http://aiecl.baihongyu.com/

你可能感兴趣的文章
微信JS SDK Demo
查看>>
base64编码、解码的C语言实现
查看>>
HTML5中Access-Control-Allow-Origin解决跨域问题
查看>>
android: 服务的生命周期
查看>>
JBoss7安装、测试、配置和启动以及停止,部署
查看>>
[备忘]Redis运行出现Client sent AUTH, but no password is set
查看>>
PHP判断远程文件是否存在
查看>>
函数传递一维数组
查看>>
WebComponent魔法堂:深究Custom Element 之 从过去看现在
查看>>
Picard 法求方程根
查看>>
c语言中有bool型变量吗?
查看>>
Null值的使用
查看>>
《程序设计与数据结构》 课程教学
查看>>
注册asp.net
查看>>
java.net.ProtocolException: Exceeded stated content-length of: '13824' bytes
查看>>
详解Spring事件驱动模型
查看>>
内存分配有哪些策略
查看>>
WebView与JS的几种交互
查看>>
ffmpeg去logo<转>
查看>>
下载Tomcat时Tomcat网站上的core和deployer的区别
查看>>