前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJs 项目开发小结

NodeJs 项目开发小结

作者头像
渴望飞翔的猪
发布2022-07-17 10:50:27
6100
发布2022-07-17 10:50:27
举报
文章被收录于专栏:葵花宝典007葵花宝典007

NodeJs 开发小记

有点明白为啥说有种思维方式是写作吧,就是明明想好好写突然不到如何写起,作为一个搞技术的,还是不废话,直接上内容吧

最近的区域链挺流行,带火了一波玩客猴系列的游戏,这下公司正好接了一个项目就是做一个类似的这个游戏。 一个月的开发时间,前端采用h5实现,后端考虑到发送消息的缓存维护,php不好处理,最后采用nodeJs来实现后端的逻辑功能。其实整个项目大体框架主要是公司另外一个人独立搭起来,之前也没有写过nodejs的,我就是后面加加业务代码,不过我有除了猫的基因遗传(说白了也就是位操作)没有看,其他基本都仔细看过来一便,毕竟是一个人搭建起来的,项目代码不是很多,感觉直接看大牛这样的实现也能学习到搭建框架的基础知识,不像很多历史项目,代码巨多,核心流程的看来看去的。主要是看管理的那一部分就行。

主要实现功能(一个成型的后端系统必然包括的几个方面)

  • 数据存储方面,数据库采用mysql实现数据的增删改查
  • 猫咪的遗传算法(这里其实是最简单的位运算操作实现,xx位表示猫的某个部位,以此类推);
  • 网络方面(websocket协议 实现采用socket.io)
  • 日志方面(没有采用任何日志库,自己实现的,就是简单的仿照Google的glog库的格式)
  • 业务方面 (就是采用js的语法 没有嵌入其他语言[感觉这条是废话哈])

主要的框架

首先还是贴一下项目目录 ,这个对一个有经验的程序员还是比较能有条理的:

src ├── config.json ├── index.js ├── insert.sh ├── log ├── mod │ ├── client │ │ ├── client.js 一个客户端实例 │ │ └── clientMgr.js 管理客户端实例的集合 │ ├── config │ │ └── main.js 实现读表的逻辑 │ ├── const │ │ └── main.js 常量的统一定义 │ ├── genes │ │ ├── main.js 猫的基因操作 │ │ └── statis.js │ ├── msg │ │ ├── cmd.js 消息号定义 │ │ ├── msg.js 消息协议定义 json格式 │ │ └── retCode.js 消息的错误码定义 │ ├── mysql │ │ ├── account.js 账号表 │ │ ├── feedback.js 反馈表 │ │ ├── feed.js 猫的喂养表 │ │ ├── flow.js 流水表 │ │ ├── freeze.js 冻结资金表 │ │ ├── kv.js │ │ ├── leaseMarket.js 出租市场表 │ │ ├── main.js │ │ ├── op.js 操作记录表 │ │ ├── order.js 订单表 │ │ ├── pets.js 猫的信息表 │ │ ├── petsLooks.js 猫的外观 │ │ ├── petsPhote.js 猫的图片 │ │ ├── sellMarket.js 售卖市场表 │ │ ├── sqlDefine.js │ │ ├── test.js │ │ └── user.js 用户表 │ ├── net │ │ ├── server.js 服务的建立 │ │ └── socket.js socket实例 │ ├── order │ │ └── main.js 订单逻辑 │ ├── part │ │ ├── base.js 基本信息 │ │ ├── feed.js 喂养信息 │ │ ├── flow.js 流水信息 │ │ ├── freeze.js 冻结资金信息 │ │ ├── lease.js 出租信息 │ │ ├── market.js 市场信息 │ │ ├── pets.js 猫的信息 │ │ └── sample.js │ └── util │ ├── idMaker.js 唯一id生成(采用递增形式) │ ├── logger.js 日志模块 │ └── main.js 一些工具函数的定义 ├── orderCheck.js 模拟订单的交易进行 ├── package.json 这里可以对项目需要的库进行添加,在新部署的时候 npm install –save 即可nodejs即可完成对库的安装 ├── res │ └── xlsx 放各种资源 比如策划表 ├── sys.js 内部跑的生产0代猫 └── www ├── index.html 是测试网页 └── market.html

  • 数据存储模块 采用的实现,很是方便load数据,不多讲,贴一个例子:
代码语言:javascript
复制
function createTable() {
    var AccountModel        = sequelize.import(process.cwd() + '/mod/mysql/account');
    var BaseModel           = sequelize.import(process.cwd() + '/mod/mysql/user');
    sequelize.sync();
    Logger.log('createTable DONE');
}
  • 日志模块 这里实现还是比较简单的, 不过貌似我自己没有搜寻到类似的,不知道另外一个大牛怎么找到的,不过在此我贴出实现代码如下
代码语言:javascript
复制
Object.defineProperty(global, '__stack', {
    get: function(){
        var orig = Error.prepareStackTrace;
        Error.prepareStackTrace = function(_, stack){ return stack; };
        var err = new Error;
        Error.captureStackTrace(err, arguments.call);
        var stack = err.stack;
        Error.prepareStackTrace = orig;
        return stack;
    }
});

Object.defineProperty(global, '__line__', {
    get: function(){
        return __stack[4].getLineNumber();
    }
});

Object.defineProperty(global, '__filename__', {
    get: function(){
        return __stack[4].getFileName();
    }
});
// 这样相当于在全局定义了新的俩个属性 ,可以直接调用
 console.log('[' +__filename__+':'+__line__ + '] '); //即可打印出当前的文件和行数,方便debug 
  • 业务方面 不多说 其实也只是简单的增删改查。
  • 网络方面

这个其实写的也比较简单,没有使用任何库,主要是学习下作为服务器如何管理多个用户的连接吧。 话说服务器不就是做这个事情的嘛,底层通讯的问题一般都使用成熟的库,在此是socket.io 作为现在程序员要做的,基本上学习网络通讯库的api使用,主要还是管理多个连接问题嘛,底层的通讯一般都不需要程序员自己写了,也没必要花那些精力和时间,不过必要的了解原理还是需要的,不然没使用的出的bug,就不要无处判断了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NodeJs 开发小记
  • 主要实现功能(一个成型的后端系统必然包括的几个方面)
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档