├── CNAME ├── docs └── CNAME ├── node-cors ├── parcel-demo │ ├── index.js │ ├── .proxyrc │ ├── package.json │ └── index.html ├── vue-cli2-demo │ ├── static │ │ └── .gitkeep │ ├── config │ │ ├── prod.env.js │ │ ├── dev.env.js │ │ └── index.js │ ├── build │ │ ├── logo.png │ │ ├── vue-loader.conf.js │ │ ├── build.js │ │ ├── check-versions.js │ │ ├── webpack.base.conf.js │ │ ├── utils.js │ │ └── webpack.dev.conf.js │ ├── src │ │ ├── assets │ │ │ └── logo.png │ │ ├── main.js │ │ ├── App.vue │ │ └── components │ │ │ └── HelloWorld.vue │ ├── .editorconfig │ ├── .gitignore │ ├── .babelrc │ ├── .postcssrc.js │ ├── README.md │ ├── index.html │ └── package.json ├── webpack │ ├── index.js │ ├── package.json │ ├── webpack.config.js │ └── webpack.html ├── name │ ├── b.html │ ├── c.html │ ├── server.js │ └── a.html ├── README.md ├── hash │ ├── b.html │ ├── a.html │ ├── c.html │ └── server.js ├── vue-cli3-demo │ ├── babel.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── assets │ │ │ └── logo.png │ │ ├── main.js │ │ ├── App.vue │ │ └── components │ │ │ └── HelloWorld.vue │ ├── vue.config.js │ ├── .gitignore │ ├── README.md │ └── package.json ├── websocket │ ├── server.js │ └── index.html ├── jsonp │ ├── server.js │ └── index.html ├── postMessage │ ├── server.js │ ├── another.html │ └── index.html ├── cors-any │ ├── server.js │ └── index.html ├── package.json ├── charles │ └── index.html ├── nginx │ └── index.html ├── index.html ├── normal-server.js ├── server.js └── client.js ├── webpack ├── loaders │ ├── README.md │ └── example-01 │ │ ├── .gitignore │ │ ├── aa.muji │ │ ├── index.js │ │ ├── webpack.config-2.js │ │ ├── package.json │ │ ├── webpack.config.js │ │ └── loaders │ │ └── myLoader.js ├── README.md └── optimization.splitChunks.chunks │ ├── .babelrc │ ├── src │ ├── b.js │ └── a.js │ ├── webpack.config-async.js │ ├── webpack.config-initial.js │ ├── webpack.config-all.js │ ├── package.json │ ├── dist-all │ ├── b.bundle.js │ └── a.bundle.js │ └── dist-initial │ └── a.bundle.js ├── node-rpc-rest ├── README.md ├── rpc │ ├── gen-nodejs │ │ └── hello_types.js │ ├── package.json │ ├── client.js │ ├── hello.thrift │ └── server.js └── rest │ ├── index.js │ ├── package.json │ └── request.js ├── file-download ├── static │ ├── demo.js │ ├── demo.sh │ ├── 360_0388.jpg │ ├── 1597375650384.jpg │ └── index.html ├── README.md ├── example │ ├── download-multiple │ │ ├── simple.html │ │ └── script.js │ ├── download-backend │ │ ├── direct.html │ │ ├── a-download.html │ │ ├── a-download-base64.html │ │ └── a-download-cors.html │ ├── download-experiment │ │ └── index.html │ ├── download-frontend │ │ ├── docx-simple.html │ │ ├── json-text.html │ │ ├── docx-images.html │ │ ├── excel-simple.html │ │ ├── excel-element-ui.html │ │ └── word-excel.html │ ├── download-ios │ │ └── index.html │ └── js │ │ └── utils.js ├── package.json └── server.js ├── ansi-code ├── build.sh ├── demo │ ├── dist │ │ └── main.js │ ├── index.html │ ├── src │ │ └── index.js │ └── package.json ├── index.js ├── package-lock.json ├── package.json ├── index-2.js └── code.html ├── node-upload-stream ├── html │ ├── README.md │ ├── file.html │ ├── file-normal.html │ ├── blob.html │ ├── arraybuffer.html │ ├── formdata.html │ └── base64.html ├── koa │ ├── README.md │ ├── package.json │ └── index.js ├── node │ ├── README.md │ ├── buffer.js │ ├── request-error.js │ ├── request.js │ ├── form-data.js │ └── stream.js ├── node-server │ ├── README.md │ └── node-upload.js ├── README.md ├── 1.png ├── package.json └── .gitignore ├── wechat-feces ├── bomb.png ├── feces.png ├── 2-1-lottie.html ├── 1-1-animation.html ├── 1-2-animation.html ├── 2-2-lottie.html └── 3-1-feces-2.html ├── react-abort ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── index.html ├── src │ ├── setupTests.js │ ├── App.test.js │ ├── index.css │ ├── index.js │ ├── App.css │ ├── pages │ │ ├── Home.js │ │ ├── Posts-1.js │ │ ├── Users-1.js │ │ ├── Posts.js │ │ └── Users.js │ ├── App.js │ └── logo.svg ├── README.md ├── .gitignore └── package.json ├── watermark ├── demo │ ├── qiufeng.png │ ├── water-gao.jpg │ ├── water-yuan.jpeg │ ├── qiufeng-encode.png │ ├── qiufeng-super.png │ ├── demo.html │ ├── canvas-compare.html │ ├── canvas.html │ ├── svg.html │ ├── canvas-observe.html │ └── element.html ├── README.md ├── package.json └── index.js ├── css-margin ├── README.md ├── block-normal.html ├── begin-problem-2.html ├── pseudo-classes.html ├── begin-problem-1.html ├── block-fixed.html ├── block-absolute.html ├── computed.js ├── pseudo-elements.html ├── block-absolue-fixed-extra.html ├── collapsing-margin-no-case4.html ├── collapsing-margin-computed.html ├── in-flow.html ├── collapsing-margin-no-case3.html └── collapsing-margin-demo.html ├── README.md ├── confetti ├── README.md ├── 四边形.html ├── 旋转.html ├── 运动轨迹.html └── 轨迹加旋转.html ├── .gitignore ├── guide ├── README.md ├── index.html ├── canvas.html └── box-shadow.html └── white-board ├── index.html └── canvas.js /CNAME: -------------------------------------------------------------------------------- 1 | example.qiufeng.blue -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | example.qiufeng.blue -------------------------------------------------------------------------------- /node-cors/parcel-demo/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /webpack/loaders/README.md: -------------------------------------------------------------------------------- 1 | webpack -------------------------------------------------------------------------------- /node-rpc-rest/README.md: -------------------------------------------------------------------------------- 1 | # node 服务间通讯方案 -------------------------------------------------------------------------------- /file-download/static/demo.js: -------------------------------------------------------------------------------- 1 | console.log(1); -------------------------------------------------------------------------------- /node-cors/vue-cli2-demo/static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /node-cors/webpack/index.js: -------------------------------------------------------------------------------- 1 | console.log(1111) -------------------------------------------------------------------------------- /ansi-code/build.sh: -------------------------------------------------------------------------------- 1 | cd demo 2 | 3 | npx webpack -------------------------------------------------------------------------------- /file-download/static/demo.sh: -------------------------------------------------------------------------------- 1 | echo "秋风的笔记" 2 | -------------------------------------------------------------------------------- /node-upload-stream/html/README.md: -------------------------------------------------------------------------------- 1 | ## 请求端-浏览器端 -------------------------------------------------------------------------------- /node-upload-stream/koa/README.md: -------------------------------------------------------------------------------- 1 | ## 文件上传测试服务器 -------------------------------------------------------------------------------- /node-upload-stream/node/README.md: -------------------------------------------------------------------------------- 1 | ## 请求端-node端 -------------------------------------------------------------------------------- /node-cors/name/b.html: -------------------------------------------------------------------------------- 1 |
4 | 21 | This is a somewhat long HTML 22 | paragraph that will be broken into several 23 | lines. 24 |
25 |22 | This is a somewhat long HTML 23 | paragraph that will be broken into several 24 | lines. 25 |
26 |
4 | | 2 | 14 |2 | 15 |4 | 16 |4 | 17 |
| 5 | 20 |7 | 21 |7 | 22 |9 | 23 |
| 10 | 26 |10 | 27 |12 | 28 |12 | 29 |
| 14 | 32 |14 | 33 |16 | 34 |16 | 35 |
秋风的笔记
12 |
10 | Open the console developer and switch page very rapidly to{' '}
11 |
12 | /users
13 | {' '}
14 | and{' '}
15 |
16 | /posts
17 | {' '}
18 | and back to the homepage.
19 |
21 | Learn more here:{' '} 22 | 23 | 24 | 🍦 25 | {' '} 26 | Cancel Properly HTTP Requests in React Hooks and avoid Memory Leaks{' '} 27 | 28 | 🚨 29 | 30 | 31 |
32 |Loading...
31 | ) : ( 32 | posts.map(post => ( 33 |35 | #{post.id} 36 |
37 |38 | Title: {post.title} 39 |
40 |41 | Body: {post.body} 42 |
43 |Loading...
31 | ) : ( 32 | users.map(user => ( 33 |35 | #{user.id} 36 |
37 |38 | Name: {user.name} 39 |
40 |41 | Username: {user.username} 42 |
43 |hello
25 | 26 |hello
25 | 26 |
35 | asset main.js 132 bytes [compared for emit] [minimized] (name: main)./src/index.js 289 bytes [built] [code generated]WARNING in configurationThe 'mode' option has not been set, webpack will fallback to 'production' for this value.Set 'mode' option to 'development' or 'production' to enable defaults for each environment.You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/webpack 5.53.0 compiled with 1 warning in 255 ms
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/node-cors/server.js:
--------------------------------------------------------------------------------
1 | const Koa = require('koa');
2 | const router = require('koa-router')();
3 | const koaBody = require('koa-body');
4 | const fs = require('fs');
5 | // const cors = require('koa-cors');
6 | const app = new Koa();
7 | const token = 'dwqwqe1231';
8 |
9 | app.use(async (ctx, next) => {
10 | ctx.set('Access-Control-Max-Age', 600);
11 | ctx.set('Access-Control-Allow-Origin', ctx.headers.origin);
12 | ctx.set('Access-Control-Allow-Credentials', true)
13 | ctx.set('Access-Control-Request-Method', 'PUT,POST,GET,DELETE,OPTIONS')
14 | ctx.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, cc')
15 | if (ctx.method === 'OPTIONS') {
16 | ctx.status = 204;
17 | return;
18 | }
19 | await next();
20 | });
21 |
22 | app.use(async (ctx, next) => {
23 | if (ctx.path === '/api/login') {
24 | await next();
25 | return;
26 | }
27 | const cookies = ctx.cookies.get('token');
28 | console.log(cookies);
29 | if (cookies && cookies === token) {
30 | await next();
31 | return;
32 | }
33 | ctx.body = {
34 | code: 401,
35 | msg: '权限错误',
36 | }
37 | return;
38 | })
39 |
40 | // app.use(cors());
41 | app.use(koaBody({ multipart: true }));
42 |
43 | router.get('/api/corslist', async (ctx) => {
44 | ctx.body = {
45 | data: [{name: '秋风的笔记'}]
46 | }
47 | })
48 |
49 | router.post('/api/login', async (ctx) => {
50 | ctx.cookies.set('token', token, {
51 | expires: new Date(+new Date() + 1000 * 60 * 60 * 24 * 7),
52 | })
53 | ctx.body = {
54 | msg: '成功',
55 | code: 0
56 | };
57 | }
58 | );
59 |
60 | app.use(router.routes());
61 |
62 | app.listen(8080);
--------------------------------------------------------------------------------
/node-cors/client.js:
--------------------------------------------------------------------------------
1 | const Koa = require("koa");
2 | const fs = require("fs");
3 | const app = new Koa();
4 |
5 | app.use(async (ctx, next) => {
6 | if (ctx.method === "GET" && ctx.path === "/") {
7 | ctx.body = fs.readFileSync("./index.html").toString();
8 | }
9 |
10 | if (ctx.method === "GET" && ctx.path === "/charles") {
11 | ctx.body = fs.readFileSync("./charles/index.html").toString();
12 | }
13 |
14 | if (ctx.method === "GET" && ctx.path === "/nginx") {
15 | ctx.body = fs.readFileSync("./nginx/index.html").toString();
16 | }
17 |
18 | if (ctx.method === "GET" && ctx.path === "/jsonp") {
19 | ctx.body = fs.readFileSync("./jsonp/index.html").toString();
20 | }
21 |
22 | if (ctx.method === "GET" && ctx.path === "/websocket") {
23 | ctx.body = fs.readFileSync("./websocket/index.html").toString();
24 | }
25 |
26 | if (ctx.method === "GET" && ctx.path === "/postMessage") {
27 | ctx.body = fs.readFileSync("./postMessage/index.html").toString();
28 | }
29 |
30 | if (ctx.method === "GET" && ctx.path === "/hash/a.html") {
31 | ctx.body = fs.readFileSync("./hash/a.html").toString();
32 | }
33 | if (ctx.method === "GET" && ctx.path === "/hash/b.html") {
34 | ctx.body = fs.readFileSync("./hash/b.html").toString();
35 | }
36 |
37 | if (ctx.method === "GET" && ctx.path === "/name/a.html") {
38 | ctx.body = fs.readFileSync("./name/a.html").toString();
39 | }
40 | if (ctx.method === "GET" && ctx.path === "/name/b.html") {
41 | ctx.body = fs.readFileSync("./name/b.html").toString();
42 | }
43 |
44 |
45 | if (ctx.method === "GET" && ctx.path === "/cors-any") {
46 | ctx.body = fs.readFileSync("./cors-any/index.html").toString();
47 | }
48 | });
49 |
50 | app.listen(8000);
51 |
--------------------------------------------------------------------------------
/confetti/四边形.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Loading...
41 | ) : ( 42 | posts.map(post => ( 43 |45 | #{post.id} 46 |
47 |48 | Title: {post.title} 49 |
50 |51 | Body: {post.body} 52 |
53 |Loading...
41 | ) : ( 42 | users.map(user => ( 43 |45 | #{user.id} 46 |
47 |48 | Name: {user.name} 49 |
50 |51 | Username: {user.username} 52 |
53 |它把自己给合并了,距离底下30px
78 |它把自己给合并了, 距离顶上30px
80 || title1 | 13 |title2 | 14 |title3 | 15 |title4 | 16 |title5 | 17 |
| 秋风的笔记 | 22 |秋风的笔记 | 23 |秋风的笔记 | 24 |秋风的笔记 | 25 |秋风的笔记 | 26 |
| 6 | 29 |6 | 30 |6 | 31 |6 | 32 |6 | 33 |
| 6 | 36 |6 | 37 |6 | 38 |6 | 39 |6 | 40 |
5 | For a guide and recipes on how to configure / customize this project,
6 | check out the
7 | vue-cli documentation.
8 |
hello
25 |hello
15 |秋风的笔记
12 || title1 | 21 |title2 | 22 |title3 | 23 |title4 | 24 |title5 | 25 |
| 1 | 30 |2 | 31 |3 | 32 |4 | 33 |5 | 34 |
| 1 | 37 |2 | 38 |3 | 39 |4 | 40 |5 | 41 |
| 1 | 44 |2 | 45 |3 | 46 |4 | 47 |5 | 48 |