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 = INNODBcharacter-set-server = utf8collation-server = utf8_general_ci
  • 查看所有数据库
mysql> show databases;
  • 退出mysql
exit

Sequelize 操作数据库

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

Code;

WebSocket

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

格式

GET ws://localhost:3000/ws/chat HTTP/1.1Host: localhostUpgrade: websocketConnection: UpgradeOrigin: http://localhost:3000Sec-WebSocket-Key: client-random-stringSec-WebSocket-Version: 13

和普通请求的区别:

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

服务器响应

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-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
到底啦