预编译 JavaScript 模板以在项目构建时发挥作用

发布于 2024-11-16 20:59:20 字数 678 浏览 2 评论 0原文

更新 我想避免在客户端编译模板,并在本地 ant 构建过程中编译它们。也许像将 jQuery 和 jQuery 模板加载到 rhino 中,依次将每个 .jst 文件的内容传递给 $.template() 函数,并构建一个应包含以下内容的“templates.js”

$.template['model-view'] = resultingFunction.toString();
// 1 for each .jst file

: ,我可以将每个模板维护在单独的文件中,并避免让所有客户端冗余地编译相同的模板。


我正在使用 jQuery 模板,并希望将它们分离到自己的文件中(例如 model-view.jst),这些文件在项目构建时编译成函数,并在 jQuery .tmpl() 范围中可用以供以后使用使用。

例如,给定文件 model-view.jst

<li>${name}</li>

该文件和所有其他 .jst 文件应该在构建时选取,编译成一个函数,稍后可以在程序中的任何位置使用,如下所示:

$.tmpl('model-view', {
    name: 'Matt'
});

Update I want to avoid compiling the templates client-side, and have them compile during my local ant build process. Perhaps something like loading jQuery and jQuery templates into rhino, passing the $.template() function the contents of each .jst file in turn, and building a "templates.js" which should contain:

$.template['model-view'] = resultingFunction.toString();
// 1 for each .jst file

This way, I can maintain each template in a seperate file, and avoid having all clients redundantly compile the same template.


I'm using jQuery templates, and was hoping to separate them out into their own files (eg. model-view.jst) that are compiled into functions when the project is built and made available in the jQuery .tmpl() scope for later use.

For example, given the file model-view.jst

<li>${name}</li>

This file and all other .jst files should be picked up on build, compiled into a function that can later be used anywhere in the program like so:

$.tmpl('model-view', {
    name: 'Matt'
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灰色世界里的红玫瑰 2024-11-23 20:59:20

我使用 Node.js 和 Coffeescript 将部分目录模板化为可执行的预编译函数,解决了这个问题。希望这有帮助。

https://github.com/wookiehangover/jquery-tmpl-jst

I solved this problem using Node.js and coffeescript by making directory of partial templated into executable, pre-compiled functions. Hope this helps.

https://github.com/wookiehangover/jquery-tmpl-jst

弃爱 2024-11-23 20:59:20

我让你决定是否喜欢:)

在你常见的js库中定义这个函数:

function loadTemplate(templateName) {
   $.ajax({
      url: templateName + '.jst',
      success: function(data) {
         $.template(templateName, data);
      }});
}

然后在你的master hml文件部分你可以添加:

<script type="text/javascript">loadTemplate('model-view');</script>
<script type="text/javascript">loadTemplate('another-model-view');</script>

所以你可以在代码中的任何地方使用

$.tmpl('model-view', your-data)
$.tmpl('another-model-view', your-data)

希望它有帮助

I let you decide if you like it or not :)

in you common js library define this function:

function loadTemplate(templateName) {
   $.ajax({
      url: templateName + '.jst',
      success: function(data) {
         $.template(templateName, data);
      }});
}

Then in you master hml file <head></head> section you can add:

<script type="text/javascript">loadTemplate('model-view');</script>
<script type="text/javascript">loadTemplate('another-model-view');</script>

so you can use anywhere in your code

$.tmpl('model-view', your-data)
$.tmpl('another-model-view', your-data)

Hope it helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文