网站首页 > 技术文章 正文
前言
我们要自己手动实现react,那么得搭建一个环境,有人说了,为什么我们还要搭建环境呢,就不能写在一个index.js文件,然后index.html里面引入么。答案是残酷的,是不行的。
为什么不行呢?为什么需要引入编译工具呢?
首先来说jsx语法,这个大家都应该熟悉,每个类或者函数最后都return的jsx语法,然后需要把jsx转化为React.createElement(虚拟dom)的形式
而支持转化jsx语法的目前只有@babel/preset-react,这个东西第一你可以在node环境里直接import使用,而如果是浏览器环境,那么你的通过webpack或者vite才行,这里我们使用的webpack,通过编译的方式
如果有人问我为什么使用webpack而不是vite的话,那我的回答是,我更熟悉webpack,哈哈
准备环境
1. 准备npm包
@babel/core // babel核心包
@babel/preset-react //支持jsx语法
@babel/preset-env // 支持最新的js语法
babel-loader // 把es6转化为es5
webpack // 这个大家都认识
webpack-cli // 可以在命令行运行webpack
webpack-dev-server // webpack服务器
html-webpack-plugin //生成html并自动引入打包文件的插件
clean-webpack-plugin //每次打包清除旧的dist里面的文件
这里有个疑问哈,babel-loader和@babel/preset-env等有什么关联呢?
- babel-loader其实就是允许在webpack里面使用babel去转换代码
- @babel/preset-env和@babel/preset-react其实就是都要转化哪些代码 @babel/preset-react从名字就可以看出来是转化react代码的,也就是jsx代码 @babel/preset-env其实就是转化最新的js语法的,把他们转化为目标浏览器可以识别的代码
然后开始安装
pnpm i @babel/core @babel/preset-react @babel/preset-env babel-loader webpack webpack-cli webpack-dev-server html-webpack-plugin clean-webpack-plugin
2. 创建webpack.config.js
配置webpack.config.js,这个配置工作其实不难,很多都是语义化的东西
const HtmlWebpackPlugin = require("html-webpack-plugin");
const path = require("path");
module.exports = {
mode: "development",
// 入口
entry: path.join(__dirname, "/src/index.js"),
// 出口
output: {
path: path.join(__dirname, "dist"),
filename: "bundle.[hash:8].js",
},
module: {
rules: [
{
// 对以js结尾的文件进行es6转es5
test: /\.js$/,
use: {
loader: "babel-loader",
options: {
presets:["@babel/preset-env", "@babel/preset-react"]
}
},
exclude: /node_modules/,
},
],
},
plugins: [
// html生成插件
new HtmlWebpackPlugin({
// 生成html参考的模板
template: "./src/index.html",
}),
],
// 服务器
devServer: {
static: path.join(__dirname, "/dist"),
open: true,
},
};
3.创建html模版
src/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
4. 设置启动命令
使用webpack-dev-server可以使我们支持热更新,还可以配置服务
"scripts": {
"start": "webpack-dev-server --config webpack.config.js"
}
5。创建index.js
src/index.js
react源码内容
总结
以上就是我们搭建react源码环境, 整体看上去没啥难度,接下来就是开始实现react源码了,这才是重头戏
文章转自:https://juejin.cn/post/7372031054818607123
- 上一篇: 搭建一个干净整洁的vue前端开发环境
- 下一篇: 若依学习--环境搭建(前端) 前端多环境配置
猜你喜欢
- 2024-10-07 【前端进阶】Vite + Vue3:多页面应用的优雅构建与环境变量管理
- 2024-10-07 springboot+Neo4j:快速搭建自己的知识图谱可视化构建平台
- 2024-10-07 前端工程化体系设计与实践第5章第1节部署流程的设计原则
- 2024-10-07 自主搭建5个精品脚手架,玩转前端提效|无密分享
- 2024-10-07 前端工程化体系设计与实践第4章本地开发服务器第2节动态构建
- 2024-10-07 开箱即用!腾讯前端React+TDesign开源后台开发模板
- 2024-10-07 前端vue项目创建环境node.js安装 nodejs vue项目的部署
- 2024-10-07 Util应用框架开发环境搭建(六)- 安装 NodeJs
- 2024-10-07 测试人员需要自己搭建测试环境吗?(附步骤)
- 2024-10-07 搭建个人网站系列-前端框架vuecli的搭建介绍
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)