js 读取本地文件到buffer(提供js读本地文件功能)

TypeScript是由微软开发的自由和开源的编程语言,它是JavaScript语言的超集,主要增加了类型检查的能力,目标是为了支持大型项目的开发,原生的JavaScript可以原封不动在TypeScript语言里使用。TypeScript的语言很像Java这样的后端语言,转换到TypeScript让你开启了全栈能力的征程。

js 读取本地文件到buffer(提供js读本地文件功能)

但是直接从JavaScript切换到TypeScript并非没有代价,可以参考从 JavaScript 迁移到 TypeScript – TypeScript 中文手册掌握切换的一般步骤,不过按照指导操作我还是遇到别的问题,本文以《WebGL编程指南》一书的示例代码为例介绍我遇到的问题以及解决办法。

注意使用TypeScript编写的代码并不能直接运行,还是需要编译成JavaScript才行,首先使用npm命令全局安装TypeScript。

npm install -g typescript

安装成功后,cmd执行tsc -v如果成功打印版本则表示安装成功。

当我尝试把《WebGL编程指南》中的代码转换到TypeScript进行练习时,执行tsc命令编译报错,提示找不到getWebGLContext这个方法,这个方法是本书作者提供的js库cuon-utils.js中的方法。

示例代码位置:

《WebGL编程指南》第2章WebGL入门中的一个示例“最短的WebGL程序:清空绘图区”,16页。

源码仓库链接:https://github.com/GrayMind/WebGL-Programming-Guide.git/

解决这个问题可以通过在tsconfig.json这个TypeScript工程管理配置中设置,在include中引入lib这个目录即可,这样TypeScript就能识别提示不存在的方法了,再次执行tsc命令编译就不会报错了,getWebGLContext方法就可以正常使用了(不过TypeScript做了检查,需要把第二个参数传入,默认为false)。

{    "compilerOptions": {        "outDir": "./built",        "allowJs": true,        "target": "es6"    },    "include": [        "./src/*",         "./lib/*",      // 这里引入lib目录,TypeScript就会包含引入其中的js文件了    ]}

还有些细节的地方需要变动,这里列出全部代码并在变动的地方添加了注释。

HelloCanvas.html:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>最短的WebGL程序:清空绘图区</title></head><!-- 原来body中的onload="main()"不再需要了 --><body>    <canvas id="webgl" width="400" height="400">        您的浏览器不支持WebGL    </canvas>    <script src="../lib/webgl-utils.js"></script>    <script src="../lib/webgl-debug.js"></script>    <script src="../lib/cuon-utils.js"></script>    <!-- script元素要增加type="module"来支持模块的import export -->    <script type="module" src="./built/src/HelloCanvas.js"></script></body></html>

HelloCanvas.ts:

const clearCanvas = function() {    // 获取canvas元素    //<HTMLCanvasElement>告知canvas为canvas元素,强制类型可以让vs code编辑器给出api    //的智能提示    let canvas = <HTMLCanvasElement> document.getElementById("webgl");    // 获取webgl的绘图上下文,getWebGLContext第二个参数选项为true或false,    // 这里需要显示的传入    let gl = getWebGLContext(canvas, true);    if (!gl) {        console.log("获取WebGL上下文失败");        return;    }    // 指定canvas的背景颜色    gl.clearColor(1.0, 0.0, 1.0, 0.5);    // 使用指定背景色清空canvas    gl.clear(gl.COLOR_BUFFER_BIT);}clearCanvas();
本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。