JavaScript笔记六-Web开发

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

  • 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

;

未登录用户
全部评论0
到底啦