现在除了Web项目外,很多游戏引擎都支持js,包括Egret、Cocos、Unity等,甚至服务器端也可以用node.js。所以很多时候我们是可以积累一套通用工具库在不同项目间,甚至是不同类型项目、不同引擎间通用,来提高我们的开发效率。但是js的规范性较差,可维护性不强,有很多弊端,采用TypeScript来开发和积累我们的类库是比较好的一种选择。TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。在易用性、可读性和易维护上都有了不小的提高。采用TypeScript来开发可以发布成js文件来使用。下面就简单介绍一下TypeScript的工作流。
通过npm(Node.js包管理器)来安装TypeScript:
> npm install -g typescript
class Test {
private name:string = "Hello world";
public constructor () {
console.log("constructor=" + this.name);
}
public testFun():void {
console.log("testFun=" + this.name);
}
}
function testCallFun():void {
let t = new Test();
t.testFun();
}
>tsc HelloWorld.ts
var Test = (function () {
function Test() {
this.name = "Hello world";
console.log("constructor=" + this.name);
}
Test.prototype.testFun = function () {
console.log("testFun=" + this.name);
};
return Test;
}());
function testCallFun() {
var t = new Test();
t.testFun();
}
constructor==========>>>Hello world
testFun===========>>>Hello world
这样一套完整的工作流就完成了,生成的js文件可以用在各种项目中,Egret项目、cocos项目或者Web项目都可以。通过这种方式可以积累自己的类库,方便做项目时快速开发。
{
"compilerOptions": {
"module": "system",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "../built/itz.js"
},
"include": [
"**/*.ts" //include是指编译包含的文件或目录,这是配置的是包括子目录下的所有ts文件
]
}
这样将开发过程中很多通用的问题抽象出来,封装成类库来使用,可以让开发效率更高,也让自己或者团队有技术沉淀。不同类型的类库可以封装到不同模块中去,分别解决不同问题,在使用时可以选择性的编译,只编译项目需要的模块,也方便管理。这种抽象和积累只会对个人或者项目有益,个人觉得是值得坚持的工作方法。后面我也计划会分享和维护一套游戏开发的工具类在github上,欢迎大家fork,地址是https://github.com/yue19870813/ituuz-x,目前还没有提交代码,只是在README.MD里写了计划。