Ember.js 模板预编译的学习笔记

Ember.js 里,如果把模板直接写在 index.html 文件中,是这样写的:

 代码如下 复制代码

<script type="text/x-handlebars" data-template-name="application"> // 最顶级的模板
...
{{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="index">
...
</script>

<script type="text/x-handlebars" data-template-name="user">
...
{{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="user/index">
...
</script>

打开 index.html 网页时,Handlebars.js 会即时编译1模板内容。如果要提高应用速度,则可以把模板文件分离出去,然后预编译。

我们建一个 templates 目录,专门放置 handlebars 模板。以上面的代码说,模板从主页面分离如下:

 

 代码如下 复制代码
   application.hbs
    index.hbs
    user.hbs
    user/index.hbs

注意,第四个 index.hbs 是放在 user 子目录下的,另外,.hbs 文件中不需要 <script>...</script> 这样的标签,只需把 script 标签对之间的内容拷入 .hbs 文件。

预编译的工作可以交给 grunt ember templates ,相应的 Gruntfile.js 配置部分如下:

 代码如下 复制代码

emberTemplates: {
  compile: {
    options: {
      templateBasePath: 'app/templates/'
    },
    files: {
      'app/scripts/templates.js': 'app/templates/**/*.hbs' // 将 tempaltes 目录下所有的 hbs 文件一同编译到 scripts/templates.js 文件中
    }
  }
},
watch: {
  emberTemplates: {
    files: 'app/templates/**/*.hbs',
    tasks: ['emberTemplates']
  }
}

命令行下运行 grunt emberTemplates 就可以预编译,之后在 index.html 文件中引用 templates.js 文件:

 代码如下 复制代码

<script type="text/javascript" src="scripts/templates.js"></script>

原文来自:陈三博客

 

时间: 2025-01-29 16:25:27

Ember.js 模板预编译的学习笔记的相关文章

JS的预编译和执行顺序 详析

原文:JS的预编译和执行顺序 详析 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题   代码:   复制代码 代码一 <html>   <head>     <title>事件处理</title>     <meta http-equiv="content-type" content="text/html;charset=utf-8"/>

Ember.js 模板添加 HTML5 属性

最近开发一个 Chrome 扩展,因为基于 Chrome 浏览器,所以就放心大胆地用各种新技术,比如1:  代码如下 复制代码 <form>   <label for=email>邮箱:</label>   <input type=email required=required title=请输入邮箱地址 name=email placeholder=请输入邮箱地址>   <input type=submit> </form> req

关于Vue.js一些问题和思考学习笔记(1)_javascript技巧

前言 本文不是Vue.js的教程,只是一边看官网Vue的教程文档一边记录并总结学习过程中遇到的一些问题和思考的笔记. 1.vue和avalon一样,都不支持VM初始时不存在的属性 而在Angular里是可以支持的,因为angular采用脏检查的方式实现双向绑定,vue和avalon都是采用setter和getter实现双向绑定 例,如下代码在一秒后不会显示出"xxcanghai"的字样 <div id="app"> <h1>{{obj.tex

Bootstrap教程JS插件滚动监听学习笔记分享_javascript技巧

本文主要来学习一下JavaScript插件--滚动监听. 1.案例 滚动监听插件可以根据滚动条的位置自动更新所对应的导航标记.你可以试试滚动这个页面,看看左侧导航的变化. 先把实现的代码上了,你可以通过测试代码先来看看效果. <!DOCTYPE html> <html> <head> <title>Bootstrap</title> <meta name="viewport" content="width=de

原生js操作dom节点的学习笔记

今天学习了如何用原生js写dom元素(节点),下面是结合所学文档W3C整理的笔记: 1.添加节点 创建节点:使用createElement创建元素,使用createTextNode创建文本节点 首先是一段html代码,下面的例子都引用这个. <div id="div1"> this is first paragraph this is second paragraph </div> Js部分: //创建一个新的元素 var para=document.creat

Node.js中的模块机制学习笔记_node.js

Javascript自诞生以来,曾经没有人拿它当做一门编程语言.在Web 1.0时代,这种脚本语言主要被用来做表单验证和网页特效.直到Web 2.0时代,前端工程师利用它大大提升了网页上的用户体验,JS才被广泛重视起来.在JS逐渐流行的过程中,它大致经历了工具类库.组件库.前端框架.前端应用的变迁.Javascript先天就缺乏一项功能:模块,而CommonJS规范的出现则弥补了这一缺陷.本文将介绍CommonJS规范及Node的模块机制. 在其他高级语言中,Java有类文件,Python有im

js中回调函数的学习笔记_javascript技巧

回调函数是什么在学习之前还真不知道js回调函数怎么使用及作用了,下面本文章把我在学习回调函数例子给各位同学介绍一下吧,有需了解的同学不防进入参考. 回调函数原理: 我现在出发,到了通知你" 这是一个异步的流程,"我出发"这个过程中(函数执行),"你"可以去做任何事,"到了"(函数执行完毕)"通知你"(回调)进行之后的流程 例子 1.基本方法 <script language="javascript&q

构建基于 NodeJS 的 LESS.js 预编译 CSS 服务

我们在项目中使用 Less.js 的预编译 css 技术.Less 最终编译的代码是 css,也就是 *.less 输出 *.css 的工作,围绕这项过程的方式方法多种多样,有的是导入 less.js 到页面编译 less(客户端执行),有的是透过构建工具如 Grunt.Glup 生成.客户端执行比较耗时而且也有浏览器兼容的问题,故不推荐:构建工具比较流行于前端社区,如果放在 JEE 项目中似乎太重了,不便于 Javaer 学习跟使用.我们想,既然 less 是 js 编写的编译器,其官方也有提

WPF + Silverlight学习笔记

WPF and Silverlight学习笔记(三十):Brush(2) WPF and Silverlight学习笔记(二十九):Brush(1) WPF and Silverlight学习笔记(二十八):基本图形的使用(3)图 WPF and Silverlight学习笔记(二十七):基本图形的使用(2)Pa WPF and Silverlight学习笔记(二十六):基本图形使用(1) WPF and Silverlight学习笔记(二十五) WPF and Silverlight学习笔记(