TypeScript学习04

问题描述:

在通过webpack对ts进行打包后,得到文件夹dist以及dist下面的js文件,那么相应的需要有html文件,为了避免一个一个手动创建,需要做以下操作:

step1:在终端输入cnpm i -D html-webpack-plugin(作用是帮助我们自动生成html文件)

step2: 在webpack.config.js中引入刚刚那个插件

const HTMLWebpackPlugin = require('html-webpack-plugin');

step3:让这个插件生效,在webpack.config.js的module.exports = {}添加内容

module.exports = {

        // 配置webpack的插件

        plugins: [

                new HTMLWebpackPlugin({

                        template: "./src/index.html"

                }),

        ]

 }

补充: 可以在src下新建一个index.html作为一个模板,这样在打包后的文件dist下,就有对应的html文件

step4:安装cnpm i -D webpack-dev-server, 这样的话就可以实现根据项目的改变而自动刷新,此外,还需要再package.json中写上“start”: "webpack serve --open chrome.exe"  //意思是启动webpack的服务器,并且用chrome的浏览器打开

然后命令行中输入npm start 这样在浏览器中就自动打开了

step5:cnpm i -D clean-webpack-plugin

然后在webpack.config.js中引入刚刚安装的插件

const {CleanWebpackPlugin} = require('clean-webpack-plugin');

然后让这个插件生效,在webpack.config.js的module.exports = {}添加内容

  plugins: [

        new CleanWebackPlugin(),

  ]

这个插件实现每一次编译前把原来旧的dist文件清空(删除),然后再重新放进去

step6:

考虑一种情况,在m.ts中向外暴露,作为一个模块,然后在另一个文件中引用,但是这个使用执行npm run build,会报错,因为此时模块的后缀名为.ts  

所以需要告诉webpack哪些文件可以作为模块被使用

所以需要在webpack.config.js中进行配置

加入新的属性

resolve: {  // 用来设置引用模块

        //  凡是以ts和js结尾的文件都可以作为模块被引入和使用

        extensions: ['.ts', '.js']

}

---------------------分界线-----------------------------------

问题描述:

        IE可能不支持最新的语法,怎么办?

                比如在写完代码之后将其转换为旧版本的代码,比如转换成ES5,虽然在tsonfig.json

中的target中可以进行转换,但是这个转换仅是语法的转换,但是一些复杂的东西,比如promise,这个时候就需要用到bable(新语法转换为旧语法)

               在实际项目开发中,babel通常结合webpack一起使用 

                安装: cnpm i -D @babel/core @babel/preset-env babel-loader core-js

                改配置文件,在webpack.config.js中的module中添加一些东西,在rules中的use中使用数组,然后把刚刚安装的babel-loader添加进去

                先babel-loader,然后再ts-loader,因为use的执行顺序,是先右后左

                然后设置babel兼容性问题再添加设置预定义的环境

                

补充:箭头函数在IE中不支持

        使用babel可以将你写的箭头函数在webpack打包后,转变为普通函数

        但是考虑到以一种情况,如果在打包之后,得到一个自执行函数,但是这个函数是个箭头函数(webpack自动生成的,不是我们写的),没有转换成普通函数

        所以就要告诉webpack,将这个额外的箭头函数转换为普通函数,这样,打包后的代码,也能够在ie环境下正常显示

怎么告诉?

        在webpack.config.js中的output中进行配置

        environment: {

                arrowFunction: false   //告诉webpack不适用箭头函数

        }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值