babel tsc webpack
我要用啥?
js的话:babel编译+webpack模块打包
ts的话:tsc编译成js+babel编译+webpack模块打包
浏览器情况:如果您的浏览器支持es6所有语法那么就可以只用webpack来处理模块部分,如果你的浏览器连模块部分也支持,那我觉得就不需要任何工具了。当然如果你只是写了es5的语法也没有模块,那么也不需要任何工具
服务器情况:如果你用的是node,那么node是直接支持js新老语法和模块化的,也不需要任何工具,顶多你需要做得就是用tsc将其转为js这一步就行了
工具干什么的?
tsc:typescript自己的cli,编译ts为js,如果编译成es6了,浏览器不兼容,他也不管,他只管编译成js。这个时候就需要babel出场了
babel:编译新版js适配浏览器的代码,如果有新语法 或者新api,他会将其新语法转成老语法,新api做垫片处理来兼容,总之他能搞定就对了,但是他无法处理模块化
webpack:主要用来处理模块化的,当然也能打包 压缩等。因为babel不会处理模块化部分比如import export require等
多管闲事的这些家伙们?
babel的进化
babel7已经可以直接支持编译tc了,这样一来tsc就没用用处了。
但是,tsc是微软自己发明支持人家ts的工具,编译出来的代码我看了下,要比babel干净,适合人看。
究其原因是因为tsc只管编译成js,而不管兼容性,而babel自然还要做语法转义和垫片处理
webpack的附加功能
webpack不仅仅能处理模块,它能够将这些[tsc、babel]工具以plugin或者loader的形式包容进去,这样一来,我们也可以不单独再额外的用babel去处理兼容问题了
我们可以在webpack里使用ts-loader或者只用babel-loader做处理
总结
所以最后的总结是:我们只用webpack就行了,就可以把js或者ts搞定,编译成浏览器可执行的代码
悄悄话
除了webpack能解决模块化方案,你的选择还有browserify,它和webpack处理模块化思路一样,都是预编译。
另外如果你知道sea.js和require.js那么用这种类库的方式来支持其对应的模块语法也行。
配置文件
webpack的ts-loader实际上就是调用了tsc命令 所以需要tsconfig.js配置文件
webpack的babel-loader实际上就是调用了babel命令,也需要babel.config.js配置文件,但是我看大家将配置整合在了webpack中,可能少建一个文件吧
如果单独使用babel工具去处理ts的话,是不需要额外的安装ts和创建tsconfig.json的,那么对应的babel-loader也一样,
大致意思就是说,使用我babel处理ts就不用再安装任何ts第三方相关的东西了,我自己知道怎么处理。
babel tsc webpack的更多相关文章
- 【长文详解】TypeScript、Babel、webpack以及IDE对TS的类型检查
只要接触过ts的前端同学都能回答出ts是js超集,它具备静态类型分析,能够根据类型在静态代码的解析过程中对ts代码进行类型检查,从而在保证类型的一致性.那,现在让你对你的webpack项目(其实任意类 ...
- 使用 Babel + React + Webpack 搭建 Web 应用
话不说直接上正题. 环境搭建 Babel--目前浏览器对于ES6的语法解析支持度还不高,所以要通过转码在编译,所以在使用ES6之前要安装Babel,之前安装的时候遇到了一些问题但是没有全部记录下来,现 ...
- ES6项目构建(babel+gulp+webpack)
(一)基础架构 (二)任务自动化(gulp) (三)编译工具(babel,webpack) (四)代码实现 一.基础构架 1.app : 放置前端代码 css : css文件 js : js文件 cl ...
- Babel 处理 webpack 无法处理的 ES 语法(Babel 6.x 和 Babel 7.x 有区别)(二)
//这是main.js是我们项目的js入口文件 //1:a导入jQuery,引入jQuery包用$变量接收,此方法与node中 const $ = require('jquery') 同 //此为ES ...
- week05 codelab01 Babel ES6 webpack Nodejsserver等
Babel 他出现的原因就是很多浏览器还未完全兼容ES6 需要将你写的ES6的内容转换成ES5让浏览器兼容运行 ES5和ES6相比出现很多新内容 比如拼接字符串 ES6可以` ` 里面如果引用变量就用 ...
- 使用webpack、babel、react、antdesign配置单页面应用开发环境
这是Webpack+React系列配置过程记录的第一篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...
- 前端笔记之ES678&Webpack&Babel(下)AMD|CMD规范&模块&webpack&Promise对象&Generator函数
一.AMD和CMD规范(了解) 1.1传统的前端开发多个js文件的关系 yuan.js中定义了一个函数 function mianji(r){ return 3.14 * r * r } main.j ...
- webpack.config.js配置遇到Error: Cannot find module '@babel/core'&&Cannot find module '@babel/plugin-transform-react-jsx' 问题
下文是网上找到的方法,是因为版本冲突的原因,参照后安装7版本解决 cnpm install -D babel-loader@ babel-core babel-preset-env 一. 问题描述 在 ...
- webpack中babel配置 --- runtime-transform和babel-pollfill
webpack - babel配置 babel是一个javascript编译器,是前端开发中的一个利器.它突破了浏览器实现es标准的限制,使我们在开发中可以使用最新的javascript语法. 通过构 ...
随机推荐
- 微信小程序不同机型的兼容布局解决
因为小程序是以微信为平台运行的,可以同时运行在android与ios的设备上,所以不可避免的会遇到布局适配问题,特别是在iphone5上,因为屏幕尺寸小的缘故,也是适配问题最多的机型,下面就简单介绍几 ...
- C/C++/Linux编程经典电子书pdf下载
实际上目前Linux下C开发一般都是C++实现下的C,而不是最纯粹的C,使用g++而不是gcc编译,所以直接学习C++的过程性C部分是更加高效的. C++ Primer(中文版 第5版)C++学习头牌 ...
- Data Governance Solution
如何有效地进行数据治理 | 人人都是产品经理http://www.woshipm.com/data-analysis/746223.html ##普元元数据管理(MetaCube)产品-白皮书.doc ...
- Python中__new__和__init__的区别与联系
__new__ 负责对象的创建而 __init__ 负责对象的初始化. __new__:创建对象时调用,会返回当前对象的一个实例 __init__:创建完对象后调用,对当前对象的一些实例初始化,无返回 ...
- openresty开发系列10--openresty的简单介绍及安装
openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...
- python接入微博第三方API之2接入用户登录和微博发布
python接入微博第三方API之2接入用户登录和微博发布 # coding=utf-8 import requests import json import MySQLdb from datetim ...
- memcpy字节序问题
/* memcpy用法详解 */ #include <stdio.h> #include <stdlib.h> #include <string.h> //memc ...
- Spring cloud微服务安全实战_汇总
Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...
- Swift 4.0 + Ipad开发项目中值得注意知识点
1.注意Xib的约束和代码的约束,注意适配问题: 2.设置view的frame可以使用view.frame.maxX实现布局: 3.UIStackView在xib中的使用,可以很好的实现约束,布局和屏 ...
- express url跳转(重定向)的实现:res.location() res.redirect()
Express 是一个基于Node.js 实现的web框架,其响应HTTP请求的response对象中有两个响应url跳转方法res.location() res.redirect(),可以实现301 ...