返回首页

一周热榜

15作者: chrisvxd6 天前原帖
我在2023年9月首次分享了Puck,现在想给大家带来一个快速更新!<p>Puck允许您在自己的React应用程序中嵌入页面构建体验。它可以与任何后端或内容管理系统(CMS)集成,并且由于它是MIT许可证,您可以安全地在内部工具或面向客户的产品中使用它。<p>自那时以来,很多事情发生了变化;以下是我的一些亮点:<p>* 支持多列拖放,完全支持CSS布局(网格、弹性盒等)<p>* 视口预览功能<p>* 完全自定义界面的无头模式<p>* 权限API以限制创作行为<p>* 根据数据动态适应的字段<p>第一篇Hacker News的帖子对Puck的成长起到了重要作用——我第一次分享时,Puck只有6颗星,24小时内增长到1700颗星。现在接近7000颗星。感谢大家!<p>我始终乐于听取反馈和回答问题。
14作者: hoakiet985 天前原帖
嗨,HN, 我是Kiet,Onlook团队的另一位成员。我们正在开发一个开源的[Onlook](https://github.com/onlook-dev/onlook)可视化编辑器,允许您在无限画布上实时编辑和创建React应用。 我们几乎在一年前以本地优先的Electron应用形式推出了Onlook。自那时以来,“提示生成”工具迅速崛起,但没有一个工具能够让您以可视化的方式进行设计和迭代。我们通过采用以视觉为主、AI驱动的方法解决了这个问题,您可以像在设计工具中一样提示、样式化和直接操作应用中的元素。 两个月前,我们决定放弃Electron,并将所有内容重写为浏览器应用。我们希望消除下载数百MB并设置开发环境的麻烦,只为使用这个应用。我在这里写了更多关于我们如何做到的内容,但以下是整个迁移过程中的一些经验教训: 1. 尽管大部分React UI代码可以重用,但将Electron的单页面应用体验映射到带路由的Next.js应用在状态管理方面并非易事。 2. 我们之前将大部分数据作为大型JSON对象存储在本地。将其迁移到远程数据库需要进行重大重构,转变为表格和更多的加载状态。之前我们不需要过多考虑查询和加载时间。 3. 浏览器中的iframe比Electron的webview施加了更多限制。解决这个问题需要我们直接向用户项目中注入代码,以便进行跨iframe通信。 4. 在Web应用中保持API密钥的安全性比在Electron应用中容易得多。在Electron中,我们留在客户端的每个密钥都可以被静态访问。因此,我们必须将任何需要API密钥的SDK代理到服务器调用。在Web应用中,我们只需将密钥保留在服务器上。 5. 在Electron中推送发布包可能需要1小时以上的时间。而且某些用户可能永远不会更新。如果我们在自动更新程序本身中有一个bug,某些用户可能会“被困”在旧版本中,我们不得不通过电子邮件联系他们进行更新。尽管这仍然比通过应用商店的移动应用要好,但用户体验仍然很差。 Onlook的Web版是如何工作的? 我们首先连接到一个远程“沙箱”。可视化编辑组件通过iframe进行。我们将iframe中的HTML元素映射到代码中的位置。然后,当进行编辑时,我们在iframe上模拟更改,并同时编辑代码。这样,视觉变化总是感觉瞬时。 虽然我们仍在完善体验,但您已经可以: - 选择元素并提示更改 - 通过样式UI更新TailwindCSS类 - 绘制新的div和元素 - 在多个屏幕尺寸上预览 - 通过浏览器内的IDE编辑代码 我们希望让任何人都能轻松创建、样式化和编辑代码库。我们仍在将桌面应用中的功能迁移过来——图层、字体、托管、git等。一旦完成,我们计划添加对后端功能的支持,例如身份验证、数据库和API调用。 特别感谢70多位为Onlook体验做出贡献的开发者!我认为在设计和开发工作流程中仍有许多问题需要解决,而我认为技术几乎已经到位。 您可以从我们的代码库(链接在此帖子中)克隆项目并运行,或者在[https://beta.onlook.com](https://beta.onlook.com)上免费试用。 我很想听听您的想法,以及我们接下来应该朝哪个方向发展 :) [1] [https://news.ycombinator.com/item?id=41390449](https://news.ycombinator.com/item?id=41390449) [2] [https://news.ycombinator.com/item?id=40904862](https://news.ycombinator.com/item?id=40904862) [3] [https://docs.onlook.com/docs/developer/electron-to-web-migration](https://docs.onlook.com/docs/developer/electron-to-web-migration) [4] 目前,沙箱是通过CodeSandbox实现的,但我们计划增加支持连接到本地运行的服务器。
13作者: notorious_pgb5 天前原帖
这最初是一个在博客文章中随意提到的隐喻,但现在已经可以完整运行了:一个在NES上的《超级马里奥兄弟》中的玩具实时操作系统(RTOS),具备抢占式多任务处理功能。 基本上,这个系统包括: - 一个初步的抢占式RTOS - 使用未修改的NES模拟器(FCEUX)作为CPU - “未修改”取决于你如何定义术语 - 使用模拟器的保存状态作为线程上下文 - 支持(非常基础的)互斥锁、中断屏蔽和条件变量 - 通过《超级马里奥兄弟》1-1关卡展示,地图的不同部分用于各种同步原语 在这个实现中采取了许多简化和捷径(甚至没有任务优先级),并且它并不完全对应于真正的多线程(例如,模拟器的保存状态表示整个机器的状态,包括RAM,而线程上下文则表示一个更简化的状态),但我认为它A) 非常有趣,B) 是对线程的独特直观解释。