界面多才考虑用框架网址(方便调界面),逻辑多界面少甚至没有,就建议用JS文件。JS文件可以很方便使用当前页面的全局变量,而框架的话,要套用`window.parent.`来调用,所以比较罗索,所以不推荐使用。 一般来说,还是推荐用JS文件,框架只适合界面比较多又复杂,但逻辑代码比较少才考虑使用框架。 JS文件,大家可以理解为PHP文件,而框架网页就相当于模板,一般不建议在模板中写太多程序。而在程序中可以放入少量的模板界面代码。 如下图所示, 框架网页的话,初始化被执行的是函数 `init();` JS文件的话,初始化被执行的是类的方法` init();` 比如 `mod_class.signin.init()` `init`是指当前模块被加载完毕时执行的. 如果要在所有模块都加载完毕的话,就要用另一个方法或函数 `finish` 切换圈子房间的时候,不再执行`init()` 而是另一个函数或方法 `repeat_init()` `mod_class.signin.fn222()` 这个是JS脚本互相被调用的方法格式 `window.parent.mod_class.signin.fn222()` 这个是框架网页互相被调用的方法格式,那就是在框架里边要加上`window.parent.` 注意要把`signin`换成相应模块的关键字,`fn222` 换成定义好的方法或函数 , 框架用函数定义, JS脚本用方法定义 JS脚本中的类的格式化如下 ~~~ mod_class.signin = { init:function(res){ this.fn1(res); }, fn1:function(s){ alert(s); }, finish:function(res){ //alert(res); }, } ~~~ 其中 `mod_class`是全局用到的类,各插件可以互相调用。 比如 `mod_class.signin.xxxx()` 再次强调,在框架中使用的话,要加上`window.parent.` 在框架中就有函数 ~~~ //页面加载完毕后被执行的函数 function init(res){ //注册聊天数据初始加载成功的事件,但这个有可能不执行,因为加载顺序的问题 window.parent.load_data.signin = function(res,type){ if(type!='cknew'){ get_cfg(); } } var firstPageData = window.parent.first_page_data; if( typeof(firstPageData)!='undefined' ){ //框架滞后加载的情况 get_cfg(); } } //所有模块加载完毕后被执行的函数 function finish(res){ } ~~~ [![](https://img.kancloud.cn/42/df/42df602766c36d7bd4dfa013a8259688_1357x660.png)](https://img.kancloud.cn/42/df/42df602766c36d7bd4dfa013a8259688_1357x660.png) [![](https://img.kancloud.cn/35/13/3513fb56e7e46486ad1d657bf1fdcfa1_1572x722.png)](https://img.kancloud.cn/35/13/3513fb56e7e46486ad1d657bf1fdcfa1_1572x722.png)