Slog25_支配vue框架初阶项目之博客网站-登陆功能

news/2024/4/28 19:28:38/文章来源:https://blog.csdn.net/weixin_34125592/article/details/88748343
  • ArthurSlog
  • SLog-25
  • Year·1
  • Guangzhou·China
  • July 27th 2018

关注微信公众号“ArthurSlog”

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

人的成长 几乎是决定于资源和平台 天份再怎么好的人 没有资源的支持 也无法成才 没有平台的扶持 也无法发挥作用


开发环境MacOS(High Sierra 10.13.5)

需要的信息和信息源:

开始编码

  • 首先,安装homebrow这个工具来协助我们 (如果已经安装brow就跳过这一步)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent...)"
  • 使用brew安装mysql (如果已经安装mysql就跳过这一步)
brew install mysql
  • 启动mysql,检查mysql是否完整安装
mysql.server start
  • Starting MySQL
  • .SUCCESS!
  • 配置Mysql,设置root账户的密码为8个8
mysqladmin -u root password 88888888
  • 登陆数据库
mysql -u root -p
  • 输入密码,再按enter键,命令行会变成以下状态
mysql>
  • 输入SQL命令,按enter键执行,列出已有的数据库
mysql> show databases;
Database
information_schema
mysql
performance_schema
sys

4 rows in set(0.01 sec)

  • 我们创建一个数据库"my_db"
mysql> create database my_db;

Query OK, 1 row affected (0.02 sec)

  • 进入my_db数据库
mysql> use my_db;

Database changed

  • 我们创建一个表“Account"
mysql> CREATE TABLE Account
(
ID int NOT NULL AUTO_INCREMENT,
AccountName varchar(255) NOT NULL,
Password varchar(255) NOT NULL,
PRIMARY KEY (ID)
);

Query OK, 0 rows affected (0.09 sec)

  • 向Account表里插入一行数据
mysql> INSERT INTO Account (AccountName, Password)
VALUES ('ArthurSlog','ArthurSlog');

Query OK, 1 row affected (0.08 sec)

  • 查看一下Account表
mysql> SELECT * FROM Account;

ID|AccountName|Password

1 | ArthurSlog | ArthurSlog
1 row in set (0.00 sec)

  • 退出mysql交互模式
exit;

Bye

  • 切换至项目路径下
cd node_vue_directive_learningload
  • 接下来,我们来完善一下登陆页面 “signin.html”:

signin.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>signin_ArthurSlog</title>
</head><body><div>This is signin's page by ArthurSlog</div><p>Singin</p><form action="http://127.0.0.1:3000/singin" method="GET">Name: <br><input type="text" name="name"> <br>Password: <br><input type="text" name="password"><br><br><input type="submit" value="登陆"></form><a href="./account.html">Signin</a><br><a href="./index.html">Return index's page</a></body></html>
  • 上面的代码增加了使用账号和密码登陆的模块,关于表单
<form action="http://127.0.0.1:3000/singin" method="GET">Name: <br><input type="text" name="name"> <br>Password: <br><input type="text" name="password"><br><br><input type="submit" value="登陆">
</form>
  • 接下来我们编写后端对应的部分

index.js

const serve = require('koa-static');
const Koa = require('koa');
const app = new Koa();
const Router = require('koa-router');
const router = new Router();// $ GET /package.json
app.use(serve('.'));//登陆模块 signin()
router.get('/signin', async (ctx) => {var mysql = require('mysql');var connection = mysql.createConnection({host: 'localhost',user: 'root',password: '88888888',database: 'mysql_db'});connection.connect(function (err) {if (err) {console.error('error connecting: ' + err.stack);return;}console.log('connected as id ' + connection.threadId);});var response = {"name": ctx.query.name,"password": ctx.query.password};var addSql = 'SELECT * FROM Account WHERE AccountName=?';var addSqlParams = [response.name];ctx.body = await new Promise((resolve, reject) => {connection.query(addSql, addSqlParams, function (err, result) {if (err) {reject(err);console.log('[SELECT ERROR] - ', err.message);return;}if (result[0].Password == response.password) {resolve(result[0]);console.log('Welcome~ SingIn Successul ^_^' + '\\' + 'Level: ' + result[0].Level + ' Houses: ' + result[0].Houses);}if (result[0].Password != response.password) {reject('SingIn Fault ^_^!');console.log('SingIn Fault ^_^!');}});});connection.end();
});app.use(router.routes());app.listen(3000);console.log('listening on port 3000');
  • 在使用express框架的时候,express 用来传值的是 req 和 res,req 就是从前端网页传过来的信息,而 res 就是我们后端传给前端的信息,这样的设计是根据 http协议 决定的,其中
  • http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] 这是http协议定义的URL协议标准

在express框架环境中

app.get('/signup', function (req, res) {var mysql      = require('mysql');var connection = mysql.createConnection({host     : 'localhost',user     : 'root',password : '88888888',database : 'my_db'});connection.connect();var response = {"name":req.query.name,"password":req.query.password};var  addSql = 'INSERT INTO Account(AccountName, Password) VALUES(?,?)';var  addSqlParams = [response.name, response.password];connection.query(addSql,addSqlParams,function (err, result) {if(err){console.log('[INSERT ERROR] - ',err.message);res.send('执行sql出错!');return;}res.send('Welcome~ SingUp Success ^_^');});connection.end();});
  • 关键的地方在于,koa框架 不同于 express框架,我们需要让页面在数据库命令执行完成后再进行渲染,以便我们把从数据库获取到的值完整的传给前端,所以我们需要修改一下语法
  • 因为 mysql中间件 使用回调而不是承诺(promise),因此,要使用await来构建承诺(promise),如下面代码一样,它将等待承诺得到解决或拒绝

登陆模块 signin()

var response = {"name": ctx.query.name,"password": ctx.query.password
};var addSql = 'SELECT * FROM Account WHERE AccountName=?';
var addSqlParams = [response.name];ctx.body = await new Promise((resolve, reject) => {connection.query(addSql, addSqlParams, function (err, result) {if (err) {reject(err);console.log('[SELECT ERROR] - ', err.message);return;}if (result[0].Password == response.password) {resolve(result[0]);console.log('Welcome~ SingIn Successul ^_^' + '\\' + 'Level: ' + result[0].Level + ' Houses: ' + result[0].Houses);}if (result[0].Password != response.password) {reject('SingIn Fault ^_^!');console.log('SingIn Fault ^_^!');}});
});
  • koa 框架与 express 框架不同的地方还在于,koa 使用 “ctx” 代替了 express 框架的 “req” 和 “res”
  • 把 request 和 response 集合成一个 ctx,ctx对应了 req 和 res 的每个属性,参考 koa官方手册

Request 别名

以下访问器和 Request 别名等效:ctx.header
ctx.headers
ctx.method
ctx.method=
ctx.url
ctx.url=
ctx.originalUrl
ctx.origin
ctx.href
ctx.path
ctx.path=
ctx.query
ctx.query=
ctx.querystring
ctx.querystring=
ctx.host
ctx.hostname
ctx.fresh
ctx.stale
ctx.socket
ctx.protocol
ctx.secure
ctx.ip
ctx.ips
ctx.subdomains
ctx.is()
ctx.accepts()
ctx.acceptsEncodings()
ctx.acceptsCharsets()
ctx.acceptsLanguages()
ctx.get()

Response 别名

以下访问器和 Response 别名等效:ctx.body
ctx.body=
ctx.status
ctx.status=
ctx.message
ctx.message=
ctx.length=
ctx.length
ctx.type=
ctx.type
ctx.headerSent
ctx.redirect()
ctx.attachment()
ctx.set()
ctx.append()
ctx.remove()
ctx.lastModified=
ctx.etag=
  • 例如,你需要获取前端表单里的 “name” 值:
var name = ctx.query.name;
  • 再举个栗子,给前端返回一些数据:
ctx.body = 'Hello ArthurSlog~';
  • 现在,使用 npm 指令,安装 mysql中间件 和 koa-router中间件
sudo npm install mysql koa-router
  • 你还可以选择 mysql2中间件,使用方法参考链接的官方手册
  • ok,现在,启动静态web服务器
node index.js
  • 打开浏览器,在地址栏输入 127.0.0.1:3000
  • 点击 Signin 进入登陆界面
  • 输入账号: ArthurSlog 密码:ArthurSlog
  • 点击登陆,成功返回 Json 数据
{"ID":1,"AccountName":"ArthurSlog","Password":"ArthurSlog"}
  • 至此,我们完成了前端的登陆功能和后端的登陆模块。

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

ArthurSlog

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

谢谢

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

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

相关文章

SEO人员:频繁更新首页,会被惩罚吗?

SEO是一个多细节的工作&#xff0c;影响网站排名的因素有很多&#xff0c;其中&#xff0c;广为大家讨论的就是网站首页&#xff0c;严格意义上讲&#xff0c;它对整站优化&#xff0c;起着重要的引导作用。但经常有SEO人员讨论网站首页更新对SEO的影响&#xff0c;面对这个问题…

难怪你做事每次都比别人快,原来用了这黑科技网站,请低调收藏!

1. 别样网经常有人因为盗图而被告&#xff0c;在这里是不存在的&#xff0c;精彩纷呈的图片海量随你挑选&#xff0c;而且里面的图片像素非常的高。2. Owllook非常强大的电子书资源搜索网站&#xff0c;而且里面的小说是免费的&#xff0c;页面整洁无广告。基本上你搜的小说它都…

centos7系统下安装php-fpm并配置nginx支持并开启网站gzip压缩

注&#xff1a;此处不介绍nginx的安装。以下教程默认已安装nginx。 1. yum install -y php-fpm yum install php-pdo yum install php-mysql yum install php-xml yum安装默认版本是php5.4,要使用更高版本可使用yum search all php-fpm安装自己需要的版本. 2. 启动php-fpm&…

如何理解“跳出率”,它对SEO有什么影响?

跳出率是搜索引擎优化专家&#xff0c;多年以来热衷讨论的话题&#xff0c;特别是在衡量企业网站相关产品转化率的时候&#xff0c;有着重要的参考价值&#xff0c;但在以往的数据分析中&#xff0c;却又是经常被SEO人员所忽略的指标。因此&#xff0c;正确的认知“跳出率”对网…

常用CDN网站

在这个网站下载库

tomcat中给网站配置SSL证书(https)

tomcat版本&#xff1a;如需请下载 一、首先阿里云安全组策略中开通了响应的端口&#xff0c;比如80&#xff0c;8443&#xff08;用于负载均衡的服务器上&#xff09;&#xff0c;443&#xff08;https的默认端口&#xff09;等 二、下载SSL证书&#xff1a;&#xff08;会有…

web网站整体变灰色仅仅需要两行代码

在一些庄严严肃的时间段内&#xff0c;很多政府官网已经大的企业平台都会让web网站整体页面全部呈现灰色&#xff08;灰暗色&#xff09;来表达尊敬或者悼念之情&#xff01;但作为一个前端人员&#xff0c;你必须知道怎么快速实现&#xff0c;而不能一个页面一个页面去设置样式…

seo说_百度指数看世间沉浮_如何快速排名-互点快速排名_网站关键词seo优化公司是怎么快速把关键词优化到百度首页的?...

如何才能把新网站的关键词快速做的百度首页呐&#xff1f;看一下专业的SEO优化公司是怎么做的&#xff01;第一步很重要&#xff1a;借助相关工具数据查询关键词的竞争度?1、关键词词性分析SEO工具就多得去了&#xff0c;这里就不推荐只要适合自己就是好工具&#xff01;M社车…

如何知道一个网站的后台地址_如何创建一个属于自己的网站?

为什么想到要写这样一篇文章呢&#xff0c;因为前一段时间&#xff0c;某域名服务商搞活动&#xff0c;低价买了个域名&#xff0c;也没想好做什么&#xff0c;就拿来练手了。回到文章的标题&#xff0c;怎么创建一个属于自己的网站&#xff1f;首先我们要对制作网站这个事情有…

web 网站性能优化工具_web网站前端性能优化(一)

了解你的网站为了优化一个网站&#xff0c;你必须能够识别出需要改进的地方。这意味着要分析页面上的请求数量、页面包含的数据量以及页面加载所花费的时间。这就是开发者工具派上用场的地方。您将学习如何使用这些工具创建瀑布图&#xff0c;以及如何量化客户网站的各个方面&a…

网站服务器队列怎么查看,服务器查看队列命令

服务器查看队列命令 内容精选换一换目的调整系统配置选项&#xff0c;充分发挥系统硬件性能。调整系统配置选项&#xff0c;充分发挥系统硬件性能。方法具体优化项详见表1。OS配置参数参数名称参数含义优化建议配置方法vm.swappinessswap为系统虚拟内存&#xff0c;使用虚拟内存…

修改Apache 局域网内 访问自己的本地网站

修改httpd.conf 大概在252行<Directory "F:/www"> 将“Require local”修改为“Require all granted”&#xff0c;增加“Allow from all”此行代码&#xff1b;见下图。 配置<VirtualHost>把自己的电脑IP配置进去&#xff1b;见下图。 <VirtualHos…

java网站后门审查_JavaWeb随机后门?

我的思路是先从远程读取要生成的shell内容&#xff0c;然后把shell藏在WEB-INF下shell的名字和长度也都随机生成。比如&#xff1a;不过就算藏在WEB-INF下也会被发现&#xff0c;干脆用一次就删一次&#xff1f;这样不会在任何目录下留下Shell。菜刀链接&#xff1a;http://loc…

android 壁纸 官方网站,wallsplash - 壁纸从未如此精美 #Android

原标题&#xff1a;wallsplash &#xff0d; 壁纸从未如此精美 #Android壁纸的精美与否&#xff0c;往往直接展现了一个人的审美水准&#xff0c;而今天带来的这款「wallsplash 」则是一款完全遵循 Material Design 设计规范的精美壁纸应用&#xff0c;它是基于网站开发的官方独…

网站服务器如何修复,如何修复linux系统_网站服务器运行维护

win10系统开机时间很长_网站服务器运行维护解决win10系统开机时间很长问题的方法&#xff1a;1、首先打开运行窗口&#xff0c;输入【msconfig】&#xff0c;打开系统配置&#xff1b;2、然后在【常规】选项下&#xff0c;勾选【加载系统服务】与【加载启动项】&#xff1b;3、…

小网站云服务器配置推荐,小网站云服务器配置推荐

小网站云服务器配置推荐 内容精选换一换虚拟IP(Virtual IP Address&#xff0c;简称VIP)是一个未分配给真实弹性云服务器网卡的IP地址。弹性云服务器除了拥有私有IP地址外&#xff0c;还可以拥有虚拟IP地址&#xff0c;用户可以通过其中任意一个IP(私有IP/虚拟IP)访问此弹性云服…

70个大量使用背景图片的精美网站设计

仔细观察&#xff0c;你会发现&#xff0c; 一个花哨的设计基本都大量的使用了背景图片(不用图片还真难花哨起来)&#xff0c;当然&#xff0c;这里的花哨并没有任何贬意&#xff0c;作为一个设计爱好者&#xff0c;尽管我个人偏向于“尽量少的设计“和”网格设计“(其实是因为…

谷歌地图英文版_谷歌seo网站优化如何做到谷歌首页?

大量的平台卖家开始转战独立站&#xff0c;但独立站想在谷歌上获得好的搜索排名&#xff0c;也不是件容易的事。除了投放广告&#xff0c;还要不断优化网站内容。因为谷歌只会推荐认为值得被推荐的网站内容。我们在谷歌上搜索“wholesale dress”&#xff0c;首先展示的是谷歌广…

png文件合并_良心网站!支持文件在线压缩,页面简洁无广告,一秒提高办公效率...

我的平时工作要进行网站更新、自媒体更新、视频更新&#xff08;还有很多记不清了&#xff09;在文章中都需要上传图片&#xff0c;但平台都有文件大小限制&#xff0c;毕竟用户体验是很重要的。那么今天就给大家推荐我最近发现的一个超实用的在线文件压缩网站。悄悄告诉你&…

seo自动发外链_SEO怎样发外链效果好

今天&#xff0c;没有一家企业可以没有自己的线上门户&#xff0c;无论你线下做得多么优秀&#xff0c;你都离不开线上展示你形象的一个窗口&#xff0c;网络营销已经上升为企业战略层面上必选的营销策略&#xff0c;而非可有可无的营销试验田。无论你是一个自学的SEO学生&…