问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

webpack+react能转成java吗

发布网友 发布时间:2022-04-23 17:45

我来回答

1个回答

热心网友 时间:2023-11-01 22:21

第一步:
mkdir react-demo
cd react-demo
npm init -y
npm i webpack webpack-dev-server html-webpack-plugin webpack-merge babel-loader babel-core css-loader style-loader babel-preset-react-hmre babel-preset-es2015 babel-preset-react -D
mkdir app
mkdir dist
mkdir assets
touch assets/index.tmpl.html

第二步,编辑index.tmpl.html为如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<div id="root"></div>
</body>
</html>

第二步,打开你的 package.json 文件,添加如下字符串:
...
"scripts": {
"build": "webpack",
"start": "webpack-dev-server"
},
"babel":{
"presets": [
"es2015",
"react"
],
"env": {
"start": {
"presets": [
"react-hmre"
]
}
}
}
...

第三步:在根目录新建一个 webpack.config.js 的文件,写入如下配置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
const merge = require('webpack-merge');
const TARGET = process.env.npm_lifecycle_event;
process.env.BABEL_ENV = TARGET;
const PATHS = {
app: path.join(__dirname, 'app'),
build: path.join(__dirname, 'dist'),
template: path.resolve(__dirname, 'assets', 'index.tmpl.html'),
};
const common = {
entry: {
app: PATHS.app,
},
output: {
path: PATHS.build,
filename: 'bundle.js',
},
plugins: [
new HtmlWebpackPlugin({
title: 'react demo',
template: PATHS.template,
inject: 'body',
}),
],
mole: {
loaders: [{
test: /\.jsx?$/,
loaders: ['babel?cacheDirectory'],
include: PATHS.app,
}, {
test: /\.css$/,
loaders: ['style', 'css'],
include: PATHS.app,
}],
},
resolve: {
extensions: ['', '.js', '.jsx'],
},
};
if (TARGET === 'start' || !TARGET) {
mole.exports = merge(common, {
devtool: 'eval-source-map',
devServer: {
contentBase: '/dist',
historyApiFallback: true,
hot: true,
inline: true,
progress: true,
stats: 'errors-only',
},
plugins: [
new webpack.HotMoleReplacementPlugin(),
],

});
}
if (TARGET === 'build') {
mole.exports = merge(common, {});
}

第四步:到这里,关于react的需要的webpack方面的配置就结束了,接下来我们来写一个很小的示例来生成一个真正的react文件。
npm i react react-dom react-router -S
touch app/App.jsx
touch app/index.jsx

编辑 App.jsx 文件如下:
import React, { Component } from 'react';
import {
Router,
Route,
Link,
IndexLink,
IndexRoute,
hashHistory,
} from 'react-router';

const activeStyle = {
color: '#53acff',
};
const Nav = () => (
<div>
<IndexLink onlyActiveOnIndex activeStyle={activeStyle} to="/">主页</IndexLink>

<IndexLink onlyActiveOnIndex activeStyle={activeStyle} to="/address">地址</IndexLink>

</div>
);

const Container = (props) => <div>
<Nav /> { props.children }
</div>;

const Twitter = () => <div>@xiaomingplus *</div>;
const Instagram = () => <div>@xiaomingplus *</div>;

const NotFound = () => (
<h1>404.. 找不到该页面!</h1>
);
const Home = () => <h1>你好,这是主页。</h1>;
const Address = (props) => <div>
<br />
<Link activeStyle={{ color: '#53acff' }} to="/address">这是Twitter</Link>
<Link to="/address/*">这是Instagram</Link>
<h1>欢迎互关!</h1>
{ props.children }
</div>;

class App extends Component {
construct() {
}
render() {
return (
<Router history={hashHistory}>
<Route path="/" component={Container}>
<IndexRoute component={Home} />
<Route path="/address" component={Address}>
<IndexRoute component={Twitter} />
<Route path="*" component={Instagram} />
</Route>
<Route path="*" component={NotFound} />
</Route>
</Router>
);
}
}

export default App;

编辑 index.jsx 文件:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(
<App />, document.getElementById('root'));

ok,到这里你已经实用react-router构建了一个有路由的应用,接下来启动这个应用吧。
npm start

用浏览器访问: http://localhost:8080 ,你将看到如下界面
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
米色的双面呢羊毛大衣有哪些时髦又随性的搭配思路值得分享? 双面羊绒大衣搭配什么裤子(短款羊绒大衣搭配什么下装比较好看?) 银杏烤多久熟 银杏果烤着吃是烤干的还是湿的? 签了离婚协议就是离婚了吗 汽车PID检测是什么意思 仪表pid控制什么意思 CAN总线温度传感器 公共管理学说史内容简介 《公共行政学史》读书笔记 如何服务西餐菜肴 贵阳火车站有小红帽吗? 帝舵维修点在哪? 萤石云视频在另外wifi下不能打开实时监控怎么解决 萤石云视频监控进贼后怎么设置发送短信到手机 萤石云视频监控刚下裁新手机能不能看到前两天的视频吗 请问帝舵手表维修具体在哪呢? 萤石云视频用手机看不了监控,电脑监控正常,帮我看下是什么原因?_百度... 杭州帝舵手表维修中心具体在什么地方? 萤石云视频监控怎么没有下面一排按钮了? 帝舵维修点 云视频监控退出去有显示吗? 帝舵手表维修靠谱的售后维修点,具体地址 萤石云视频用手机看不了监控,电脑监控正常,帮我看下是什么原因... 无锡帝舵手表维修点在哪? 帝舵手表坏了能不能到一般的维修店修理 云视频都有什么功能? 帝舵手表上海哪里有维修店? 云视频监控如何比本地监控存储更安全 南昌帝舵手表维修点在哪?不走时了 帝舵手表售后维修中心在哪里? npm 怎么查看安装style-loader完成没 玻尿酸隆鼻价格一般要多少钱? 玻尿酸隆鼻一般要多少钱? 烟台曙光玻尿酸隆鼻多少钱? 玻尿酸隆鼻多少钱? 唐山玻尿酸隆鼻多少钱一针? 玻尿酸隆鼻大概要多少钱啊? 玻尿酸隆鼻要多少钱? 玻尿酸隆鼻贵吗 玻尿酸隆鼻多少钱一针? 打玻尿酸隆鼻多少钱 北京打玻尿酸隆鼻多少钱,有了解的吗? 玻尿酸注射隆鼻要多少钱?南昌韩美玻尿酸隆鼻贵吗? 玻尿酸隆鼻一般要多少钱啊? 沈阳注射玻尿酸隆鼻多少钱 袜子应该多久换一次啊? 什么是袜子? 正装袜子要求 袜子有哪些用途? 袜子什么牌子的好?