剑客
关注科技互联网

JavaScript笔记六-Web开发

  • CS:软件运行在桌面上,数据库运行在服务器
  • BS:软件运行在浏览器上,逻辑和数据都存储在服务器端

koa

基于Promise并配合async来实现异步.

// 导入koa,和koa 1.x不同,在koa2中,我们导入的是一个class,因此用大写的Koa表示:
const Koa = require('koa');

// 创建一个Koa对象表示web app本身:
const app = new Koa();

// 对于任何请求,app将调用该异步函数处理请求:
app.use(async (ctx, next) => {
 await next();
 ctx.response.type = 'text/html';
 ctx.response.body = '<h1>Hello, koa2!</h1>';
});

// 在端口3000监听:
app.listen(3000);
console.log('app started at port 3000...');

koa middleware 中间间

每收到一个http请求,koa就会调用通过app.use()注册的async函数,并传入ctx和next参数,就可以操作ctx参数设置返回内容

Babel 代码转换器

用来将高版本的代码转换成低版本的代码,并保持逻辑不变

  • 编写一个start.js文件,在这个文件中先执行 babel-core/register
    ,再加载app.js
var register = require('babel-core/register');

register({
 presets: ['stage-3']
});
require('./app.js');

koa-router URL映射

router.get('/',async(ctx,next)=>{
 ctx.response.body = '<h1>Index</h1>';
});
//最后要将映射绑定到koa上
app.use(router.routes());

模板引擎

  • 主要用来输出页面
  • 转义
    对特殊字符进行转义,避免受到XSS攻击
  • 格式化
    对不同变量类型进行格式化
  • 简单逻辑
    按条件输出内容

mysql数据库

  • 安装
~ sudo apt-get install mysql-server
  • 检查MySql服务器系统进程
ps -aux|grep mysql
  • 登陆MySql
mysql -uroot -p
  • 修改编码为utf-8 配置文件默认存放在/etc/my.cnf或者/etc/mysql/my.cnf
[client]
default-character-set = utf8

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
  • 查看所有数据库
mysql> show databases;
  • 退出mysql
exit

Sequelize 操作数据库

ORM,把关系数据库的表结构映射到对象上

Code
;

WebSocket

在浏览器和服务器之间建立一个不受限的双向通道,服务器可以在任何时候发送消息给浏览器

格式

GET ws://localhost:3000/ws/chat HTTP/1.1
Host: localhost
Upgrade: websocket
Connection: Upgrade
Origin: http://localhost:3000
Sec-WebSocket-Key: client-random-string
Sec-WebSocket-Version: 13

和普通请求的区别:

  • GET请求的地址不是类似 /path/
    ,而是以 ws://
    开头的地址;
  • 请求头U pgrade: websocket
    Connection: Upgrade
    表示这个连接将要被转换为WebSocket连接;
  • Sec-WebSocket-Key
    是用于标识这个连接,并非用于加密数据;
  • Sec-WebSocket-Version
    指定了WebSocket的协议版本。

服务器响应

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: server-random-string

101表示本次连接的HTTP协议即将被更改,更改后的协议就是 Upgrade: websocket
指定的WebSocket协议。

使用ws

在Node.js中,使用最广泛的WebSocket模块是ws

需要在package.json中添加ws的依赖

"dependencies": {
 "ws": "1.1.1"
}

Code
;

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址