再谈前端HTML模板技术


- 快速的初始化时间: 很多angular的簇拥者在奚落String-based templating似乎遗漏了这一点。
 - 同构性: 完全的dom-independent,即可作为用服务器端和浏览器端(客官先不要急着搬phantomjs哈).
 - 更强大的语法支持:因为它们都是不是自建DSL就是基于JavaScript语法,Parser的灵活性与受限于HTML的Dom-based模板技术不可同日而语
 
- 安全问题:使用innerHTML 构建 DOM具有安全隐患,用于渲染的动态数据可能存在安全漏洞,如果没有经过特定的转义处理,就有可能造成 XSS攻击或者 CSRF攻击。
 
- 性能问题:使用innerHTML 替换 DOM效率较低,即使仅替换 DOM 的一个属性或文本内容,也必须通过innerHTML 替换整个 DOM,从而导致浏览器的重排和重绘。
 - 开发效率问题:由于是通过正则表达式匹配后在特定函数中拼接字符串,所以容易造成重复计算,而且完全移除现有的 DOM,再重新渲染一遍,挂载在 DOM 上的事件和状态都将不复存
 - 有可能会创建出意料之外的节点:由于html的parser非常的“友好”, 以至于它接受并不规范的写法,从而创建出意料之外的结构,而开发者得不到错误提示。
 
- mustache及其衍生handlebar等: 弱逻辑
 - Dust.js: 强逻辑 (推荐)
 - doT.js: 超级快
 

- 是活动的: 完成compile之后,data与View仍然保持联系,即你可以不依赖与手动操作Dom API来更新View
 - 是运行时高效的: 可以实现局部更新
 - 指令等强大的附属物帮助我们用声明式的方式开发APP
 
- 信息冗余:信息承载于属性中,这个其实是不必要和冗余的。
 
- 初始节点获取问题:通过innerHTML获取初始节点,没有独立的语法解析器或词法解析器,与 HTML是强依赖关系。初次进入 DOM 的内容是模板,渲染需要时间,所以会造成内容闪动——FOUC(Flash of unstyled content)这个无需多说了,只怪它初次进入dom的内容并不是最终想要的内容。
 - 没有独立的Parser,必须通过innerHTML(或首屏)获取初始节点,即它的语法是强依赖与HTML,这也导致它有潜在的安全问题
 
- AngularJS: 都28000star了还需多说么
 - Knockout: 在此领域内,对Web前端而言是鼻祖级的
 

- 轻量级, 在Dom中进行读写操作是低效的.
 - 可重用的.
 - 可序列化, 你可以在本地或服务器端预处理这个过程。
 - 安全, 因为安全不需要innerHTML帮我们生成初始Dom
 
- htmlbar: 运行在handlebar之后的二次编译
 - ractivejs: 独立
 - Regularjs独立
 
再谈前端HTML模板技术的更多相关文章
- 再谈 Go 语言在前端的应用前景
		
12 月 23 日,七牛云 CEO & ECUG 社区发起人许式伟先生在 ECUG Con 2018 现场为大家带来了主题为<再谈 Go 语言在前端的应用前景>的内容分享. 本文是 ...
 - Unity教程之再谈Unity中的优化技术
		
这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的”顶点 ...
 - 重谈react优势——react技术栈回顾
		
react刚刚推出的时候,讲react优势搜索结果是几十页. 现在,react已经慢慢退火,该用用react技术栈的已经使用上,填过多少坑,加过多少班,血泪控诉也不下千文. 今天,再谈一遍react优 ...
 - 我是怎么从安卓到php再成为前端开发工程师的
		
记得我下定决心学Android(安卓)是17年的暑假,暑假前,学校组织了一次集训,美其名曰帮我们巩固知识,实际上就是学校和长沙的培训学校某牛达成了合作,教我们一些基础知识,然后集训完建议那些在学校没学 ...
 - [转载]再谈百度:KPI、无人机,以及一个必须给父母看的案例
		
[转载]再谈百度:KPI.无人机,以及一个必须给父母看的案例 发表于 2016-03-15 | 0 Comments | 阅读次数 33 原文: 再谈百度:KPI.无人机,以及一个必须 ...
 - HTML5触屏版多线程渲染模板技术分享
		
前言: 了解js编译原理的屌丝们都知道,js是单线程的,想当年各路神仙为了实现js的多线程,为了解决innerHTML输出大段HTML卡页面的顽疾,纷纷设计了诸如假冒的“多线程“实现,我自己也在写开源 ...
 - 再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结
		
这篇是对angularJS的一些疑点回顾,是对目前angularJS开发的各种常见问题的整理汇总.如果对文中的题目全部了然于胸,觉得对整个angular框架应该掌握的七七八八了.希望志同道合的通知补充 ...
 - 再谈HTTP2性能提升之背后原理—HTTP2历史解剖
		
即使千辛万苦,还是把网站升级到http2了,遇坑如<phpcms v9站http升级到https加http2遇到到坑>. 因为理论相比于 HTTP 1.x ,在同时兼容 HTTP/1.1 ...
 - Handlebars的基本用法   Handlebars.js使用介绍  http://handlebarsjs.com/    Handlebars.js 模板引擎  javascript/jquery模板引擎——Handlebars初体验   handlebars.js 入门(1)  作为一名前端的你,必须掌握的模板引擎:Handlebars  前端数据模板handlebars与jquery整
		
Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...
 
随机推荐
- 解决C盘中的文件不能修改问题
			
在不能修改的文件右击属性>点击安全>编辑>点击用户>完全控制. 步骤如图: 最后点击确定.
 - Sagit.Framework For IOS 开发框架入门教程6:网络请求STHttp
			
前言: IOS的文章,今天,再来补一篇,Sagit的教程: 虽然感觉IOS的文章没什么观众,还是努力写吧,-_-〜 Sagit 开源地址:https://github.com/cyq1162/Sagi ...
 - 云+社区分享——腾讯云OCR文字识别
			
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云+社区运营团队发布在腾讯云+社区 前言 2018年3月27日腾讯云云+社区联合腾讯云智能图像团队共同在客户群举办了腾讯云OCR文字识 ...
 - ASP.NET Core原理概述
			
ASP.NET Core 是一个控制台应用程序,在其 main 方法中创建一个Web服务器,以下是program.cs中的代码: using Microsoft.AspNetCore; using M ...
 - Beta 第四天
			
今天遇到的困难: 百度位置假死的问题研究发现并不是源于代码的问题,而是直接运行在主线程中会出现诸多问题 Fragment碎片刷新时总产生的固定位置的问题未果 今天完成的任务: 陈甘霖:修复了部分Bug ...
 - 结对开发五--对一千个数long型的一维数组求最大子数组的和
			
一.设计思想 我们根据第一个实验,再让他自动生成1000个随机long型数.大致思想和实验一一样,自己已埋入炸弹. 二.实验代码 package com.minirisoft; import java ...
 - Vue.js学习
			
<!DOCTYPE html> <html> <head> <title>xxx</title> </head> <bod ...
 - 201621123043 《Java程序设计》第11周学习总结
			
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread 1.1 BallR ...
 - 自制 h5 音乐播放器 可搜索
			
闲言碎语: 有好几天没有发表博客了,这也是因为一直开发音乐和完善我的博客项目,好不容易抽出时间总结一下这几天所做的东西,笔试又不断通知,实则匆忙 今天难得逃了一次课,就趁这时间,该写写就写写吧~~ 进 ...
 - 在网络编程中的io流小问题
			
在客户端和服务端调用io流进行传输数据的过程中,当将数据write到outputstream中,需要及时刷新,否则会发生io阻塞. 在输入数据的时候,最好选用BufferedReader,因为read ...