全局变量
在laya的开发过程中,遇到过有个很严重的问题,由于分了模块之后需要的参数需要全局共享,但是一开始并没有考虑到将变量全局化,而是简单地采用最粗暴的方法,直接传参。这样虽然可以让方法看起来非常简单明了,但是有个很大的坏处就是许多的参数需要一层一层传下去,而且会造成一个方法会有一堆的参数,有时候可能只是因为底层某个方法需要某个参数,就需要将所有调用的方法都添加上对应的参数。
面对这样的问题最好的解决方法就是将对应的变量全局化,在我的“色子王”项目中,我们有一个game类的全局对象,主要是记录每一局游戏的一些全局信息,例如
mainPlayerIndex:当前玩家对应在playerList中的index
curPlayerIndex:当前叫点的玩家
类似上面的这些变量,我们都放在game对象中,然后使用下面一句代码将game全局化
window.game = game;
之后就可以通过window.game去调用对应的game对象,而不需要传入参数。
但是
这样做是有一定的风险的。因为对应的变量是全局都可以调用的,所以有时候在开发的过程中我们需要考虑变量的初始化。
无论什么时候,变量一定需要先初始化赋值后才可以调用。
因此需要在实现之前就确定好整个系统的流程,不然很容易造成方法调用出bug。
全局变量的另一种做法
该做法是参照梦佳的Laya教程——打地鼠上面的做法。
在入口文件LayaSample.js中入口参数做了这么的设置
window.LayaSample || (window.LayaSample = {})
通过这样的一行代码将LayaSample全局化,所有变量都可以通过LayaSample存放后全局使用,其实跟window是一样的做法的。
socket.io
这一块也不算是Laya的,所有的前后端都适用。
在跟后台的socket交互中,一般我们会使用不同的事件名来管理事件,为了方便理解,我们可能一开始会采用硬编码+有一定意义的英文去表示。
对于普通的项目这种做法是没有任何问题的。
但是,在这里我们还是推荐大家使用软编码+减少信息量来表示。
软编码的做法就是采用可配置的形式,将对应的事件名管理放在配置文件中,不需要每次都去修改源代码。
减少信息量,一般可以采取参考http中的响应数字,如404代表找不到页面之类。
网友评论