如何让我们的网页设计师在没有服务器端语言的情况下编写复杂的Web应用程序

Alo*_*kin -4 asp.net-mvc razor

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

  • 客户端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>
Run Code Online (Sandbox Code Playgroud)

在性能,设计模式,代码风格和安全性(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>
Run Code Online (Sandbox Code Playgroud)

/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”>
    <div>
        <label for="name">Name</label>
        <input type="text" name="name" />
    </div>

    <div>
        <label for="description">Description</label>
        <textarea name="description"></textarea>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

/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>
Run Code Online (Sandbox Code Playgroud)

Bra*_*tie 6

恕我直言

我不得不说,UI家伙是UI家伙的原因.这就是沟通和理解要求的来源.双方都应该清楚地了解需要采取哪些措施来完成最终产品.对于前端的人来说,如何获取信息永远不应该是一个问题,就像你在编写服务或制作视图模型时应该永远不必担心使用哪个样式表.

如果这是后端工作负担过重的问题,可能是时候考虑清理事情或使事情更简洁,但不要将数据库访问权交给不知道自己在做什么的人.

如果您非常关心它们如何能够访问数据,那么这不应该是一个危险的标志吗?在我看来,你宁愿投资数周(并且将需要几个星期,因为你必须沙箱一切),使其安全可访问,而不是只是为它们进行管道.

是否有要求让你100%到达那里?不会.你会有一些来回(UI需要一些东西,或者你做的)但这就是游戏的名称.好的部分是大多数时候你可以串联工作(他们正在研究它看起来如何,当你给他们他们需要的东西连线).