【问题标题】:jsRender template embeddable in jquery plugin?jsRender 模板可嵌入到 jquery 插件中吗?
【发布时间】:2012-01-17 02:33:54
【问题描述】:

你能在 .js 文件中放置一个 jsRender 模板吗?原因是,我想包含我的整个插件,我想使用模板而不是编写所有代码来动态创建节点,在单个 javascript 文件中。这可能吗?如果有怎么办?如果没有,我有什么选择?

【问题讨论】:

    标签: jquery templates jsrender


    【解决方案1】:

    如果在脚本块中创建模板,则可以获取编译后的函数,转换为字符串,放入脚本文件中:

    运行代码:var compiledFunctionString = $( "#myTemplate" ).template().toString();

    复制生成的 compiledFunctionString 的字符串值(格式为 "function anonymous($data, $view) { ...content... }")并将其放入您的脚本文件中:function myTemplate($data, $view) { ...content... }

    现在你可以像这样使用它了:

    var html = $.render( data, myTemplate );
    

    【讨论】:

    • 但我无法将脚本块放入 javascript 文件中
    • 当然没有。我的建议是不要将脚本块放在 javascript 文件中,而是先在脚本块中使用模板创建一个单独的 html 文件,然后在控制台或监视窗口中将编译的模板函数评估为字符串: $( "#我的模板”).template().toString()。然后您可以将该字符串(函数)复制到您的插件 javascript 文件中。
    • 一种替代方法,虽然不是最佳性能(因为未预编译),但只是在您的脚本中以字符串形式提供模板,如示例 02_compiling-templates-from-strings 中所示。
    • 整个问题是整个插件、模板和所有东西都需要包含在一个 javascript 文件中。没有外部html,完全独立于任何网页。我想唯一的报酬就是把模板写成一堆字符串。
    • 嗯,我得到一个错误,说函数模板在我做的时候没有定义:$( "#myTemplate" ).template() 但这按照demo link工作:$.templates("#myTemplate")@BorisMoore:谢谢你,很棒的插件! LordZardeck:(你现在可能已经发现了)与 C++ 不完全一样,因为这里的“预编译”只是一个生成的 Javascript 函数,您将在 JS 文件中包含内联函数。
    【解决方案2】:

    想想 jQuery 插件:tmpl http://api.jquery.com/jquery.tmpl/

    【讨论】:

    • jQuery.tmpl 已停止使用以支持 jsRender。请参阅自述文件:github.com/jquery/jquery-tmpl(以及自述文件中的链接)。
    • 为了创建 HTML 代码,我们可以使用 document.createElement 或在 JavaScript 中使用字符串来创建节点。如果 HTML 结构大而复杂,我们可以在 HTML 文件或 JavaScript 文件中编写带有 HTML 标记的结构,然后使用模板引擎进行渲染,例如 tmpl 和mustache
    • 我要问的是如何在不使用 dom 操作的情况下将大而复杂的 html 代码准确地放置在 javascript 文件中。
    • Innerhtml 毫无意义。您可以直接从字符串创建模板
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多