-4

在我的 Web 开发公司,我们有很多设计师,他们具有以下开发知识和经验:

  • 客户端网络语言(HTML、CSS、JavaScript)
  • 基本数据库设计(如何创建表、关系等),以及
  • 基本 SQL

问题是这些人不懂服务器端语言,比如 C#。我们希望为他们提供一个选项,以利用他们当前的知识创建 Web 应用程序。

基本上,他们应该能够创建数据网格、添加/编辑表单等,而无需使用完整的服务器端语言,例如 C# 或 PHP。

我们不想在这里创造新的巨大新技术。我们想要一个简单的解决方案,它易于理解和维护,并且可能有点开源。

我们考虑为 ASP.NET Razor 添加一个扩展,看起来像这样:

@DB(table="pages", where="id > 15")

<ul>
@while (row.Next()) {
    <li><a href="@row.URL">@row.Name</a></li>
}
</ul>

就性能、设计模式、代码风格和安全性(SQL 注入)而言,这是一个好的解决方案吗?

有什么开源的吗?

你还有其他建议吗?


以下是使用此样式的简单应用程序的一些示例:

/apps/pages/index.html

@(DB.Select(table: "pages", 
            where: "id = ? and date > ?",
            params: new[] { Request.QueryString["ID"], Request.QueryString["Date"] }))

<html>
<body>
    <ul>
    @foreach (var row in Model) {
        <li><a href="@row.URL">@row.Name</a></li>
    }
    </ul>
</body>
</html>

/apps/pages/create.html

@(DB.InsertOnPost(table: "pages",
                  fields: "name, description, date",
                  values: "?, ?, Now",
                  params: new[] { Request.Form["Name"], Request.Form["Description"] }))

@RedirectOnPost("/pages")

<form action="/pages/create" method=”post”&gt;
    <div>
        <label for="name">Name</label>
        <input type="text" name="name" />
    </div>

    <div>
        <label for="description">Description</label>
        <textarea name="description"></textarea>
    </div>
</form>

/apps/pages/edit.html

@(DB.UpdateOnPost(table: "pages",
                  set: "name = ?, description = ?",
                  where: "id = ?",
                  params: new[] { Request.Form["Name"], Request.Form["Description"], 
                                  Request.QueryString["ID"] }))

@RedirectOnPost("/pages")

@(DB.Select(table: "pages", 
            where: "id = ?",
            params: new[] { Request.QueryString["ID"] })

<form action="/pages/edit" method="post">
    <div>
        <label for="name">Name</label>
        <input type="text" name="name" value="@Model.Name" />
    </div>

    <div>
        <label for="description">Description</label>
        <textarea name="description">@Model.Description</textarea>
    </div>
</form>
4

3 回答 3

6

恕我直言

我不得不说,UI 人之所以成为 UI 人是有原因的。这就是沟通和理解需求的来源。双方都应该清楚地了解需要做什么才能完成最终产品。前端的人永远不应该关心如何获取信息,就像您在编写服务或制作视图模型时永远不必担心使用哪种样式表一样。

如果后端工作量太大,可能是时候考虑清理一下或使事情更简洁,但不要将数据库访问权限交给不知道自己在做什么的人。

如果您非常担心他们如何能够以及将如何访问数据,那不应该是一个危险信号吗?在我看来,您宁愿投入数周(这将是数周,因为您必须将所有内容都沙箱化)以使其安全访问,而不是仅仅为他们进行管道传输。

需求是否能让你 100% 到达那里?不,您将有一些来回(UI 需要某些东西,或者您需要),但这就是游戏的名称。好的部分是大部分时间你可以一起工作(他们正在研究它的外观,同时你给他们他们需要连接它的部分)。

于 2013-07-26T15:27:11.310 回答
2

我想你在这里有几个选择。

  1. 让他们使用 node.js,这样他们就可以使用他们的 JavaScript 技能。
  2. 让他们使用 Ruby on Rails,他们可能会喜欢使用新技术,并且你会得到一个很棒的框架来启动。

但可能更重要的是,你应该问他们的想法。你可能会感到惊讶。

于 2013-07-26T15:06:22.870 回答
1

根据上面的数据,基本的矛盾数据是你希望他们能够使用他们不理解的技术来编程。根据我的经验,这不是一个好主意。如果您的团队中没有人了解服务器端开发的来龙去脉,那么您最终将得到一个低质量的产品。

也就是说-您所描述的情况很常见,因此这是一个很好的问题。我的建议是你应该重新组织你的团队和工作流程,而不是试图通过使用“更简单”的技术来解决这个问题(我把它放在引号中是因为经常试图让一些更简单的事情来解决一组问题,但是作为需求改变了这些简化,只是开始按你的方式进行,然后就不再简单了。)

一些特定的选项:

  • 雇用一名具有“后端编码”技能的额外人员,让他们处理所有后端工作。(请注意,我们谈论的是哪种后端语言并不那么重要——C#、PHP、Java、Python 等——同样的原则也适用——与编写 UI 脚本相比,它需要一组不同/更复杂的技术技能.另一方面,这个人不需要UI开发人员应该具备的任何图形设计意识。)

  • 或者,指定您现有的团队中的一个来加强这些技能,虽然他们需要他们学习 - 您至少有一个特定的人最终会成为了解这些技能的人。

无论这个人是谁,都应该负责选择使用哪个框架。他们应该尽可能多地了解特定于您的项目的特定问题等。

此外,还有一些技术方法可以提供更好的分离。一个想法是您可以编写提供 JSON 数据的 API 调用,然后 UI 人员可以使用 JQuery 或类似工具访问这些数据。这样,您的后端代码都在一个文件中,并且只返回数据 - 更清楚谁在做什么。例子:

/api/some-data.php:(“后端人”编辑此)

// do some work to get some data
$myData = ...;
// dump it out as JSON
print json_encode($myData);

/some-page-that-uses-data.html: (“UI 人”对此进行了编辑)

<!-- simple jQuery AJAX call -->
<script>
$(document).ready(function() {
    $.ajax({ url:'/api/some-data.php' }).done(data) {
        // do something to populate the page with the data...
    };
});
</script>

(注意:如果遇到跨域问题,可以使用 JSONP 或 CORS 来解决。)


总体而言 - 与其试图让 UI 人员在他们不熟悉的领域工作,不如将工作分开,以便人们可以专业化,并且每个人都能做好自己的工作。你不需要一群人成为服务器端的忍者——但你至少需要一个……

于 2013-08-09T19:03:57.640 回答