当前位置: 首页 > news >正文

猿创征文|【Typescript】搭建TS的编译环境

多一些不为什么的坚持🤳

贤蛋 🥚大眼萌 ,一名很普通但不想普通的程序媛🙊

📝本文章收录于专栏:Typescript学习

搭建TS的编译环境

    • 🎈 认识Typescript
    • 💊 Typescript 的编译环境
    • 🚀 搭建TypeScript的运行环境
      • 🎯 项目环境的基本配置
      • 🏓 使用ts-node
      • 🥁 配置 webpack
    • 🍳 测试环境

🎈 认识Typescript

作为前端开发人员,我们都知道JavaScript是一门优秀的语言,并且在很多领域被大家广泛使用。但是随着用JavaScript的开发者越来越多,JavaScript 的缺点就被暴露出来了。例如ES5以及之前的使用的var关键字关于作用域的问题,最初JavaScript设计的数组类型并不是连续的内存空间等等。

随着ES6、7、8等的推出,每次都会让这门语言更加现代、更加安全、更加方便。但是JavaScript在类型检测上依然是毫无进展。

​ 如果JavaScript没有对我们传入的参数进行任何的限制,只能等到运行期间才发现这个 错误,有时候就是因为这个错误,导致整个项目崩溃。这个时候就萌生了Typescript

官方对Typescript的定义:

​ **Typescipt:**是拥有类型的JavaScript超集,它可以编译成普通、干净、完整的JavaScript代码。

​ 可以理解长是加强版的JavaScript。JavaScript所拥有的特性,TypeScript全部都是支持的,并且它紧随ECMAScript的标准,所以ES6、ES7、ES8等新语法标准,它都是支持的。并且在语言层面上,不仅仅增加了类型约束,而且包括一些语法的扩展,比如枚举类型(Enum)、元组类型(Tuple)等。并且TypeScript最终会被编译成JavaScript代码。

💊 Typescript 的编译环境

TypeScript最终会被编译成JavaScript来运行,所以我们需要搭建对应的环境

image-20220830162558236

我们需要先进行全局安装:

# 安装命令
npm install typescript -g
# 查看版本
tsc --version

image-20220830163418598

测试:

image-20220830170005698

🚀 搭建TypeScript的运行环境

上面介绍到的ts环境运行,但是这样每次都需要转换ts代码,很麻烦,下面我们介绍两种搭建Typescript的运行环境。

🎯 项目环境的基本配置

  • 直接配置webpack,让webpack对我们编写的代码进行一个编译,并且自动引入编译后的js文件;
  • webpack可以在代码修改后重新帮助我们进行编译,并且自动刷新浏览器,不需要手动操作
  1. 使用 npm 来初始化 package.json 文件:
npm init -y
  1. 安装本地TypeScript依赖
npm install typescript
  1. 初始化tsconfig.json文件

​ 在进行TypeScript开发时,我们会针对TypeScript进行相关的配置,而这些配置信息是存放在一个tsconfig.json文件中的。

tsc --init

image-20220830172206541

  1. 配置tslint来约束代码(推荐使用)
# 全局安装
npm install tslint -g
# 在项目中初始化tslint的配置文件:tslint.json
tslint -i

image-20220830172555223

🏓 使用ts-node

# 安装ts-node
npm install ts-node -g
# 安装ts-node需要依赖 tslib 和 @types/node 两个包
npm install tslib @types/node -g

测试代码:

image-20220830173235986

🥁 配置 webpack

  • 配置webpack 需要安装相关的依赖 webpack、webpack-cli、webpack-dev-server。从webpack 4 之后,在webpack环境下需要多配置webpack-cli。而webpack-dev-server则是可以在我们帮助我们开启本地服务,并且热更新
# 安装webpack 相关依赖
npm install webpack webpack-cli  webpack-dev-server -D

为了方便启动webpack,我们在package.json中添加如下启动命令

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack",
    "serve": "webpack serve"
  }

补充:如果我们需要区分开发的环境,则需要添加

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack",
  "serve": "cross-env NODE_ENV=development webpack-dev-server --mode=development --config build/webpack.config.js"
}

并且安装 cross-env 依赖

npm install cross-env -D
  • 因为需要解析.ts文件,所以需要依赖对应的loader:ts-loader
npm install ts-loader -D
  • 编译后的代码需要对应的html模块作为它的运行环境,需要使用html-webpack-plugin来将它插入到对应的模板中
npm install html-webpack-plugin -D

最后:配置webpack.config.js

const path = require("path")
const HtmlWebpackPlugin = require("html-webpack-plugin")

module.exports = {
  mode: "development",
  entry: "./src/main.ts",
  output: {
    path: path.resolve(__dirname, "./dist"),
    filename: "bundle.js"
  },
  devServer: {},
  resolve: {
    extensions: [".ts", ".js", ".cjs", ".json"]
  },
  module: {
    rules: [
      {
        test: /\.ts$/,
        loader: "ts-loader"
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "./index.html"
    })
  ]
}

🍳 测试环境

在终端编写命令

npm run serve

在浏览器中打开:http://localhost:8080/

image-20220830181824957

在这里插入图片描述

相关文章:

  • 【项目管理】beautyeye
  • Connor学Android - HandlerThread和IntentService
  • Github每日精选(第31期):macOS 下的亮度和音量调节MonitorControl
  • Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第7章 Vue.js高级进阶 7.10 路由守卫
  • 金融核心系统云原生转型的三个挑战、六个误区和四个步骤
  • zsh安装以及ROS适配
  • 猿创征文|FlexManager与阿里云MQTT通讯
  • Linux指令——crontab
  • 程序员的中秋
  • mysql数据库的安装教程
  • 新电脑的正确打开方式——(近万字图文并茂详细分步骤讲解)【包括个性锁屏,磁盘分区……】等你来解锁哦
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • 【毕业设计】基于单片机的手势检测识别系统 - arduino 物联网嵌入式
  • 【Node.js】深度解析常用核心模块-path模块
  • C语言指针操作(六)*返回指针值的函数
  • bearychat的java client
  • fetch 从初识到应用
  • idea + plantuml 画流程图
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • java中的hashCode
  • java中具有继承关系的类及其对象初始化顺序
  • Laravel5.4 Queues队列学习
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python打包系统简单入门
  • SpringBoot几种定时任务的实现方式
  • vue 个人积累(使用工具,组件)
  • webgl (原生)基础入门指南【一】
  • windows-nginx-https-本地配置
  • windows下mongoDB的环境配置
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 阿里云应用高可用服务公测发布
  • 测试开发系类之接口自动化测试
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 跳前端坑前,先看看这个!!
  • 一道面试题引发的“血案”
  • 用Visual Studio开发以太坊智能合约
  • 智能网联汽车信息安全
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 【云吞铺子】性能抖动剖析(二)
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​Spring Boot 分片上传文件
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • ###C语言程序设计-----C语言学习(3)#
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Lua:Lua调用C++生成的DLL库
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (待修改)PyG安装步骤
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级