react项目demo:纯零搭建react项目(不用create-react-app脚手架)
admin
2024-04-12 09:09:59
0

新建目录react-node-demo

react-node-demo下新建package.json文件

终端初始化,执行命令npm init

安装webpack相关依赖webpack webpack-cli webpack-dev-serve

npm i webpack webpack-cli webpack-dev-serve -save-dev

安装react依赖react react-dom

npm i react react-dom

项目下新建src目录

src目录下新建App.jsx main.js index.html文件

App.jsx文件

import React from "react"export default function App(props){return(
hello
) }

main.js文件

import React from "react";
import ReactDOM from 'react-dom/client';import App from './App.jsx';ReactDOM.createRoot(document.getElementById('app')
).render();

index.html文件



Document

package.json文件配置

{"name": "react-node-demo","version": "1.0.0","description": "","scripts": {"test": "echo \"Error: no test specified\" && exit 1","start": "webpack-dev-server --hot --open --mode development","build": "webpack --config webpack.config.js"},"author": "","license": "ISC","dependencies": {"react": "^18.2.0","react-dom": "^18.2.0"},"devDependencies": {"@babel/core": "^7.20.2","@babel/preset-env": "^7.20.2","@babel/preset-react": "^7.18.6","babel-loader": "^9.1.0","cross-env": "^7.0.3","html-loader": "^4.2.0","html-webpack-plugin": "^5.5.0","webpack": "^5.75.0","webpack-cli": "^5.0.0","webpack-dev-server": "^4.11.1"}
}

webpack.config.js文件配置

const path = require('path');
const  HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {entry:  path.resolve(__dirname,'./src/main.js'), //入口文件mode: 'development',output: {filename: 'bundle.js', //出口文件path: path.resolve(__dirname, 'dist')//打包输出目录},devServer: {port: 9000,//指定端口},module: {rules: [{test: /\.(js|jsx)$/,exclude: /node_modules/,use: {loader: 'babel-loader',}},{test: /\.html$/,use: [{loader: 'html-loader'}]}]},plugins:[new HtmlWebpackPlugin({template: './index.html',filename: './index.html'})]
}

错误解决
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: E:\目录\react-node-demo\src\main.js: Support for the experimental syntax ‘jsx’ isn’t currently enabled (8:10):

6 | ReactDOM.createRoot(
7 | document.getElementById(‘app’)
8 | ).render();

在项目目录下新建.babelrc.js文件

module.exports ={presets: [["@babel/preset-react",{development: process.env.BABEL_ENV === "development",},],],
}

详细见babel:https://babeljs.io/docs/en/babel-preset-react.html

目录结构

|-- react-node-demo
|-- .babelrc.js
|-- index.html
|-- package-lock.json
|-- package.json
|-- REMADE.md
|-- webpack.config.js
|-- yarn-error.log
|-- src
|-- App.jsx
|-- main.js

react项目中使用css

安装依赖

npm i style-loader css-loader --save-dev

webpack.config.js配置

  module: {rules: [{test: /\.css$/,use: ['style-loader','css-loader']}]},

相关内容

热门资讯

延川必游景点盘点 黄河西岸,黄土高原深处,延川展现了一幅动人的地质与人文交织的画卷。 文安驿古镇的青石板路上,穿越明代...
泰山登山路线规划指南:必备物品... 泰山登山攻略 泰山,五岳之首,以其独特的自然与文化魅力吸引着无数游客。作为中国的世界文化与自然双遗产...
刚收葡萄酒和威士忌,又瞄准黄酒... 在母公司完成对青岛饮料并购后,上市公司青岛啤酒又开始对外“买酒”,这次看中的是黄酒。 5月7日晚间,...
炒腐竹最简单的做法,炒腐竹最简... 炒腐竹最简单的做法教程 特点:食材简单、步骤少、耗时短,适合新手或快速备餐。 一、食材准备(2人份)...
痛心!30岁中国女游客五一期间... 5月7日 #一中国游客为捞相机 命丧87米深海底#的话题 引发关注 据悉,一名30岁的中国女游客在...
靖西崇左自驾游攻略:路线规划难... 启程:与天气预报的博弈(Departure: A Game with the Weather For...
【早安,海棠】5月必吃的几种水... 早安,海棠!‍ 今天是2025年5月7日‍ 星期三(农历四月初十) 海棠天气如何? 又有哪些健康小知...
摊煎饼,别光顾着调面糊,多加1... 哈喽,大家好,我又来教大家做快手早饭了。 今天教大家做薄薄脆脆的煎饼,搭配着蔬菜,用煎饼把配菜卷起来...
原创 麻... 麻辣肉片是一道经典的川菜,以其麻辣鲜香、肉质嫩滑而深受食客喜爱。这道菜的关键在于肉片的腌制、麻辣调料...
吐峪沟玩水胜地,春天溪涧清凉解... 一、初识吐峪沟 春天的气息悄然弥漫,阳光洒在大地上,为万物披上一层金色的薄纱。周末清晨,我和好友小林...
洪江融媒丨【不去远方 就来洪江... 今年“五一”假期,洪江市以丰富文旅活动与独特景观吸引游客60.96万人次,实现旅游收入10045.9...
贵阳各区市县“五一”旅游成绩单... 2025年“五一”假期,贵阳各区市县文旅活动精彩纷呈。云岩区音乐与美食激活旅游热潮,南明区音乐市集与...
原创 朱... 嘿,亲爱的家人们,五一小长假简直成了明星们的“自由日”!熟悉的主持人朱丹也带着宝贝儿子飞奔到海南,开...
别再犹豫了!解锁深圳N种玩法,... 喂喂喂!各位在水泥森林里辛勤耕耘的“打工人”们,五一小长假你们是在家“葛优瘫”刷手机,还是勇敢地加入...
周末母亲节,打算陪老妈过节,做... 这个周末就是母亲节了,这次打算回老家陪母亲过节。民以食为天这句话说的没错,不管日子过得如何,总是少不...
酸奶消费警示提示 为帮助广大消费者 正确选购酸奶 玉溪市市场监督管理局 玉溪市消费者协会 发布如下消费提示 一、选购酸...
原创 比... 导语:比芋头便宜、比红薯营养,夏天要使劲吃!一养颜、二补钾、三润肠 大家好,我是傻姐美食,春夏秋冬,...
当孩子爱上烘焙,成绩不好也不是... 作为家长,孩子成长路上的每一个转折点都牵动着我的心。孩子初中成绩不理想,中考后进入技工类学校,本以为...