streamline第1部分:跨越边界: Streamlined 第 1 部分

  我生平首次参加马拉松培训马拉松培训最有趣方面——实际上也是惟方面——就是提高不断叠加所带来影响有时我为了提高效率而进行专门为了改进身体条件而设计长短跑有时在跑步过程中我学习避免小避免重复多余姿势(多余姿势对单个步幅没有太大影响但却会在整个 26.2 英里跑步过程中浪费能量或伤害到我)我每周都有提高可每周的间区别并不显著但是个训练计划周期过后我会从最初只能跑 4 英里提高到能跑 26.2 英里软件Software开发也和此类似如果持续进行小改进消除多余重复您就会不断地累积提高从而在今后每个项目中都会做得更好

  在这篇包含两部分文章中我把重点放在 Ruby _disibledevent="跨越边界: Streamlined第 1 部分" />

  可以立即让 Streamlined 生成个更完整应用把 Streamlined 列表和 图 1 中列表比较区别是惊人:

  默认应用处理关系单击其中个 Edit 链接就可以看到在下节会看到更多有关关系内容在这篇文章第 2 部分中甚至会更多

  应用更好地运用样式表并生成更复杂样式表 Streamlined 运用各种技术例如在表格周围使用 <div>s使得每个页面元素更容易进行样式处理Streamlined alpha 版本样式处理有限但是预期未来版本会突破这个限制

  应用在左侧有默认导航侧栏在顶部有菜单和标头这些菜单有更完整默认行为而且能够定制

  表格每行都有代表编辑、显示或删除行图片应用还有额外图片代表创建新条目、导出 CSV 以及把整个表导出为 XML

  这个页面看起来更像默认应用而不太像不完整搭建这正是 Streamlined 亮点在深入的前先对 Streamlined 工作方式做个简单描述

  先决条件

  要使用 Streamlined先要有个可以工作数据库模式、个使用经典 Rails 工具和规范标准(在这篇文章中已经见到)模型然后用 script/generate streamlined model1, model2, 等等命令生成 Streamlined 界面Streamlined 观察 Rails 命名规范标准并在处于开发模式时频繁地重新装入应用对象这样只要刷新浏览器就可以看到最新代码变化

  像 Rails 搭建Streamlined 是个元编程框架用元数据构建默认应用构建可以用各种方式定制框架查询两个元数据源:活动记录模型和每个模型对象定制元数据文件默认情况下Rails 从活动记录内捕获到足够元数据构建复杂用户界面活动记录查询数据库表获得表中数据的外信息并且维护您所提供其他信息例如主键、关系、字段、字段类型、字段大小Streamlined 利用所有这些信息来提供默认应用但是要调整应用框架还需要更多数据Streamlined 提供了额外元数据来源

  快速查看 trails/app 下目录可以看到 Rails 常见目录:models、controllers、views 和 helpers但是还有第 5个目录可用:streamlined就是在这里指定额外元数据streamlined 目录中 4个文件快速列表介绍说明了问题:

  location.rb 和 trail.rb 包含同名模型详细定制信息

  streamlined_relationships.rb 包含活动记录中指定关系更多信息例如 Streamlined 要如何呈现关系

  streamlined_ui.rb 包含全局用户界面问题配置信息例如是否创建头、尾以及左侧导航栏

  Streamlined 立刻组合了代码生成(它生成可以修改代码)和真正元编程(它使用 Ruby 语言在运行时把代码动态地添加到应用)开始工作Streamlined 生成日后可能要修改静态内容和页面例如生成器直接把样式表和图片复制到您项目可以用真正元编程或代码生成来创建视图视图可能需要修改也可能不需要修改

  特性

  通过操作这个默认应用可以对它提供了多少特性有些感觉左侧导航侧栏拥有针对每个所指定模型链接——针对本文模型就是赛道和地点单击链接会进入每个模型主页面标头有管理域内对象套默认链接有上下文敏感帮助还有有关页面

  在进入表格数据区时会看到更为复杂功能有充当记录过滤器文本框要查看它工作方式请单击 + 链接添加新赛道并输入些数据然后在主窗口输入 Her将看到列表被调整成只有字段中包含指定文本条目也可以单击任意个列名根据这列对列进行排序

  继续操作下去肯定会注意到优秀 Ajax 功能在这里 CRUD 设置中使用 Ajax 最大好处是在个主屏幕上就能提供管理表所需要全部内容只有很少弹出框(用来编辑、显示和删除)Ajax 支持更丰富用户体验、更简洁应用路径和更好用户反馈

  最后看看关系管理请单击左侧侧栏上 Locations 链接然后单击 + 图片添加新地点(试着添加 MoabUtah)单击赛道下 Edit并选择应当属于这个地点赛道请注意 Streamlined 默认记录了属于每个地点赛道数量这个默认行为已经非常丰富了但是我在第 2 部分还要用更复杂优化对它进行定制

  和 Java 框架比较

  目前为止最流行 Java™ 框架都不生成 搭建更不用说应用部分原因是在这个领域在根本上缺少驱动创新竞争Ruby on Rails 正在改变这种局面而且可以假设在 Web 框架发展了 8年的后应当有人已经构建出了类似东西

  应用生成器在 Java 环境中直没有成功它们有个重要问题:过多地依赖代码生成器但在元模型上却缺乏能够对代码生成进行补充坚实元编程框架这类框架可以提供短期生产力提升但是不能在长时间内持续改进生成代码通常太脆弱和复杂除非有足够能力在每次代码生成的间定制代码否则时间长就会失去生产力Streamlined 确实支持代码生成但只支持应用中不变那些部分或者应用中简单可变部分——例如视图和样式表而这些内容开发人员可以容易地修改和维护



  有两个看起来想正确地混合代码生成和元数据 Java 框架它们是 RIFE 和 JMatter(请参阅 参考资料)我在这个系列中已经多次讨论过 RIFE但是 JMatter 是新JMatter 框架拥有开源许可也有商业报价JMatter 基于 Hibernate 和 Swing它允许根据元编程模型迅速地开发非常复杂应用Eitan Suez 这位 Java 圈中著名发言人构建了 JMatter以帮助快速地启动项针对医疗实战两层客户/服务器应用 Java 开发在将近两年特化的后JMatter 惊人地强壮而且它特性很容易和 Rails 和 Streamlined 对抗如果 Jmatter 中变化步伐能赶上 Ruby 社区技术水平那么它今后还会存在

  结束语

  在这篇文章中我介绍了 Rails 搭建、它限制以及称作 Streamlined 替代品Streamlined 搭建得更完整但到目前为止它仍然还是搭建在第 2 部分中您将获得围绕 Streamlined 元编程模型更详细讨论还将学习如何定制应用关键部分在这的前您可以放飞思维、大量实战继续跨越边界



Tags:  streamlined streamline第1部分

延伸阅读

最新评论

发表评论