将动态内容“插入”现有静态站点的最佳方式

时间:2011-03-17 19:51:46

标签: ruby-on-rails ruby cgi sinatra

我的一位朋友有一个静态网站。她想添加一个允许人们注册课程的注册表。使用ROR或Wordpress等重新创建网站不在范围内。我们还希望用户使用相同的域,无论他或她是在查看静态页面还是动态页面。

我可以想到用CGI做这个的最少侵入性的方式,最好是使用Ruby。但是,我真的不喜欢编写CGI代码,而且我更喜欢Sinatra和ROR等框架。

在这种情况下,是否真的可以使用高级框架?如果是这样,那么它比它的价值更麻烦吗?

提前致谢!

2 个答案:

答案 0 :(得分:5)

如果我是你,我会在Sinatra做,也许使用像Nginx这样的前端重定向到你的Sinatra应用程序。如下所示:

  location /myform{
    proxy_pass myserver:6000;
  }

你的Sinatra在6000端口运行.Sinatra非常简单,你可以在短时间内完成。 ROR我觉得这有点重。我们会一直为特殊需求/共享应用做这样的事情,即使它们已经是动态的。

答案 1 :(得分:1)

您可以开发一个应用程序,通过Javascript将动态代码注入她的静态网站。我在工作中为我的一个项目做这件事,这似乎是一个可以接受的解决方案。

快速HTML示例:

<!doctype html> 
<html> 
<head> 
<title>Test</title> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<script type="text/javascript" src="loader.js"></script> 
</head> 
<body> 
<div id="customcontent" class="contentlib"></div> 
</body> 

loader.js:

$().ready(function () {
    $('<style type="text/css"> ... </style>').appendTo('head');
    $('.contentlib').each(function() {
        $.getScript($(this).attr('id')+'.js');
    });
});

customcontent.js:

$().ready(function () {
    $('#customcontent').html(' ... ');
});

这比它必须要复杂得多(第二个脚本加载基于div的id),因为我必须在同一页面上支持多次替换。

无论如何,我可以看到你使用它来从第三方网站注入你的应用程序,只要你坚持使用AJAX表单提交,普通用户就不会更聪明了。