其实跟 vue 没啥关系,前端实现都共通。
我在 mac 下也是在 docker 内开发,也建议开发团队用 docker 同步开发环境。
不过 docker 对于新手来说始终是另外一层需要学习的知识,避免问题交叉可以尽量往后放一放。
听说 WSL2 有很大进步,不知道能不能作为新手开发环境,如果有人写一写就好了,我没有 Windows 环境做不了。
访问共享资源的例子
这贴已经不讨论技术了,就此锁帖。
小马过河
“中台,我信了你的邪” https://36kr.com/p/1725013082113
Mac
k8s 太难用了需要专职运维才行,开发人员需要更简洁的 interface。
以前某浏览器曾经做过这个功能,然后某些网站没有遵循 RESTFul,有些修改资源的操作用 GET 请求,导致浏览器误执行,后来就取消了这个功能。所以用这个机制要确保网站都用了正确的 HTTP 动作。
与其排除不执行 perfetch 的链接,感觉用显式设置打开 prefetch 比较好。
我是在开发环境用 docker 几年了,每个项目都要有隔离空间。但是生产环境用不用还要看情况,目前只有 heroku 一家的 docker 部署环境能让我满意(便利方面),k8s 已经看懂不应该让开发人员直接使用。
看来是 /index.html
不用绝对路径会造成循环重定向。
试试
try_files $uri /index.html;
如果 ubuntu 足够新,例如 20.04,那么直接用源里面的就行了。
dist 里面是不是只有一个 index.html 页面,其它都是 js css?
upstream app {
server 127.0.0.1:3002
}
server {
listen 443 ssl;
server_name www.udask.net udask.net;
ssl on;
ssl_certificate /etc/nginx/cert/udask.pem;
ssl_certificate_key /etc/nginx/cert/udask.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers d...;
ssl_prefer_server_ciphers on;
root /home/udasker/udaskweb/front_web/dist; #这里是vuejs的build文件
try_files $uri/index.html $uri index.html; # <- 这里加 index.html 到末尾
location ~ ^/api/ {
proxy_pass http://app; #后端rails服务 使用3002端口
proxy_set_header Real-IP $remote_addr;
proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
autoindex_exact_size on;
autoindex_localtime on;
proxy_read_timeout 240s;
}
}
版本一,Rails 只处理 /api 路径,404 由 nginx 处理(可以设置用 dist 里面的 404 页面):
upstream app {
server 127.0.0.1:3002
}
server {
listen 443 ssl;
server_name www.udask.net udask.net;
ssl on;
ssl_certificate /etc/nginx/cert/udask.pem;
ssl_certificate_key /etc/nginx/cert/udask.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers d...;
ssl_prefer_server_ciphers on;
root /home/udasker/udaskweb/front_web/dist; #这里是vuejs的build文件
try_files $uri/index.html $uri;
location ~ ^/api/ {
proxy_pass http://app; #后端rails服务 使用3002端口
proxy_set_header Real-IP $remote_addr;
proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
autoindex_exact_size on;
autoindex_localtime on;
proxy_read_timeout 240s;
}
}
版本二,Rails 接管 404 页面:
upstream app {
server 127.0.0.1:3002
}
server {
listen 443 ssl;
server_name www.udask.net udask.net;
ssl on;
ssl_certificate /etc/nginx/cert/udask.pem;
ssl_certificate_key /etc/nginx/cert/udask.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers d...;
ssl_prefer_server_ciphers on;
root /home/udasker/udaskweb/front_web/dist; #这里是vuejs的build文件
try_files $uri/index.html $uri @app;
location @app {
proxy_pass http://app;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header NginX-Proxy true;
proxy_redirect off;
root /home/udasker/udaskweb/front_web/dist;
autoindex_exact_size on;
autoindex_localtime on;
proxy_read_timeout 240s;
}
}
没有实操,不一定对。
感觉 location @app
是不是可以整个删掉,前面已经设置了 root 和 try_files 了。
upstream app 指向的是 sock file,改成 3002 端口。
科学上网
先分析一下是哪里慢,服务器响应慢的话优化服务器(算法或缓存),网络慢的话看 CDN 是否生效。
如果确实有很慢的服务器查询无法优化,那么可以考虑用分布加载等方案,这个要看你喜欢怎么做了,不一定要动 Turbolinks,例如可以用 Stimulus 写一个异步加载的 controller(官方例子),在这个 controller 实现 loading 动画。
具体情况具体分析。
噗,用 turbolinks 的网站一般用服务端渲染,没有 SPA 那么长的客户端渲染时间需要加 loading 动画。
硬要加的话,把主体部分设成 display: none
,loading 部分设成可视,然后在 turbolink:load
事件里面把两者显示切换过来。如果加载太快就用 setTimeout
再等几秒。
用 docker 试用官方镜像:
$ docker run -it -v $(pwd):/app -w /app rubylang/ruby:3.0.0-preview1-bionic bash
先试了个 ractor 的 hello world
irb(main):001:1* ractor = Ractor.new do
irb(main):002:1* puts Ractor.recv
irb(main):003:0> end
<internal:ractor>:38: warning: Ractor is experimental, and the behavior may change in future versions of Ruby! Also there are many implementation issues.
=> #<Ractor:#2 (irb):1 blocking>
irb(main):004:0> ractor.send 'hello ractor'
hello ractor
=> #<Ractor:#2 (irb):1 terminated>
要看《Ruby 元编程》,记得是“打开类”一章说到。
顶楼说了两个话题,要分开讨论。
已上传至 bilibili,审核没遇到问题。看来是我混淆了直播规则和视频投稿规则。
https://space.bilibili.com/552654808/channel/detail?cid=147806
上几届没有放赞助商信息,其实是没空做。
不过我看投稿规则里面是允许放商业信息的,我投一个看看。