jQuery 应该是一样的吧…
比如我吧一个模板文件用 <script type='text/jade' id='tmpl' src='tmpl.jade'>
包含起来,
弱弱得问一声… 这个 type
会不会不科学的…?
然后怎样从内部取出具体的内容呢?
$('script[type="text/jade"]').each(function () {
var script = $(this).html();
// script就是js代码了
});
这样还是不安全的说.
$('script[type="text/jade"]').each(function(){console.log(this.text)});
笨一点的方法:你获取到script标签的src属性,然后自己发出个ajax请求去获取内容
是不是没放在document的ready以后执行?
浏览器应该是执行src所引入的脚本文件~ 如果想获取那个src的文件,个人觉得老雷的说法还可以尝试去做!
内联的可以$(id).html(),对于外部资源,浏览器是首先加载到script然后解释执行的,你这里用src一般做法就是一个xhr请求取回来内容
@leizongmin 如果是跨域js文件,岂不是还非常麻烦?
@jiyinyiyong 我同事遇到类似问题,把模板文件写成xxx.jade.js的样子,然后用seajs载入。 并且自己做了个小程序,把模板中的空格回车删除,并在开头加入define…笨是笨了点,但问题解决了。不怕跨域。
@jiyinyiyong 前段mvc模板一般都是直接写在html页面,或者写成html文件,后端格式化处理成一个模板js文件,也就是一个模板对象,这样又快又减少http请求.
同样遇到这个问题,前后端同时使用jade 是不能把模板放到内嵌script里的,然后很别扭,我的方法是把jade文件转化成字符串,然后付给一个变量,前端代码中直接引用这个变量 不过这个又失去了jade易读易写的结构,也没找到什么好方法
如果jade能够生成内嵌的script 不去除空格而且复合jade格式的话,这个问题也算解决了
不对 我的问题解决了 可以用内嵌 注意里面的变量#{XX} 前要加\ 看来是我想过来
我就在一直找能这样读取script的src指向的资源的内容的方法,而且,感觉 @leizongmin 的方法不能完全满足要求,因为如果是用src属性获取资源的话,浏览器是有缓存的,如果是使用ajax获取json,虽然可以在网页运行时设置缓存,但是那缓存只是缓存到内存中去了,一旦关掉这个页面,再次读取时将会再次获取json,而使用src属性获取资源,就直接从硬盘缓存中获取资源了。
不过使用iframe是可以的,而且直接把jade的文本放在iframe的pre标签里,不过获取iframe的内部标签怎么获取,不要笑,我真不知道,前端的这些东西我都没有系统的学过。网上好像有些方法,不过自己稍微试了一下,好像有问题,不过这种问题应该很容易解决。也许获取iframe的内部标签对你们而言是小儿科,而且这种方法太难看了,(那么一大堆源代码直接作为字符串放在iframe里啊,)所以还是想找个更好的方法。