稀土掘金 稀土掘金

结合React上手esbuild(新手适用)

我们都知道react有一个官方的脚手架create-react-app,一条命令就可以让你使用react编写代码,但是在这个脚手架中react代码的打包过程对我们是完全隐藏的。

对于一个新手来说,比如我刚接触到这个工具的时候是充满了疑惑的,为什么我不能npm install react react-dom然后直接使用script标签引入呢?为什么这些代码要打包才可以使用?打包很复杂吗?怎么进行打包呢?

上面这些问题我们暂且不做回答,下面直接使用esbuild这个打包工具,带大家从零开始制作一个简单的react页面。

esbuild是一个比较新的打包工具,这里是它的 官方文档,相较于create-react-app使用的webpack而言,它的优点是快,缺点是不支持css module等特性。当然了,如果你一定要使用css module的话,那么很抱歉这篇文章不能帮助到你

开始动手

1. 初始化

确定你已经安装好了 node和 npm,然后打开电脑的命令行,新建一个文件夹,并运行npm init -y

image.png

2. 安装依赖

安装需要用到的依赖,我们会用到react react-dom esbuild这三个包

image.png

3. 新建文件

打开你的 vs code或者其他编辑器,新建一个html文件,以及一个src文件夹(包含一个css文件和一个jsx文件)

image.png

4. 写代码

在你的jsx和css中随便写点什么

import React from 'react';
import ReactDOM from 'react-dom';
import './style.css';

const root = document.createElement('div');
root.className = 'root';
document.body.appendChild(root);

const App = () => {
    return (
        <div>
            <h1 className='esbuild'>Hello, Esbuild!</h1>
            <h1 className='react'>Hello, React!</h1>
        </div>
    );
};

ReactDOM.render(
    <App />,
    root,
);
.esbuild {
    color: rgb(247, 209, 71);
}

.react {
    color: rgb(97, 218, 251);
}

5. 进行打包

在你的package.json文件的script标签中加入"build": "esbuild src/app.jsx --outfile=build/index.js --bundle",这代表以src文件夹中的app.jsx为入口,build文件夹的index.js为输出进行打包。 然后在终端中输入npm run build命令

Xnip2021-07-07_17-03-19.jpg

现在你的目录下面多出了一个build文件夹和两个文件

image.png

6. 查看效果

这时我们打开之前新建的html文件,将其初始化然后将build文件夹中的两个文件链接上去

<!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">
    <link rel="stylesheet" href="./build/index.css">
    <title>Esbuild and React</title>
</head>
<body>
    <script src="./build/index.js"></script>
</body>
</html>

然后可以使用vs code中的live server打开或者直接通过浏览器打开,页面就可以正常显示了

image.png

7. 完善功能

仅有这些的话,对于开发而言还远远不够,如何达到原生js开发时的实时更改的效果呢,我们可以在package.json中之前build命令后面加一个--watch或者增加一个watch命令 "watch": "esbuild src/app.jsx --outfile=build/index.js --bundle --watch"然后借助vs code的live server插件就可以实现实时的效果了。

image.png

总结

本文结合react对esbuid这个打包工具进行了简单使用,最后一步实现方法并不是唯一的,还可以使用esbuild的serve功能实现,大家可以阅读 官方文档探索。

本文写作的初衷是为初学者推荐一款合适的打包工具,在我看来,webpack这个工具非常的臃肿,尽管它功能非常丰富,但是初学之时并不是很友好,esbuild除了打包速度飞快,对于ts文件的处理也是非常友好,不需要设置各种loader,配置简单,是一个非常“轻”的选择。 除此之外,vite也是一个不错的选择。

代做工资流水公司九江办企业对公流水蚌埠办理流水南通企业对公流水开具台州银行流水账模板嘉兴打房贷流水昆明薪资流水单代开菏泽购房银行流水办理中山银行流水修改图片商丘工资证明代开佛山制作个人流水包头代办工资银行流水武汉打印个人工资流水许昌打印流水账单福州公司流水样本江门车贷工资流水海口查询企业对公流水西宁办签证流水台州企业流水打印查询包头流水代开嘉兴薪资流水打印泉州薪资流水单价格温州离职证明代开工资银行流水价格吉林背调银行流水代开邯郸入职银行流水公司湘潭制作银行流水单泰安办个人工资流水湘潭流水单多少钱鞍山银行流水PS样本开封办理入职流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化