特指 index.js
,这个 js 文件里面要手工 import 其他文件。import 文件夹是某些工具例如 webpacker 配置的规则。
而且我没查过 esbuild 是否默认支持 import 文件夹的时候找 index.js。
感谢用了我的 todo-mvc 例子,这个代码比较旧,也刚好展示了 stimulus 的弱点,就是没有包含前端渲染。
这是它设计的定位决定的,stimulus 适合那些后端渲染已经解决大部分问题,只是要添加一点交互的场景。todo-mvc 是一个全前端渲染的例子,所以用 stimulus 要进行很多 dom 操作,变得很繁琐。
需要前端渲染的组件,我推荐看一下 https://lit.dev/ ,它的代码看上去跟 stimulus 很像,但是多了前端模版和数据绑定。而且是基于 web component 通用性更好,不像 vue 和 react 基本上一引入就引入了全家桶。
但另一方面,stimulus 对后端渲染是最友好的,可以用后端的方式调整 html 结构和样式。
我还有一些 stimulus 实践例子可以看这里 https://geeknote.net/Rei/collections/32
Hotwired 主题一个,没有 css/js-bundling 的主题。RailsConf 这届组织者不但没邀请 DHH,还忽略了 Rails 7 前端部分的重要更新。
Rails 5 敏捷开发 https://book.douban.com/subject/27615703/
版本有点旧了,如果英文阅读没问题可以看原版
Agile Web Development with Rails 7 https://pragprog.com/titles/rails7/agile-web-development-with-rails-7/
这本书适合入门,如果已经有 web 开发基础,其实看官方文档比较高效,而且讲得更细。
只能说互联网充满危险。
复杂情况交给前端处理,不用 turbo stream。
国内的 DDOS 防护,价格每月要上万。
因为时不时遇到 DDOS,网站加了 Cloudflare 代理,国内访问会变慢,这也是没办法的。科学上网会更快因为线路更好。
做过类似的功能,演示效果看 https://asciibook.org/docs/ 右上角 tT 按钮菜单。
纯前端实现,代码在 https://github.com/asciibook/asciibook/blob/master/theme/html/html.js#L78-L153
思路:
Ruby 不像 Java 或者 Go 那样可以编译成一个可执行文件,通常是在服务端 pull 代码。
需要“打包”的话推荐 Docker。
核心就这几行
git pull
bundle install --deployment
bin/rails asset:precompile
bin/rails db:migrate
bin/rails server -e production
写到脚本就是脚本部署,远程 ssh 执行就是远程部署,写到 Dockerfile 就是容器部署。
有回复的主题不能删除,可以编辑清除内容。
我自己写的。
Fresh - The next-gen web framework. https://fresh.deno.dev/
完了完了,下一代又出来了。
可以挖深一点源码有什么不同。
Python 早就有 Django 了。
我留意你运行 gem install 的时候用了 sudo,但安装目录是 homebrew。homebrew 的安装目录是属于用户的,不需要 sudo,所以出现了权限的问题。
运行 gem env
,把 EXECUTABLE DIRECTORY
的路径加到 PATH 里。
例如在 ~/.bash_profile
里面加入以下内容:
export PATH="/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"
路径要替换成你自己的路径。
这是声明一个命名 volume 让 compose 放到默认目录。
首选部署平台或编排系统的 secrets 机制,有的是通过文件提供,有的是通过环境变量提供。
app 用 dotenv 管理 env,可以同时支持 ENV 变量和 .env 文件两种形式。
用 puma 就行了,Rails 新建项目从开发环境就默认 puma。
写了一篇日志记录解决的原理 https://geeknote.net/Rei/posts/1222
验证过的方法:
在 config/initializers/assets.rb 加入:
Rails.application.config.assets.paths << Rails.root.join('node_modules/@fortawesome/fontawesome-free/webfonts')
在 application.sass.scss 加入:
$fa-font-path: ".";
@import "@fortawesome/fontawesome-free/scss/fontawesome.scss";
@import "@fortawesome/fontawesome-free/scss/solid.scss";
其他不用改,包括 manifest.json。
缺少 mysqlclient 的库,楼主没贴是什么系统没法提供方案。
例如 ubuntu 要装的是 libmysqlclient-dev
编辑:行不通,看 18 楼。
我看了下 fontawesome 的源码,也许要加上 fa-font-path 变量,从 scss 编译。
因为 fa-font-path 默认是相对路径 '../webfonts',上面的 link_tree 已经进入了 webfonts 这个目录。
$fa-font-path: '';
// You probably already include the core styles
@import "./fontawesome/scss/fontawesome.scss";
// For Duotones you need both of these files
@import "./fontawesome/scss/duotone.scss";
@import "./fontawesome/scss/_duotone-icons.scss";
// You can include all the other styles the same as before
@import "./fontawesome/scss/solid.scss";
@import "./fontawesome/scss/brands.scss";
编辑:行不通,看 18 楼。
因为 sass 不处理引用的资源(字体或者图片),这还需要 assets pipeline 处理。
如果 assets pipeline 用的是 sprocket,那么可以在 manifest.js 里面添加设置:
//= link_tree ../../../node_modules/@fortawesome/fontawesome-free/webfonts
注意这个路径是否匹配你的安装路径。设置这个后,sprocket 会把这个 webfonts 目录下的资源加入 pipeline,并且替换 css 里面用 url() 引用的资源地址(加上 digest)。
如果还有问题可以参考这个 issue https://github.com/rails/cssbundling-rails/issues/22#issuecomment-1030735501 。
需要贴代码和日志。
原生 dom 用 js 更改 input 的值是不会触发事件的,要手动触发,可能是遵循了原生的惯例。
DOM 不是什么见不得人的事情,就好像一个人只用 ORM 不关心 SQL,我会怀疑他能否写出高效的查询,遇到问题能不能自己解决。
New Suspense SSR Architecture in React 18 https://github.com/reactwg/react-18/discussions/37
React 也在发展类似的技术:
这些在 React 都还是前沿技术,也不难理解为什么有人觉得 hotwire 难了。
前端框架可以让开发忽略一些细节,但是 Web 是一个整体,如果一直割裂看待前端和后端,早晚遇到瓶颈。