在 FIS 中,集成了百度前端模板

有好久没有写博客了,大概是因为工作太忙,加上要不断地学习,所以忘记了。。。

进入正题。。。

fis内置了百度前端模板baiduTempate,在编译过程中,会预编译生成对应文件,不需要线上编译,提高页面运行效率。所谓的预编译,开始我也是比较模糊,所以问了一些前端同事再加上自己工作体会便明白了,这里我写下个人的理解,若有不妥之处,还请大家多多指点。

使用fis构建工具时,在 JS 代码中,通过 __inline 方式进行编译处理前端模板。同时规定以 tmpl 为后缀的文件为前端模板,使用方式:

//编译前
var auditTemplate = __inline(‘./audit.tmpl‘);

audit.tmpl代码片段如下

<%if (ad_list && ad_list.length) {%>
    <%for (var i=0; i < ad_list.length; i++) {%>
        <tr>
            <td>
                <span data-node="auditId" data-id="<%=ad_list[i].id %>"><%=ad_list[i].id %></span>
            </td>
            <td>
                <a href="/ad/<%=ad_list[i].id %>" target="_blank"><%=ad_list[i].name %></a>
            </td>
            <td><%=ad_list[i].advertiser %></td>
            <td><%=ad_list[i].inventory_type %></td>
            <td><%=ad_list[i].status %></td>
            <td>
                <a href="/audit/audit_ad_detail/?ad_id=<%=ad_list[i].id %>" target="_blank" class="btn btn-default">审核</a>
                <a href="javascript:;" data-node="abandonBtn" target="_blank" class="abandon-btn btn btn-default">释放</a>
            </td>
        </tr>
    <%}%>
<%}%>

fis工具编译后的代码则为一个函数 如下:

//编译后
var auditTemplate = function(obj){
    var __t,__p=‘‘,__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,‘‘);};
    with(obj||{}){
        __p+=‘ ‘;
        if (ad_list && ad_list.length) {
            __p+=‘\n    ‘;
            for (var i=0; i < ad_list.length; i++) {
                __p+=‘\n<tr>\n<td>\n<span data-node="auditId" data-id="‘+((__t=(ad_list[i].id ))==null?‘‘:__t)+‘">‘+((__t=(ad_list[i].id ))==null?‘‘:__t)+‘</span>\n</td>\n<td>\n<a href="/ad/‘+((__t=(ad_list[i].id ))==null?‘‘:__t)+‘" target="_blank">‘+((__t=(ad_list[i].name ))==null?‘‘:__t)+‘</a>\n</td>\n<td>‘+((__t=(ad_list[i].advertiser ))==null?‘‘:__t)+‘</td>\n<td>‘+((__t=(ad_list[i].inventory_type ))==null?‘‘:__t)+‘</td>\n<td>‘+((__t=(ad_list[i].status ))==null?‘‘:__t)+‘</td>\n<td>\n<a href="/audit/audit_ad_detail/?ad_id=‘+((__t=(ad_list[i].id ))==null?‘‘:__t)+‘" target="_blank" class="btn btn-default">审核</a>\n<a href="javascript:;" data-node="abandonBtn" target="_blank" class="abandon-btn btn btn-default">释放</a>\n</td>\n </tr>\n‘;
            }
        __p+=‘\n‘;
        }
        __p+=‘‘;
    }
    return __p;
};

而如上过程则是在parser单文件编译过程中完成的。

所谓parser编译阶段是指:源文件通过一个个fis插件管道处理之后生成新的文件,可以将其它语言编译为标准的js和css,比如将前端模板、coffee-script编译为js,将less、sass编译为css。处理baiduTemplate的插件为fis-parser-bdtmpl ,通过编译器将模板编译为js文件,如上代码片段编译为一个js函数。 这就是fis内置baiduTemplate后期运用原理。如有不妥,请多多指教。。。

时间: 2024-08-02 06:09:07

在 FIS 中,集成了百度前端模板的相关文章

百度前端技术学院task1.10

任务十:Flexbox 布局练习 面向人群: 有一定HTML及CSS基础的同学 难度: 中 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现.那些最终

现有项目中集成Flutter

本文列举了项目开发使用Flutter会遇到的问题,以及如何使用Flutter module在现有项目中集成Flutter,并对其原理进行了分析. 最近在做的一个商业项目,完全的使用Flutter编写的,这其中的坑,只有写过的人才能体会到. 1. 纯Flutter项目的问题 在论述纯Flutter项目问题之前,我先表述下我的观点(仅限于纯Flutter项目,目前时间2018年6月26日,不排除Flutter的发展,让我的观点改观): 对于个人开发者,可以使用纯Flutter去开发App尝鲜: 对于

Yii框架学习笔记(二)将html前端模板整合到框架中

选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/topics/390807796 更多内容 百度:yii 前端 http://my.oschina.net/u/1472492/blog/221085 摘要 Yii框架学习笔记(二)将html前端模板整合到框架中 原文地址:http://www.ldsun.com/1309.html 上一节成功将Y

AEAI Portal中集成百度地图

概述 很多网站上都会有联系方式和地址,为了能更直观的显示出地址的具体位置,很多网站都在地址下面添加百度地图,下面就为大家介绍在AEAI Portal门户集成平台中为网站添加百度地图的方法. 步骤 1.  打开百度地图生成器的网址http://api.map.baidu.com/lbsapi/createmap/index.html 2.  在这里填入您的地址,标注等,然后点击下面获取代码的按钮,把代码复制下来即可,这只是其中的一款模板,您也可以选择别的模板,下面是我获取到的代码. <!DOCTY

【军哥谈CI框架】之CI中集成百度UEditor

Hello,各位亲,新的一周来临啦,很高兴这么快又跟大家伙见面!话说上一回,军哥带大家用JQuery写了一个城市级联菜单的例子 ,不知道亲们学会了多少,是否自己可以独立写出来了呢. 军哥很是期待大家学有所获的,有不明白的地方随时留言吧.好了,接下来,今天军哥要带大家来一起来完成如何在CI框架中集成百度的UEditor编辑器. 我们先简单来了解一下为什么选择百度UEditor编辑器? UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源

Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误

Android Studio 项目中集成百度地图SDK报以下错误: 1 java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create)I 2 at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Met

手机百度前端工程化之路

本文将围绕我半年来在移动前端工程化做的一些工作做的总结,主要从 localstorage缓存和版本号管理 , 模块化 , 静态资源渲染方式 三个方面总结手机百度前端一年内沉淀的解决方案,希望对大家移动开发有所帮助. 一年前存在的问题 可能因为之前项目节奏紧,人力不足原因,一部分phper承担了前端的工作,于是暴漏了一些问题. 粗暴的一刀切 从第一次在厂子写代码开始,就被前辈告诉移动页面,所以的静态资源都要内嵌,即写在script和style内,这样的好处是,网络情况不好的时候,减少http请求.

在Django Xadmin中集成Ueditor

Ueditor是由百度开发的一个开源的富文本编辑器,有人做了一个将其集成到Django中的方案(请戳),但是在xadmin中却无法正常加载编辑器. 其使用了一个模板用来呈现Ueditor的编辑界面 <textarea name={{ UEditor.name }} id=id_{{ UEditor.name }} style="display:inline-block;width:{{ UEditor.width }}px; {{ UEditor.css }}">{{UEd

百度JS模板引擎 baiduTemplate 1.0.6 版

A.baiduTemplate 简介 0.baiduTemplate希望创造一个用户觉得“简单好用”的JS模板引擎 注:等不及可以直接点左侧导航中的”C.使用举例“,demo即刻试用. 1.应用场景: 前端使用的模板系统 或 后端Javascript环境发布页面 http://tangram.baidu.com/BaiduTemplate 2.功能概述: 提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据, 生成对应数据产生的HTML片段,渲染不同的效果. 3.特性: 1.语法简单,学