React Native 1 环境安装
安装
npm install -g react-native-cli
初始化项目
react-native init MyApp --version 0.44.3
启动模拟器
react-native run-ios --simulator "iPhone 7"
一切看起来都很美好, 除了下边这个坑
一开始我并没有碰到这个错误, 但是重启了一次电脑之后这货就出现了
安装
npm install -g react-native-cli
初始化项目
react-native init MyApp --version 0.44.3
启动模拟器
react-native run-ios --simulator "iPhone 7"
一切看起来都很美好, 除了下边这个坑
一开始我并没有碰到这个错误, 但是重启了一次电脑之后这货就出现了
Warning: Can't call setState (or forceUpdate) on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.
本章主要讨论plugin, 我将参考官方例子
Kong 自带的插件一般分为以下几类:
身份校验, 安全性控制, 流量控制, 格式转换, 监控和日志 https://getkong.org/plugins/
[root@localhost ~]# curl -X POST http://localhost:8001/apis/users/plugins -d "name=key-auth" {"created_at":1542865365000,"config":{"key_in_body":false,"run_on_preflight":true,"anonymous":"","hide_credentials":false,"key_names":["apikey"]},"id":"54df9560-66a1-494e-86d2-3aeed7f08d1c","name":"key-auth","api_id":"5fe148b3-acfa-46c3-b127-08207420f2f5","enabled":true} |
sudo yum -y install gcc gcc-c++ kernel-devel
sudo yum -y install gcc automake autoconf libtool make
sudo tar -xf node-v10.14.1.tar.gz
cd node-v10.14.1
sudo ./configure
sudo make
sudo make install
之前一直是用kong的, 不过最近发现了express也可以做Gateway, 参考了一下开源实现
https://www.express-gateway.io
首先是安装
$ sudo npm install -g express-gateway
然后通过下面的引导命令可以初始化一个项目
$ eg gateway create
创建结束以后你会得到一个像下面的内容
默认get start 项目里会带一个路由, 通过 localhost:8080/ip 指向到 https://httpbin.org/ip
上一个例子中并没有使用express, 下面这个例子里将演示如何在express环境中使用cluster多线程
express使用bin文件夹下的www脚本启动http server, 所以直接修改这个脚本就可以使用cluster
app/bin/www 将此脚本的内容修改为
#!/usr/bin/env node
var app = require("../app"); var debug = require("debug")("app:server"); var http = require("http");
var cluster = require("cluster"); var numCPUs = require("os").cpus().length;
if (cluster.isMaster) { |
我们知道标准的Javascript是单线程的, 无法真正的使用多核cpu, 过去的做法是在不同的端口上启动多个相同或者不同的服务
例如如果一个服务要运行在多个核心上, 就必需使用脚本启动在多个端口上, 然后用负载均衡服务器对请求进行分发, 实现起来较为复杂
使用cluster集群api可以让单个程序充分利用多核cpu, 下面来看看步骤
首先需要安装下面两个模块
npm install --save cluster
npm install --save os
然后是实现代码
var cluster = require("cluster"); var http = require("http"); var numCPUs = require("os").cpus().length; if (cluster.isMaster) { // Fork workers. |
使用express-session需要安装
npm install express-session --save
然后你可以选择在app.js中加入引用
var session = require("express-session");
接着就可以使用app.use初始化这个session对象了,初始化之后直接使用req.session就可以引用它
req.session.username = "Lizhe";
res.render("index", { title: "Express " + req.session.username });
然后这里有一个坑... 本文主要记录这个坑
var app = express(); app.use( session({ secret: "secret", // 对session id 相关的cookie 进行签名 |
$ npm install -g express-generator
$ express app
需要注意的是, hooks这种新玩意只能用在无状态的函数组件中
还有就是如果你使用create-react-app创建应用, 那么你需要手动修改package.json中的react和react-dom版本号, 因为目前hooks还在阿尔法版本中[?]
import React, { Component } from "react"; import "./App.css"; import Counter from "./Counter"; class App extends Component { render() { return ( <div className="App"> <Counter /> </div> ); } |