跨越边界: Streamlined,第1部分 - 编程入门网
,您可能需要扩展生成的 代码,但初始的应用程序从它本身来说,其功能性令人惊讶。
请下载初始 alpha 版本的 Streamlined .gem 文件(参阅 参考资料)。切换到保存 .gem 的目录, 并输入 gem install streamlined。所需要的所有内容都会自动安装。如果出现问题,可以通过 streamlined 的博客得到优秀的支持,也有商业支持可选。 现在是把 Streamlined 投入实践的时候了。首先,输入 script generate streamlined location trail,运行 Streamlined 生成器。当提示是否替换 locations 和 trails 控制器时,回答 y。 把浏览器指向 http://localhost:3000/locations/list 查看图 3 中的结果: 图 3. 默认的 Streamlined 应用程序 可以立即让 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。但是还有第五个目录可用:streamlined。就是在这里指定额外的元数据。streamlined 目录中 四个文件快速列表说明了问题: location.rb 和 trail.rb 包含同名模型的详细定制信息。 streamlined_relationships.rb 包含活动记录中指定的关系的更多信息,例如 Streamlined 要如何 呈现关系。 streamlined_ui.rb 包含全局用户界面问题的配置信息,例如是否创建头、尾以及左侧导航栏。 Streamlined 立刻组合了代码生成(它生成可以修改的代码)和真正的元编程(它使用 Ruby 语言在 运行时把代码动态地添加到应用程序)开始工作。Streamlined 生成日后可能要修改的静态内容和页面。 例如,生成器直接把样式表和图片复制到您的项目。可以用真正的元编程或代码生成来创建视图,视图可 能需要修改,也可能不需要修改。 跨越边界: Streamlined,第1部分(5) |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |