Slog34_支配vue框架初阶项目之博客网站-注册页面-前后端的数据交互

news/2024/4/27 8:47:53/文章来源:https://blog.csdn.net/weixin_34334744/article/details/88750526
  • ArthurSlog
  • SLog-34
  • Year·1
  • Guangzhou·China
  • Aug 10th 2018

关注微信公众号“ArthurSlog”

  • GitHub
  • 掘金主页
  • 简书主页
  • segmentfault

沉睡的狮子 即将醒来 而世界将为之震撼


开发环境MacOS(High Sierra 10.13.5)

需要的信息和信息源:

  • HTTP概述
  • HTTP
  • 互联网是如何工作的
  • 万维网是如何工作的
  • 统一资源定位符(URL)
  • 什么是超链接
  • 创建超链接
  • AJAX是异步的JavaScript和XML(Asynchronous JavaScript And XML)
  • XMLHttpRequest
  • Using files from web applications

开始编码

  • 在Slog33里,使用了 vue.js 框架让 html 文件里的元素和 js 文件里的代码互相关联,以便于在 js 文件里使用 js 代码对 html 文件里的元素进行控制;
  • 在 js 文件里,使用 vue.js 的规则编写 js 代码,在这里就有个问题了,api是参考 webAPI 还是 vue.js 框架的 API?这个问题,留着在开发过程中解决
  • 在 js 里编写的 js 代码,其实做的事情就是 “获取 html 文件里元素的数据”、“获取 html 文件里元素的数据,并对数据进行处理”、“获取 html 文件里元素的数据,并传送给服务端”、“获取 html 文件里元素的数据,并传送给服务端,等待接收服务端传来的数据” 等这些操作
  • 上面说的这些东西不需要背(因为你也背不住),只要在开发过程中参照 vue.js官方文档 并结合 web规范就可以编写需要的功能,一般情况下,这些文档都是类似于说明说或者字典的存在,然而....,并不是每个人都会按照这样的思路去做,如果你觉得有更适合你自己的方法,何妨一试,不过请记得控制你的时间成本
  • 如果你根据我Slog33中的 html 文件修改,最终的结果是数据关联会有一点问题,所以先让我们把问题先解决(目前为止,我们说的只是前端的 html 和 js)

signup.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><link rel="stylesheet" type="text/css" href="./css/style.css"><!-- 开发环境版本,包含了有帮助的命令行警告 --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><title>signup_ArthurSlog</title>
</head><body><div id="signup-container"><div>This is signup's page by ArthurSlog</div><p>Singup</p><form id="form" v-on:submit="addUser"><br><div>Account: {{ name }}<br><input type="text" v-model="name" placeholder="username"></div><br><br><div>Password: {{ password }}<br><input type="text" v-model="password" placeholder="password"></div><br><br><div>Again Password: {{ repassword }}<br><input type="text" v-model="repassword" placeholder="repassword"></div><br><br><div>First Name: {{ firstname }}<br><input type="text" v-model="firstname" placeholder="firstname"></div><br><br><div>Last Name: {{ lastname }}<br><input type="text" v-model="lastname" placeholder="lastname"></div><br><br><div>Birthday: {{ birthday }}<br><input type="text" v-model="birthday" placeholder="2000/08/08"></div><br><br><div><span>Sex: {{ currentSex }}</span><br><input type="radio" id="sex" value="male" v-model="currentSex"><label for="sex">male</label><br><input type="radio" id="sex" value="female" v-model="currentSex"><label for="sex">female</label></div><br><br><div><span>Age: {{ currentAge }}</span><br><select v-model="currentAge" id="age"><option disabled value="">Select</option><option v-for="age in ages">{{ age }}</option></select></div><br><br><div>Wechart: {{ wechart }}<br><input type="text" v-model="wechart" placeholder="wechart's name"></div><br><br><div>QQ: {{ qq }}<br><input type="text" v-model="qq" placeholder="12345678"></div><br><br><div>Email: {{ email }}<br><input type="text" v-model="email" placeholder="12345678@qq.com"></div><br><br><div>Contury: {{ contury }}<br><input type="text" v-model="contury" placeholder="China"></div><br><br><div>Address: {{ address }}<br><input type="text" v-model="address" placeholder="Guangzhou"></div><br><br><div>Phone: {{ phone }}<br><input type="text" v-model="phone" placeholder="138********"></div><br><br><div>Websize: {{ websize }}<br><input type="text" v-model="websize" placeholder="xxx.com"></div><br><br><div>Github: {{ github }}<br><input type="text" v-model="github" placeholder="Github's URl"></div><br><br><div>Bio: {{ bio }}<br><input type="text" v-model="bio" placeholder="This is the world~"></div><br><br><input type="submit" value="完成注册"></form><a href="./index.html">Return index's page</a><br><br><div><ul><li v-for="record in commits"><span class="username">{{ record }}</span></li></ul></div></div><script src="./js/signup.js"></script>
</body></html>
  • 再看一下 js 文件

signup.js

var host = 'http://127.0.0.1:3000/signup?';var signup_container = new Vue({el: '#signup-container',data: {name: '',password: '',repassword: '',firstname: '',lastname: '',birthday: '',sexs: ['male', 'female'],currentSex: 'male',ages: ['1', '2', '3', '4', '5', '6', '7', '8','9', '10', '11', '12', '13', '14', '15', '16', '17', '18'],currentAge: '18',wechart: '',qq: '',email: '',contury: '',address: '',phone: '',websize: '',github: '',bio: '',commits: ['null', 'null']},methods: {addUser: function () {var xhr = new XMLHttpRequest()xhr.open('GET', host + 'name=' + this.name + '&password=' + this.password + '&firstname=' + this.firstname + '&lastname=' + this.lastname + '&birthday=' + this.birthday+ '&sex=' + this.currentSex + '&age=' + this.currentAge + '&wechart=' + this.wechart+ '&qq=' + this.qq + '&email=' + this.email + '&contury=' + this.contury+ '&address=' + this.address + '&phone=' + this.phone + '&websize=' + this.websize+ '&github=' + this.github + '&bio=' + this.bio, true)xhr.send()}}})
  • 注意看到 html 文件里的 form 部分
<form id="form" v-on:submit="addUser">...<input type="submit" value="完成注册">
</form>
  • 在这里 v-on:submit 属于 vue.js 的模版语法,作用是 “可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码”
  • 像上面这样,在 js 文件里的 “method” 里创建一个 addUser 的方法,当你在 html 上点击完成注册的按钮的时候,就会调用 addUser 这个方法,方法就会执行你自己编写的逻辑
  • 我们现在需要让这个 addUser 方法把我们填写的注册信息,传送给服务端,并等待服务端的执行结果(成功或者失败),然后在页面上显示出来执行的结果
  • 去哪里找到这样的方法呢?首先想到的是 webAPI,试着去官网找一下
  • 再来看看,根据 vue.js 框架的介绍中,vue 的 js 文件结构,因此在方法中:
methods: {addUser: function () {var xhr = new XMLHttpRequest()xhr.open('GET', host + 'name=' + this.name + '&password=' + this.password + '&firstname=' + this.firstname + '&lastname=' + this.lastname + '&birthday=' + this.birthday+ '&sex=' + this.currentSex + '&age=' + this.currentAge + '&wechart=' + this.wechart+ '&qq=' + this.qq + '&email=' + this.email + '&contury=' + this.contury+ '&address=' + this.address + '&phone=' + this.phone + '&websize=' + this.websize+ '&github=' + this.github + '&bio=' + this.bio, true)xhr.send()}
}
  • XMLHttpRequest标准定义了一个API,它提供脚本客户端功能,用于在客户端和服务器之间传输数据;其中的 xhr.open() 方法,其实就是给服务端发送 http 请求,所以使用这个方法的时候,会生如下这样的请求,并发送给服务端:
http://127.0.0.1:3000/signup?name=???&password=???... 这后面的依此类推,我就不写了,因为很长
  • 上面的请求中,需要包含用户输入的数据,比如name、password等等,其中的 ???三个问号,就是代表用户输入的具体的值,在方法中,我们使用 this.name 这样的语法来获取用户输入的值,为什么不能直接使用 name 呢?因为我试过了,不行,哈哈,以后会解释的
    xhr.open('GET', host + 'name=' + name + '&password=' + password + '&firstname=' + firstname + '&lastname=' + lastname + '&birthday=' + birthday+ '&sex=' + currentSex + '&age=' + currentAge + '&wechart=' + wechart+ '&qq=' + qq + '&email=' + email + '&contury=' + contury+ '&address=' + address + '&phone=' + phone + '&websize=' + websize+ '&github=' + github + '&bio=' + bio, true)
  • 再来看一下 xhr.send() 方法,参考 官方说明
XMLHttpRequest.send() 方法用于发送 HTTP 请求。如果是异步请求(默认为异步请求),则此方法会在请求发送后立即返回;如果是同步请求,则此方法直到响应到达后才会返回。XMLHttpRequest.send() 方法接受一个可选的参数,其作为请求主体;如果请求方法是 GET 或者 HEAD,则应将请求主体设置为 null。如果没有使用setRequestHeader()方法设置 Accept 头部信息,则会发送带有* / *的Accept 头部。
  • ok,现在启动你的服务器(server路径下)
node index.js
  • 然后,打开浏览器,输入 127.0.0.1:3000,进入注册界面,填写完你的注册信息,点击“完成注册”按钮
  • 现在,返回主页,进入登陆界面,填写你刚刚注册的账号和密码,点击登陆,正常情况下,登陆成功后会返回一串 json 字符串
  • 至此,我们在使用 vue.js 框架的情况下,实现了前后端的数据交互。

欢迎关注我的微信公众号 ArthurSlog

ArthurSlog

如果你喜欢我的文章 欢迎点赞 留言

谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_732544.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈web网站架构演变过程

原文:浅谈web网站架构演变过程前言 我们以javaweb为例&#xff0c;来搭建一个简单的电商系统&#xff0c;看看这个系统可以如何一步步演变。 该系统具备的功能&#xff1a;用户模块&#xff1a;用户注册和管理商品模块&#xff1a;商品展示和管理交易模块&#xff1a;创建交易和…

网站备案知多少

网站备案知多少 DBAplus社群 2016-09-13 21:00:13 首先谈谈为什么要备案据工信部规定&#xff0c;使用大陆境内服务器的组织或个人&#xff0c;若要使用独立域名开办网站 &#xff0c;就需要履行备案手续。就像开公司要去工商局申请执照一样&#xff0c;在国内&#xff0c;没有…

GoTxt网页内容提取器,可提取小说网,360doc网站的文字

为什么80%的码农都做不了架构师&#xff1f;>>> 以前写的一个网站文本提取器&#xff0c;很粗的&#xff0c;最近没时间改&#xff0c;把源码和jar文件分享出来 程序运行截图&#xff1a; 代码地址&#xff1a;https://github.com/doobo/GoTxt 转载于:https://my.o…

大型分布式网站架构技术总结:高性能+高可用+可扩展+可伸缩架构

本文是大型分布式网站架构的技术总结&#xff0c;文末有分布式架构设计33精讲资料~ 一、大型网站架构特点 用户多&#xff0c;分布广泛 大流量&#xff0c;高并发 海量数据&#xff0c;服务高可用 安全环境恶劣&#xff0c;易受网络攻击 功能多&#xff0c;变更快&#xff0c;频…

邪恶花网站邪恶花_相关的子查询是“邪恶的”和“缓慢的”。 还是他们?

邪恶花网站邪恶花SQL中一个常见的神话是&#xff0c;相关子查询是邪恶且缓慢的。 例如&#xff0c;此查询在这里&#xff1a; SELECT first_name, last_name,(SELECT count(*) FROM film_actor fa WHERE fa.actor_id a.actor_id) FROM actor a它“强制”数据库引擎运行以下形…

如何把自己的wordpress网站移到本地修改

有时候wordpress更换模板时&#xff0c;需要修改的地方很多&#xff0c;而且在线修改不是很好。只能把它移动到电脑本地进行修改了。这样修改好就可以直接套用到网站上了。 1、通过服务器控制面板或FTP整站打包&#xff0c;发送到你已经在电脑本地搭建ApachePHPMySQL环境的网站…

网站pv uv 停留时间 等统计

为什么80%的码农都做不了架构师&#xff1f;>>> 日志中心收集网站访问数据内容 基于nginx记录用户cookie的行为&#xff0c;进行分析 一、用户cookie。 需要创建3个cookie文件_gtra、_gtrb、_gtrc&#xff0c;其中_gtra用来追踪用户&#xff0c;_gtrb和_gtrc联合来…

手机网站的注意事项

2019独角兽企业重金招聘Python工程师标准>>> 一.web app 手机网站的注意事项: 1.安卓浏览器看背景图片,有些设备会模糊--> devicePixeRatio手机分辨率过小造成,解决方法使用2倍背景图代替img标签. 2.图片加载很慢--> 手机开发一般用canvas方法加载 3.手机端不…

《流量的秘密 Google Analytics网站分析与商业实战》一1.3 Google Analytics的地位

本节书摘来自异步社区《流量的秘密 Google Analytics网站分析与商业实战》一书中的第1章&#xff0c;第1.3节&#xff0c;作者 【英】Brian Clifton&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 1.3 Google Analytics的地位 你的网站对你来说是极其重要的…

一个止传SWF的好网站

SwfCabin 是一個免費swf空間&#xff0c;最初建立的構想在於「如何在網路上將swf檔分享給別人」。使用者可以將swf檔上傳到 SwfCabin 然後獲得一個連結&#xff0c;其他人便可以在該頁面看到您所上傳的swf檔案。上傳檔案時 SwfCabin 會自動辨識該檔案最適當的顯示尺寸。除此之外…

大型网站架构之分布式缓存

缓存是优化网站性能的第一手段。在大型网站中&#xff0c;缓存通常用来保存热点数据&#xff0c;或者保存应用上下文相关信息。比如之前提到的session服务器集群就可以用分布式缓存来搭建。当然&#xff0c;分布式缓存还可用于缓存数据库中的热点数据以减轻数据库的压力。 分布…

决议要素_2020年每个网站测试人员的新年决议

决议要素您能够根据2019年的决议进行工作吗&#xff1f; 我在这里听起来可能很可笑&#xff0c;但是作为Web开发人员&#xff0c;我在2019年的决心是在业余时间跳入Web测试。 为什么&#xff1f; 因此&#xff0c;我可以从测试人员的角度了解发布周期。 我想穿他们的鞋子&#…

Thinking——nodejs实现的SEO相关的库

SEO SEO是为了网站在搜索引擎中的自然排名更靠前&#xff0c;引入更多的用户流量。SEO有很多技巧&#xff0c;譬如官网多发优质文章&#xff0c;文章的url做成静态化&#xff0c;文章多出现一些搜索相关的关键字&#xff0c;自建站群等等。 百度收录 百度定期会对优质文章进行收…

下拉框系统甄选火星推荐_seo关键词下拉框优化技术

“seo关键词下拉框优化技术,百度下拉框的算法,一个关键词每天有多少搜索量,和它相关的词有多少搜索量,这些数据百度都记录在案的,在百度搜索一个较短关键词的时候,下拉框中可能会出现一些和它相关的一些长尾词.”百度下拉框关键词指的是就是在百度搜索某一个关键词的时候&#…

大型网站架构演化历程

http://www.hollischuang.com/archives/728 本文内容大部分来自《大型网站技术架构》,这本书很值得一看&#xff0c;强烈推荐。 大型网站系统的特点 高并发&#xff0c;大流量 需要面对高并发用户&#xff0c;大流量访问。Google 日均 PV 35 亿&#xff0c;日 IP 访问数 3 亿&a…

SEO优化手工外链为什么更好?

开发十年&#xff0c;就只剩下这套Java开发体系了 >>> 手工发布的外链&#xff0c;是这个完结百度的网站权重与关键词排行优化的&#xff1a;咱 们通过手工在论坛/博客上回复主题帖子&#xff0c;并带有锚文体链接&#xff0c;这样的单向链接直接指 向你的网站&…

SEO核心技术纯白帽快速排名方法

我相信很多朋友都知道SEO快速排名&#xff0c;现在流行的快速排名都是众人皆知的黑帽SEO技术&#xff0c;但是却唯独不知道纯白帽也可以快速排名。但是我估计大家都看到过很多新站在短短数月内就上了首页&#xff0c;权重从0升到3&#xff0c;这难道是黑帽吗&#xff0c;不是的…

实验----实现基于LNMP的电子商务网站

实现基于LNMP的电子商务网站一、准备LNMP环境所需的包&#xff1a;yum install mariadb-server php-fpm php-mysql nginx二、准备网站&#xff1a;mkdir -p /data/web 建站点unzip -d /data/web xiaomi.zip 导入小米网站的源码包并解压到/data/webcd /data/web &…

pageSpeed Insights 图片对网站优化方案

2019独角兽企业重金招聘Python工程师标准>>> 一 规则 如下归纳几点 可供参考。<br> 避免使用着陆页面重定向 启用压缩功能 缩短服务器相应应用时间 使用浏览器缓存机智 缩短资源大小 优化图片 优化css发送过程 优化加载可见内容 移除会阻止呈现内容的javaScri…

网站常见问题1分钟定位 - 如何使用阿里云ARMS诊断Java应用卡顿问题

不要慌&#xff0c;上面只是一张贴图。为什么“慢”那么难查 网站卡顿、页面加载过慢是互联网应用最常见的问题之一。排查、解决这类问题通常会花费开发运维人员大量的时间&#xff0c;通常是因为以下三个原因&#xff1a;应用链路太长&#xff0c;无从下手。从前端页面到后台网…