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']}]},

相关内容

热门资讯

吃对主食,年轻1.2岁 “一个月不吃米饭,我暴瘦10斤!” ——朋友圈里这种分享, 你是不是也偷偷收藏过? 但真相是:那些戒...
新疆,那拉堤空中草原新疆的美不... 新疆,那拉堤空中草原新疆的美不需要滤镜 新疆旅游攻略 新疆是个好地方 房车旅行 夫妻日常
辉煌60年·我们的家园丨民族团... 国际在线报道(记者 任丽君):西藏自古以来就是多民族、多文化交往交流交融的地方,在历史长河中,民族团...
拥抱兰一,遇见夏天!兰一&Li... 兰多多亲自然乐园游玩地图宁夏贺兰山国家森林公园咨询电话:0951-4114390免责:文章内容、产品...
川汇区地道川菜美食探秘,推荐餐... 川汇区地道川菜美食之旅,带你领略正宗川菜风味,推荐前往当地知名餐厅品尝绝佳风味,品尝麻辣香鲜的火锅、...
青岛正规旅行社哪家好?口碑红黑... 青岛,这座黄海之滨的城市,凭借海滨风光、历史文化和旅游资源,成为游客青睐的目的地。旅行中选择合适的旅...
张吉怀E起游②丨明清巷陌深 洪... 编者按: 张家界的奇峰刺破云海、湘西州的鼓点敲响千年、怀化的山水铺展锦绣诗行……张吉怀,一幅灵动的山...
夏游运城,晚上这样过! 当白天的喧嚣渐渐褪去,夜幕降临,城市的另一番魅力才刚刚苏醒。如今,河东大地不再满足于夜市小吃和灯光秀...
陕西日报刊发丨留坝:享“秦岭十... 炎炎夏日,不少人渴望到山野间寻一份清凉。夏季平均气温仅有22℃的留坝县,成为隐匿在秦岭山中的“宝藏避...
原创 甘... 在短视频平台上,一位名为 “非洲十年” 的用户近来热度居高不下。 他发布的视频,将大众的目光聚焦到了...
酒香浸润烟火处:亿星酒业连锁门... 当清晨的阳光洒满社区的林荫道,当傍晚的大排档升腾起诱人香气,当路边的晚风拂去行人的疲惫,亿星名酒连锁...
喜稻拌饭——温暖偕行 喜稻拌饭起源于山西省,扎根于传统朝鲜族拌饭的深厚底蕴,将朝鲜族料理中对食材新鲜度的严苛把控、酱料调配...
经典名肴——红烧鸡块 编者按:本公众号自2016年创立以来,一直关注人类科学(史)、技术(史)、博物(史)三大领域。当下,...
衣食住行跟我逛︱小时候的味道!... 作为苏州人从小吃到大的美食,除了苏式汤面和生煎馒头,还有甜咸适口的粢饭团。近日,记者了解到,位于苏州...
中伏将至,头伏饺子二伏面,5道... 7月30日即将迎来中伏,老话说:“头伏饺子二伏面”,中伏,天气异常炎热,人体新陈代谢加快,对能量的需...
姑苏早点来丨月泊湾,重温“小辰... 月泊湾·壹号菜市场 前身为三香农贸市场 去年底完成改造焕新 熟悉的烟火气依旧氤氲升腾 📍月泊湾·壹...
原创 唤... 晨光中的谷物交响曲 六点三十分,闹钟在朦胧中响起。厨房里飘来咖啡的香气,阳光透过纱帘在地板上投下斑...