新足迹

 找回密码
 注册

精华好帖回顾

· 【原创】带着KIA Stinger下赛道,归来谈谈感想。82楼更新下赛道费用细节。 (2021-12-23) heroxk · 【美食接龙】第3棒~ 鱿鱼两吃: 玉环酿&金封碎-接棒食材- 鲜虾- tritri 请接棒啦~ (2009-6-1) 闲夏采薇
· 岁月的眼睛 (2024-9-26) 小河 · 效颦三:从我的个人经历谈应该做鸡头还是凤尾,我用三十年的时间和你坐在一个教室里面 (2008-3-9) 手机
Advertisement
Advertisement
查看: 1353|回复: 9

view模块化和 js 的冲突 [复制链接]

发表于 2011-10-7 11:33 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
假如 有一段view代码 很多次重复 很容易的想到把他变成 partial view 之类的

但是 如果 这些 partial view 里面 要用到 javascript呢
不能写在 里面吧,因为这个 partialview 如果被循环,那 js function 的 定义不是 会重复N 次
如果放在 partial view的 外面呢
又失去了封装的意义

这种情况大家是怎么做的呢

[ 本帖最后由 o2h2o 于 2011-10-7 14:55 编辑 ]
Advertisement
Advertisement

发表于 2011-10-7 13:18 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
view 模块 包含 html, js, css, images 等单独的文件/夹

发表于 2011-10-7 13:24 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不管是不是patial view, javascript都分出单独的js文件比较好吧,
你说的重复是在同一个document(页面)里边? 那样的话js function 可能要从顶层考虑?

发表于 2011-10-7 13:25 |显示全部楼层
此文章由 iceman 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 iceman 所有!转贴必须注明作者、出处和本声明,并保持内容完整
把JS也抽出来,尽量不要在view里直接写js

发表于 2011-10-7 14:52 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-10-7 13:24 发表
不管是不是patial view, javascript都分出单独的js文件比较好吧,
你说的重复是在同一个document(页面)里边? 那样的话js function 可能要从顶层考虑?

我现在 js 就是 在 外面的
但是 觉得别扭
一个 模块不能直接用

要 dependent 另外一个 js 模块一起才能用
感觉不爽

理想状态是
调用一个 partialview 的时候 不需要引用外部文件
传几个参数 就 搞定
但是好像比较困难
现在 web的  js比例越来越大

[ 本帖最后由 o2h2o 于 2011-10-7 14:54 编辑 ]

发表于 2011-10-7 15:03 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
其实这些函数你调用次数多就更要分开,
因为分开后每次调用都会从本地拿
而不是从服务器拿
Advertisement
Advertisement

发表于 2011-10-7 15:05 |显示全部楼层
此文章由 dcc82 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dcc82 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果这个js仅仅只用在这个view上的话,在view中写js其实也未尝不可
page-level css/js, inline-level css/js全部抽出来,单独放在相应的js,css文件中去,这个想法是好的,比较适合有洁癖的人。实际情况中,有些小困难,能难要求所有的team members都能做到,会比较费时,有时候发现冲突的话,比方说某个css怎么改都会被先前先定的css给覆盖掉,很多人直接火大,来个inline-level的解决掉算了,所以还是要看你对自己的编码要求是怎么看的。
js和css能抽出来的话肯定是好的,但要注意的问题是,你的js function参数的构造要非常的灵活,能写成plugin的样式最好,还要注意浏览器的缓存(比较简单的方法是自动在最后加一串随机字符串,高级一点的用expires header自动来判断)

我好像没在partial view中放过js。如果你的partial view要多次被调用,可以看一下你的framework是不是能做view helper(不同的framework可能称呼不同,但view helper就是为此设计的,适合要格式化某个view的片段, 它不是单纯的include)

发表于 2011-10-7 15:46 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dcc82 于 2011-10-7 15:05 发表
如果这个js仅仅只用在这个view上的话,在view中写js其实也未尝不可
page-level css/js, inline-level css/js全部抽出来,单独放在相应的js,css文件中去,这个想法是好的,比较适合有洁癖的人。实际情况中,有些小困难,能难要求 ...

如果 这个 partialview 回在 主view 被循环咋办

在 这个partial view 里面定义 js 函数
不是会重复 定义 N 次了

这个是比较头大的

有时候如果不写 inline的 js code css
找起来还真是麻烦的 很

[ 本帖最后由 o2h2o 于 2011-10-7 15:52 编辑 ]

发表于 2011-10-9 17:45 |显示全部楼层
此文章由 huangjoice 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huangjoice 所有!转贴必须注明作者、出处和本声明,并保持内容完整
在定义函数的时候检查一下是否已经定义了不就可以了?
Something like below:
===============================
if (funca == 'undefined')
{
    funca = function(){
       blah; blah;
   }
}
===============================

发表于 2011-10-9 22:45 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 huangjoice 于 2011-10-9 17:45 发表
在定义函数的时候检查一下是否已经定义了不就可以了?
Something like below:
===============================
if (funca == 'undefined')
{
    funca = function(){
       blah; blah;
   }
}
===============================


这样是 可以的
但是如果这段代码被 repeat n次
会让我觉得崩溃的

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部