04构建ts开发编译和调试环境(读书笔记:TypeScript图形渲染实战算法分析与架构设计)_typescript图形渲染实战:基于webgl的3d架构与实现_源代码+视频.rar-程序员宅基地

技术标签: 读书笔记  TypeScript  模块化  SystemJS  lite-server  

安装nodejs https://nodejs.org/en/ (使用nodejs包管理器npm安装ts开发环境)
安装Visual Studio Code代码编辑器 https://code.visualstudio.com,新的版本安装后可以在终端通过‘code’指令打开编辑器;
npm全局安装TypeScript语言编译器(ts最终被转译成js)
  • npm install -g typescript / sudo npm install -g typescript,使用tsc -v查看版本(tsc是TypeScript Compiler的缩写,-g表示全局安装);

  • (一)编写第一个helloworld demo,手动转译,使用tsc 文件名将其转译成js, 代码提交在github中。
    https://github.com/zsq77/TypeScript-Graphic-Rendering-in-Practice-Design-and-Implementation-of-2D-Architecture/tree/master/01Chapter/helloWorldDemo

  • (二)手动转译麻烦,实现自动转译。使用tsc --init生成tsconfig.json文件。tsconfig.json文件中的编译命令选项,参考官网相关说明。此时发现main.ts被标记为红色,并且有一个错误。因为在默认状态下,tsconfig.json中的strict被设置为true,VSCode会对所有ts进行严格类型检测(strict type --checking)。修改代码使其符合检测要求。
    在这里插入图片描述
    因为canvas.getContext(“2d”)的返回类型是CanvasRenderingContext2D或者null。所以补充成员变量context的类型即可。点击terminal中的run task,选择tsc:watch,此时ts转译器会监视所有后缀名为ts的文件,发生变化时,会自动重新转译。
    在这里插入图片描述
    在这里插入图片描述

  • tsconfig.json中的target命令选项规定了将TypeScript代码编译(转译)成哪个ECMAScript(简称ES)标准,标准有ES 3(default)、ES 5、ES 2015、ES 2016、ES 2017、ES 2018和ESNEXT,一般将其设置为ES 5标准。

  • module命令选项指定生成哪个模块系统代码,模块系统有commonjs,amd,system,umd和es2015,为了在html中使用模块化功能,需要选择es2015。实现自动转译的代码提交在github中。
    https://github.com/zsq77/TypeScript-Graphic-Rendering-in-Practice-Design-and-Implementation-of-2D-Architecture/tree/master/01Chapter/aotuTranslationDemo

  • (三) 模块化开发ts

target:es5;module:es2015。创建canvas2d文件夹,使用export导出Canvas2D中的代码,在main.ts中使用import导入;刷新页面后浏览器控制台报错(main.js:2 Uncaught ReferenceError: exports is not defined)。
在这里插入图片描述因为export和import属于es2015标准的内容,需要在script标签中加入type=‘module’。 加入后运行,继续报错如下:(Access to script at '…'from origin ‘null’ has been blocked by CORS policy:Cross origin requests are only supported for protocol schemes:http,data,chrome,chrome-extension,https)跨域问题。可以使用Tomcat或者Apache从http服务器加载文件解决问题,但此处我们使用nodejs;
在这里插入图片描述

使用lite-server搭建本地服务器解决跨域问题:(1)npm init -f生成package.json文件;(2)npm install lite-server --save-dev,安装lite-server;(3)安装完成后打开package.json在scripts中输入:“dev”:“lite-server”;(4)输入npm run dev运行lite-server,此时打开http://localhost:3000/,控制台继续报错,服务器没有找到文件,因为js模块化导入需要以.js为扩展名。
在这里插入图片描述
修改如下在这里插入图片描述

经过以上操作后可以看到效果,但是有时候还是会出错,此时可以修改Canvas2D的导出方式。
在这里插入图片描述
在这里插入图片描述
至此,保存好修改的内容后,lite-server会自动刷新页面。

  • (四) 使用SystemJS自动编译加载TypeScript

使用 tsc --init添加tsconfig.json配置文件,通过执行Terminal–>run task实现自动编译;使用lite-server进行热资源部署,但有两个不足:(1)需要手动修改import来支持模块加载;(2)只能通过index.html的script引入的转译后的脚本。

使用SystemJS解决上述问题。SystemJS是一个通用模块加载器,能在浏览器或者nodejs上动态加载模块,支持CommonJS,AMD,全局模块对象和ES6模块;SystemJS建立在ES6模块加载器上,其语法和API将来可能是语言的一部分,会让代码不会过时。

(1)为了使用SystemJS加载ts,地安装TypeScript库和SystemJS库:npm install [email protected] --save;npm install [email protected] --save。
(2)SystemJS直接编译TypeScript源码。如下,设置好SystemJS后,在终端执行npm run dev运行项目。
在这里插入图片描述

小节

使用lite-server服务器热部署及SystemJS后,不需要使用客户端的open in browser插件;不需要在script中设置defer关键词;不需要设置type=‘module’。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39331259/article/details/92084593

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签