js组织html代码块心得
2017-07-15 22:20
183 查看
引言
在js开发中,经常会通过拼接html字符串,来为前端页面动态增加元素。然而,这种方式非常不直观且不便于后期维护。尤其当添加的元素量较大时,与之相关的js代码会显得十分杂乱。针对此种情况,本文以通过js生成一个静态html页面代码块为例,结合Ecmascript6动态字符串标准和网友自定义的format函数,来分享一下js组织html代码块心得。1 Ecmascript6动态字符串标准
Ecmascript6规定动态字符串用反引号“,动态字符串中需要引用变量的地方,只需参照${var}形式即可,样例如下:var id="div1" var divHtmlBlock=`<div id="${id}"></div>`;
2 js自定义扩展format函数
此函数同样用于组织动态代码块,但同时适用于引号和反引号两张形式的字符串。format函数定义如下:
//判断是否为空对象 function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } if (!String.prototype.format) { String.prototype.format = function (args) { if (arguments.length > 0) { var result = this; if (arguments.length == 1 && typeof (args) == "object") { if (isEmptyObject(args)) { return "" + this; } for (var key in args) { var key2 = key.replace(/\$/g, '\\$');//key中的特殊符号转义; var reg = new RegExp("({" + key2 + "})", "g"); result = result.replace(reg, args[key] || '');//null 替换为'' } } else { for (var i = 0; i < arguments.length; i++) { if (arguments[i] == undefined) { return ""; } else { var reg = new RegExp("({[" + i + "]})", "g"); result = result.replace(reg, arguments[i]); } } } return result; } else { return "" + this; } } }
format函数使用样例如下(注意format函数返回加工后的字符串,而并没有对原字符串进行替换):
var opt={ id:"div1" }; var divHtmlBlock=`<div id="{id}"></div>`; divHtmlBlock=divHtmlBlock.format(opt);
3 编写html页面代码块
最后,我们混用1、2两种方式来轻松直观的编写一个html页面代码块。其中,子代码块采用方式2,设置元素属性或内容则采用方式1。//从数据库读取的页面内容 var data={ divText:"欢迎您!" } //html页面代码块 htmlBlock=` <!DOCTYPE html> <head> <meta charset="utf-8"> <title>静态页面</title> {cssBlock} </head><!--/head--> <html> <body> {bodyBlock} {jsBlock} </body> </html> `, //页面子块对象 htmlOpt={ cssBlock:'<link href="css/my-css.css" rel="stylesheet">', bodyBlock:`<div>${data.divText}</div>`, jsBlock:'<script src="js/my-js.js"></script>' }; htmlBlock=htmlBlock.format(htmlOpt);
相关文章推荐
- 学习完html,css,js,jq之后做网页心得
- C# 对JS解析AJX请求JSON并绑定到html页面的一些心得
- 封装html代码块到js函数中
- HTML+JS 代码块加载顺序
- ReactMix:基于HTML+JS+CSS写APP的最佳实践
- JS中的HTML片段
- WebStorm 7.0 发布,智能HTML/CSS/JS开发利器
- Html to jsstring
- HTML5+CSS3+JS学习笔记-6
- js向页面新加入的html事件绑定
- html加JS的无缝滚动技术
- 如何更好组织JS代码,提高可读性?
- js模板让数据与html分离
- JS常见代码块,持续更新......
- js分组——html灵活的使用
- 基于Html+js实现的瓦片式的Webgis栅格地图管理平台
- EditPlus 格式化js、html、css
- php+html+js 全选删除
- iOS 与JS Html常见交互
- js和html插件集