Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VUEJS实战教程第一章,构建基础并渲染出列表

VUEJS实战教程第一章,构建基础并渲染出列表

作者头像
FungLeo
发布于 2022-05-05 13:27:23
发布于 2022-05-05 13:27:23
67500
代码可运行
举报
运行总次数:0
代码可运行

VUEJS实战教程第一章,构建基础并渲染出列表

2017年8月补充

2016年,我写了一系列的 VUE 入门教程,当时写这一系列博文的时候,我也只是一个菜鸟,甚至在写的过程中关闭了代码审查,否则通不过校验。

本来写这一系列的博文只是为了给自己看的,但没想到的是,这系列博文的点击量超过了2万以上,搜索引擎的排名也是非常理想,这让我诚惶诚恐,生怕我写的博文有所纰漏,误人子弟。

再者,这一年的发展,VUE 项目快速迭代,看着我一年前写的博文,很可能各种提示已经发生改变,对照着过时的资料,非常可能导致新手在学习的过程中产生不必要的困扰。

因此,本人决定,重写这个系列的博文,力求以简明、清晰、准确的图文以及代码描述,配合 github 的项目开源代码,给各位 VUE 新手提供一个高质量的入门文案。

以下为原文

前言

我的javascript水平比较一般.好吧,是相当的一般.因此,对于最新的前端框架技术,实在是有点困难,但现实让我必须面对.因此,学习是唯一的出路.

纵向比较了N款前端框架,最终选择了VUE ,为什么呢?理由如下:

  1. angular 前途不明,1.x学习曲线高,并且好像被放弃了,而2则还没有正式推出.
  2. react 比较厉害,但是没接触.
  3. VUE简单,通过上手,比较适合我的思维和水平.
  4. vue有中文文档,我看起来比较舒服.

既然决定学习vue,那么最好的学习方法就是实战.偶然看到 cNodeJs.Org 论坛有公开的api可以使用,这太方便了.于是,我决定用这个公开的api来写一个demo.

接口简介

这是 cNodeJs.Org 公开提供的的接口.当然,他不仅仅是用来给我们前端用的.可以用在各种程序上.接口地址是http://cnodejs.org/api 通过这个页面,详细介绍了相关的内容.

他们提供的接口是完全的,也就是说我们可以通过这些接口再做一个他们这样的论坛.

项目计划

  1. 做一个列表页面,可以读取cNodeJs的列表内容.
  2. 做一个详情页面,在列表页面点击链接,进入详情页面.
  3. 采用ssi技术实现html代码的复用.相关内容搜索ssi+shtml了解.
  4. css代码使用sass预编译.

文件目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
├─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.shtmlcontent.shtml两个文件而已.

准备首页列表html文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!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文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>

从接口获取数据

首先,无论怎么样,我们先要从接口拿到数据才能接着往下干.我们通过jqueryajax方法把数据拿过来再说.

如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(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. 浏览统计

数据接口如上.当然,如果是做全功能的论坛的话,这些数据都是有作用的.而在我的项目中,有很多是用不到的.我们来看下我需要那些.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>

如上代码所示,我们需要循环的内容包括

  1. 作者头像url
  2. 作者用户名
  3. 发布时间
  4. 帖子ID
  5. 帖子标题

没有问题,我们所需要的内容,接口全部都是有的.

封装 ajax 代码

ajax 代码虽然不长,但是我看着还是比较难受.因此,我用下面的代码进行封装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 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) 这个函数就可以了.

引用 封装好的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function(){
    var url = "http://cnodejs.org/api/v1/topics";
    getJson(url,function(data){
        console.log(data);
    });
});

修改成这样之后,我们再来看下,看看能不能打印出来我们所需要的数据?如下图所示:

没有任何问题,我们依然获得了数据.我们在把这个回调的函数再封装一下,改成下面的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function(){
    var url = "http://cnodejs.org/api/v1/topics";
    getJson(url,pushDom);
});
function pushDom(data){
    console.log(data);
}

好,如果没有出错的话,绝对还是能够打印出来接口数据的.这样操作后,我们的代码就无比的简练,并且可阅读性大大增加了.而我们下面要做的事情,就是在 pushDom(data) 这个函数里面去做就好了.

vue 渲染代码

首先,我们需要在页面中用 vue 的方法写入我们要插入的数据.

html代码部分

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>

vue知识点 循环数据 http://vuejs.org.cn/api/#v-for

JS代码部分

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function pushDom(data){
    var vm = new Vue({
        el: '.list',
        data: data
    });
}

我们来看一下效果:

好,非常兴奋,短短的几行代码,我们就成功用vue将列表给渲染出来了.

小结

  1. ajax获取数据是关键
  2. 了解一点点vue的内容,就可以上手了.
  3. 构建项目时,代码和文件一定要清晰明了.

本文由FungLeo原创,允许转载.但转载必须署名作者,并保留文章首发链接.否则将追究法律责任. 首发地址:http://blog.csdn.net/FungLeo/article/details/51649074

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VUEJS 实战教程第三章,利用laypage插件实现分页
2016年,我写了一系列的 VUE 入门教程,当时写这一系列博文的时候,我也只是一个菜鸟,甚至在写的过程中关闭了代码审查,否则通不过校验。
FungLeo
2022/05/05
4940
VUEJS 实战教程第三章,利用laypage插件实现分页
Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表
2016年,我写了一系列的 VUE 入门教程,当时写这一系列博文的时候,我也只是一个菜鸟,甚至在写的过程中关闭了代码审查,否则通不过校验。
FungLeo
2022/05/05
4530
Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表
VUEJS 实战教程第二章,修复错误并且美化时间
2016年,我写了一系列的 VUE 入门教程,当时写这一系列博文的时候,我也只是一个菜鸟,甚至在写的过程中关闭了代码审查,否则通不过校验。
FungLeo
2022/05/05
4910
VUEJS 实战教程第二章,修复错误并且美化时间
Vue cli 配置与列表的渲染 原
安装完Vue cli后会生成很多文件,大部分文件我们不需要管它,我们往往需要修改的是跟目录下的
tianyawhl
2019/04/04
5310
关于跨域
在使用Vue搭建的一个后端管理系统中,我使用axios请求本地的Node环境下的接口,但是请求失败,然后我错误信息是:
九旬
2020/10/23
6860
关于跨域
Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(五)配置 Axios api 接口调用文件
Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(五)配置 Axios api 接口调用文件 前情回顾 在上一篇《Vue2+VueRouter2+Web
FungLeo
2018/01/08
1.1K0
Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(五)配置 Axios api 接口调用文件
四、VueJs 填坑日记之搭建Axios接口请求工具
上一章,我们认识了项目的目录结构,以及对项目的目录结构做了一些调整,已经能把项目重新跑起来了。今天我们来搭建api接口调用工具Axios。Vue本身是不支持ajax调用的,如果你需要这些功能就需要安装
I Teach You 我教你
2018/01/02
1.2K0
四、VueJs 填坑日记之搭建Axios接口请求工具
ajax跨域问题以及解决方案_js跨域请求的三种方法
鼠标离开用户名输入框时,检查是否符合要求,如果为空,则给提示,如果不为空,则异步查询数据库,后返回结果;
全栈程序员站长
2022/09/23
3.7K0
ajax跨域问题以及解决方案_js跨域请求的三种方法
React + webpack 开发单页面应用简明中文文档教程(五)配置 api 接口请求文件
版权声明:本文为 FengCms FungLeo 原创文章,允许转载,但转载必须注明出处并附带首发链接 https://blog.csdn.net/FungLeo/article/details/80841241
FungLeo
2019/05/26
4750
PHP实现用户登录注册功能
初学php做了一些比较常见且有用的页面,放在上面记录一下咯 我是用了bootstrap框架里面的模态框做注册登陆页面,这样页面比较美观 页面效果:
用户8099761
2023/05/11
2.2K0
PHP实现用户登录注册功能
基于Jquery WeUI的微信开发H5页面控件的经验总结(2)
  在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI,本篇随笔结合官方案例和自己的项目实际开发过程的经验总结,对在H5页面开发过程中设计到的界面控件进行逐一的分析和总结,以期能够给大家在H5页面开发过程中提供有用的参考。
不会飞的小鸟
2020/03/25
1.6K0
大型项目技术栈第一讲 Vue.js的使用
Vue.js是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。
易兮科技
2020/09/27
5.2K0
大型项目技术栈第一讲  Vue.js的使用
jQuery基础(五)一Ajax应用与常用插件-imooc
本章介绍jQuery中支持Ajax的各种方法和函数,阐述通过Ajax交互的过程与常用方法,重点介绍核心方法$.ajax()的运用技巧。通过ajax全局事件的介绍,进一步巩固前面所学基础内容。
chenchenchen
2023/01/30
17.3K0
React + webpack 开发单页面应用简明中文文档教程(六)渲染一个列表,初识 jsx 文件
版权声明:本文为 FengCms FungLeo 原创文章,允许转载,但转载必须注明出处并附带首发链接 https://blog.csdn.net/FungLeo/article/details/80841255
FungLeo
2019/05/26
4280
教育平台项目前端:Vue.js 入门
Vue.js 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是 Vue 被设计为可以自底向上逐层应用。
RendaZhang
2020/09/08
4.4K0
JS实现的ajax和同源策略
其实AJAX就是在Javascript中多添加了一个对象:XMLHttpRequest对象。所有的异步交互都是使用XMLHttpServlet对象完成的。也就是说,我们只需要学习一个Javascript的新对象即可。
用户1214487
2022/03/26
2.6K0
JS实现的ajax和同源策略
SSM整合案例
解释jdbcUrl后面的参数useUnicode Mysql jdbc URL连接参数useSSL、serverTimezone 相关问题
大忽悠爱学习
2021/11/15
4.4K0
【SpringBoot】从零开始全面解析SpringMVC (三)
需求: 界面如上图所示👆 1. 输入留言信息, 点击提交. 后端把数据存储起来. 2. 页面展示输入得表白墙的信息.
用户11369350
2025/05/20
1200
【SpringBoot】从零开始全面解析SpringMVC (三)
第一章 : Vue2 技术精讲
① 对象 → 键就是类名,值是布尔值。如果值为 true,有这个类,否则没有这个类
捞月亮的小北
2023/12/01
2450
第一章 : Vue2 技术精讲
前端基础知识总结
注意:这个组件的创建无需在页面中书写任何标签,是一个js插件,在需要展示消息提示的位置直接调用提供的js插件方法即可。
栖西
2023/10/17
1.4K0
推荐阅读
相关推荐
VUEJS 实战教程第三章,利用laypage插件实现分页
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档