js中的容错处理 与 ssi 在ftl中无法容错 与 字符串转变量
1》JS中我们可以 做任何数据的容错。
比如:使用对象前判断对象是否存在,
if(typeof ob !="undefined"){alert(1) }
否则会报错
再比如:使用某个DOM节点的属性时,判断是否为存在,
typeof($("#aa").attr("data-type"))!="undefined"
在JS 中不像在服务端编译解析FTL
我们是单纯的从浏览器客户端考虑这个问题,
那么,没有什么是容错不了的。
你定义的你没定义的。存在的不存在的。等等......
3》下图通过ssi的方式引入的静态页是无法容错的,很显然是因为是ftl 在服务端解析的, 在服务端解析编译成 html的时候,如果这个静态页不存在的话,那么就会返回404页面片段。相当于ftl编译的静态页当中,有一块引入的这个html 静态页是 404的。所以,这种方式引入的 html 此文件是必须要求存在的。
5》字符串转变量
window["prop"] = {};
window.prop={};
如果是上面这种场景就不需要转了。
下面是字符串数组,转为变量。相当于把这每一个字符串通过[]号的方式变为一个新的对象的属性。
var a = ['a', 'b', 'c'] var obj = {} for(i = 0; i < a.length; i++){ obj[a[i]] = "abc" + 1 } alert(obj.a) alert(obj.b) alert(obj.c) 如果不想使用obj 可以为 for(i = 0; i < a.length; i++){ window[a[i]] = "abc" + 1 } alert(a) alert(b) alert(c) 但是不推荐这么用,最好是第一种方法。
相信才会最好