artTemplate 自动化编译之tmod
一、背景
前端小白的成长历程,一般都会经历html模板的一些问题,jquery template/artTemplate/yayaTemplate等常见的模板使用,这里就不作介绍了。
先谈谈我们为什么要使用模板?
当一个html页面有许多重复,累赘,或者有逻辑,有律可循的时候我们常常会选择一款模板工具,来帮助我们开发。既提升了开发效率,也可以帮我们组织代码可阅读性,这是优点,或许也是我们选择它的理由。
当然它也有不可避免的缺点,譬如:
1.怎么优化SEO?(这个问题不是今天所讨论的内容,暂不讨论,有兴趣的可以留言共同探讨)
2.怎么集中管理?
怎么集中管理?这是啥意思!相信大家的模板都是这么使用的:
html:
<div id="content1"></div>
<div id="content2"></div>
<div id="content3"></div>
... <script id="XXXtmpl1" type="text/XXXtempate">
//模板代码1
</script> <script id="XXXtmpl2" type="text/XXXtempate">
//模板代码2
</script> <script id="XXXtmpl3" type="text/XXXtempate">
//模板代码3
</script>
... javascirpt: $('#content1').html($("#XXXtmpl").template);
$('#content1').html($("#XXXtmpl").template);
$('#content1').html($("#XXXtmpl").template);
...
//这里的代码只是说明这样个意思,不用介意它的语法,各个模板大同小异
好了,给了上面的伪代码,是不是觉得你还在遵循这样一种方式,去书写你的代码?当然,这样的代码是正确的,没有什么大问题。但是在前端自动化,或者前端模块化风靡的现在,上面的代码或许有点low了。
1.导致每个页面都有模板客户端解析,性能或多或少有一定的问题;
2.每个html页面都很多的模板,管理麻烦,可读性差;
所以.......你想到了什么?
把模板代码都存放到一个文件?或者每个都是单独的文件?Bingo!!!
在之前一个backbone+Marionette+typescript的项目中,框架不是我搭的。(相信你看到这个框架你就知道是个搞过C#的攻城狮搭的,因为活生生把弱类型灵活的javascript,变成了用ts管理的强类型的语言;当然,
并不是说ts不好,通过ts管理的前端工程,维护起来不管封装还是复用还是挺方便的(其实我并不觉得简单,呵呵),题外话啦)这个项目的模板用的dust模板,可能有开发者接触过,这个模板的原理,简单说起来就是:将
模板文件单独存放在一个模板目录,发布的时候通过模板引擎(node或者其他手段)编译到一个js文件,然后只要页面引用这个编译后的文件即可得到相应模板
可是......我们今天讲的也不是dust模板!(博主话唠,不要计较)
之前尝试过自己用node程序去编译jqueryTemplate的模板,当然,我所说的模板也是单独管理,而且我选的模板也就是html格式,因为这样可以用一些编辑器的Emmet语法敲起来快。这时就要自己用node去对模板的html文件打包,然后还要解析,虽然成功了,可是很麻烦,性能也不好;之所以选择jqueryTemplate是因为博主真心觉得它很方便,支持各种嵌套、各种逻辑、各种自定义js回调反正能满足你各种变态需求;但是后来发现一个现成的模板打包工具,是腾讯针对artTemplate的,也就是tmod(这里是今天的
正题了),最可惜的是没找到相关对jqueryTemplate打包编译的工具,所以开发还是遇到了一点限制。
二、artTemplate
时间有限,明日再来...
artTemplate 自动化编译之tmod的更多相关文章
- 在CentOS上构建.net自动化编译环境
我们知道在Windows上我们很容易构建于MSBuild的自动化编译环境,那么在CentOS也是可以的,主要是需要Mono. 在这儿我们选择Jenkins+Gitlab+Mono在C ...
- iOS自动化编译
最近研究了一下iOS的自动化编译,目的是为了简化测试和开发的同学沟通协调的次数,实现测试同学可以随时从网页操作编译SVN最新源码并打包ipa进行测试. 具体思路是通过从配置文件读取需要编译的项目配置列 ...
- VS2008 自动化编译脚本
可以通过调用MSBuild来使VS2008进行自动化编译. 1.新建文本文件,后缀名改为bat 2.文件内加上: ;转到MSBuild.exe路径 c: cd\ cd C:\Windows\Micro ...
- 构建Jenkins自动化编译管理环境
今天研究了一下Jenkins,有了一个粗浅的认识,顺手把构建的过程说一下,后续慢慢补充: (1)Secure CRT 连接到Linux服务器 要注意的一点是,要搞好一个文件传输的路子,否则不好传东西. ...
- 持续集成篇_08_Hudson持续集成服务器的使用(自动化编译、分析、打包、部署)
持续集成篇_08_Hudson持续集成服务器的使用(自动化编译.分析.打包.部署) 1.创建任务 svn用户验证 验证通过 *****五颗*表示每分钟检查svn路径是否有变更,有变更就会重新构建,相当 ...
- vsts~CI/CD实现自动化编译
打开你的vs online,选择build and release标签,进行自动化编译的开发. 一 新建,选择对应的源代码管理,我们以VSTS-GIT为例 二 选择你的项目所应对的开发框架,如.net ...
- Gradle Android最新自动化编译脚本教程
转自:http://blog.csdn.net/changemyself/article/details/39927381 一.前言 Gradle 是以 Groovy 语言为基础,面向Java应用为主 ...
- Makeflie自动生成依赖,自动化编译
在netbeans里开发,有一个重要文件makefile,是用来编译所有的文件. 项目的目录结构如下,扁平的目录结构,如何实现自动化编译,写makefile呢? 第一版 基础版: CC = g++ C ...
- 使用Jenkins + git submodule 实现自动化编译,解决代码安全性问题
道哥的第 030 篇原创 目录 一.一个真实的代码泄漏故事 二.Jenkins 的基本使用 1. Jenkins 是什么? 2. 安装 JDK8 3. 安装 Jenkins 4. 在浏览器中配置 Je ...
随机推荐
- string.join(iterable)
str.join(iterable) Return a string which is concatenation the of the strings in the iterable iterab ...
- win32程序通过LPCREATESTRUCT中的lpCreateParams传递参数给窗口过程函数
win32窗口程序中如果需要给窗口过程函数传递自定义参数,可以通过LPCREATESTRUCT结构体中的lpCreateParams进行传递. 创建窗口实例函数: m_hWnd = CreateWin ...
- ie7中ul不能嵌套div和li平级
我要讲一个忧伤的故事,本以为清晰的层次结构,ul里不能嵌套div和li平级,不然会乱乱乱! 代码: <ul class="catshow"> ...
- Pyhton的发展历程
Python的由来 在1989年12月时,吉多·范罗苏姆——龟叔,想寻找一门“课余”编程项目来打发圣诞节前后的时间.Guido决定为当时正构思的一个新的脚本语言写一个解释器,它是ABC语言(教学语言. ...
- JS正则截取两个字符串之间的字符串
match方法 var str = "iid0000ffr"; var substr = str.match(/id(\S*)ff/); console.log(substr) 返 ...
- DataSet,DataTable与DataRow的复制方法
DataSet 对象是支持 ADO.NET的断开式.分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个DataTable的数据或者复制另一个DataTabe中的数据 ...
- AngularJS之directive
AngularJS之directive AngularJS是什么就不多舌了,这里简单介绍下directive.内容基本上是读书笔记,所以如果你看过<AngularJS up and runnin ...
- 交换ctrl和caps_loack的新方法
交换ctrl和caps_loack的新方法 Table of Contents 1 过程 1 过程 debian用了几年,由于emacs的关系,一直将右ctrl和caps_lock键交换,使用的是xm ...
- EMC起步:华为交换机拆解
[作者:byeyear Email:east3@163.com 转载请保留此行] 1. 静电抗扰 理想情况下,我们的系统是一个中空且密闭的金属盒子,根据电磁场理论,外界的任何静电源都不可能 ...
- 【java】之 apache commons-codec 与Apache Digest demo实例,支持md5 sha1 base64 hmac urlencode
使用commons-codec 进行加密的一些操作 package com.jiepu.ApacheDigest; import java.io.FileInputStream; import org ...