繁体   English   中英

服务器端的jQuery模板

[英]jQuery templates on the server side

有没有人试图在服务器端使用像env.js这样的jQuery模板 (或任何其他基于JavaScript的模板)?

我正在考虑尝试通过能够在Web应用程序的客户端或服务器端呈现相同的模板来获得可以获得哪些好处,但我希望有人可能已经有一些经验,或者知道现有的项目在做什么这个。 我会特别感兴趣的是,与一些更传统的模板引擎相比,我可能会遇到任何性能问题。

回顾一下:有没有人在服务器站点上使用过jquery模板? 如果是这样,是否存在任何性能问题,或者我可能遇到的其他问题?

env.js是不必要的。

<plug shameless="true">

我正在编写和重新实现JQuery模板,以允许它们独立于DOM使用。 有关代码和演示,请参阅https://github.com/mikesamuel/jquery-jquery-tmpl-proposal 该规范可在http://wiki.jqueryui.com/w/page/37898666/Template上找到 ,它说:

以文本为中心而非DOM依赖。 状态:完成。 见第12节实施。 foo $ {bar}转换为与函数非常相似的东西(数据,选项){return“foo”+ bar; 模数减去一些吧

...

这将允许在服务器端javascript环境中使用此模板引擎,例如node.js或java / rhino

我很乐意反馈,可以帮助您入门。

</plug>

我的一位朋友在分布式遗传编程项目上工作,使用了一个js服务器端模板系统来管理所有用户浏览器中产生的所有Web工作者。 他的代码在这里: github 我不知道它会有多大帮助,但我知道它实现起来非常简单并做了一些了不起的事情。 从他如何轻松找到它我会推荐一个js模板系统。

编写服务器端代码来处理jQuery模板是相当简单的。

这是我创建的一些非常基本的vb.net代码 ,它将jquery模板字符串的结果返回给任何对象的数组。 目前它只替换数据值

Public Shared Function RenderTemplate(template As String, list As Array) As String
    Dim myRegexOptions As RegexOptions = RegexOptions.Multiline
    Dim myRegex As New Regex(strRegex, myRegexOptions)
    Dim splits = myRegex.Split(template)
    Dim matches = myRegex.Matches(template)

    Dim i As Integer = 0
    Dim swap As Boolean = False
    Dim str As New StringBuilder
    For Each item In list
        swap = False
        For i = 0 To splits.Length - 1
            If swap Then
                str.Append(CallByName(item, splits(i), CallType.Get, Nothing))
            Else
                str.Append(splits(i))
            End If
            swap = Not swap
        Next
    Next
    Return str.ToString
End Function

所以,如果我发送以下内容......

Dim strTargetString As String = "<p><a href='${Link}'>${Name}</a></p>"
Dim data As New Generic.List(Of TestClass)
data.Add(New TestClass With {.Link = "http://stackoverflow.com", .Name = "First Object"})
data.Add(New TestClass With {.Link = "http://stackexchange.com", .Name = "Second Object"})
Return Render(strTargetString, data.ToArray)

它会将其输出为字符串

<p><a href='http://stackoverflow.com'>First Object</a></p>
<p><a href='http://stackexchange.com'>Second Object</a></p>

这将比在服务器上生成虚假的浏览器对象更快,并且运行整个jQuery库只是为了替换一些标签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM