gpt4 book ai didi

node.js - 如何使用 React、Node 和 Webpack 渲染 pug/jade 模板?

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:17 24 4
gpt4 key购买 nike

我有一个 React/Node/Express 应用程序,我正在使用 Webpack 来构建它。

目前目录结构如下:

node_modules
public
app
main.js
main.map.js
index.html
src
client
components
Home.js
Header.js
Root.js
User.js
main.js
server
views
index.html
index.js
package.json
webpack.config.js

这是我的 webpack.config.js

var path = require("path");

var DIST_DIR = path.resolve(__dirname, "public");

var SRC_DIR = path.resolve(__dirname, "src");

var config = {
entry: SRC_DIR + "/client/main.js",
output: {
path: DIST_DIR + "/app",
filename: "main.js",
publicPath: "/app"
},
module:{
loaders: [
{
test: /\.js?/,
include: SRC_DIR,
loader: "babel-loader",
query:{
presets:["react", "es2015", "stage-2"]
}
}
]
}
};

module.exports = config;

这是我的 package.json

{
"name": "react-webpack",
"version": "1.0.0",
"description": "",
"main": "/src/server/index.js",
"scripts": {
"start": "npm run build",
"build": "webpack -d && xcopy \"src/server/views/index.html\" \"public\" /F /Y && webpack-dev-server --content-base src/ --inline --hot --history-api-fallback",
"build:prod": "webpack -p && xcopy \"src/server/views/index.html\" \"public/\" /F /Y"
},
"author": "",
"license": "ISC",
"dependencies": {
"react": "^15.4.1",
"react-dom": "^15.4.1",
"react-router": "^3.0.0"
},
"devDependencies": {
"babel-core": "^6.18.2",
"babel-loader": "^6.2.8",
"babel-preset-es2015": "^6.18.0",
"babel-preset-react": "^6.16.0",
"babel-preset-stage-2": "^6.18.0",
"body-parser": "^1.15.2",
"express": "^4.14.0",
"jquery": "^3.1.1",
"lodash": "^4.17.2",
"morgan": "^1.7.0",
"pug": "^2.0.0-beta6",
"webpack": "^1.13.3",
"webpack-dev-server": "^1.16.2"
}
}

这行得通。我的 index.html 是这样的:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>React Basics</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app"></div>
<script src="/app/main.js"></script>
<!--Everything will be bundled in app/mainjs -->
</body>
</html>

当我执行 npm start 时,应用程序会构建,我可以转到 localhost:8080 并查看 index.html,并加载子组件。加载的脚本是“app/main.js”,如下所示:

import React from 'react';
import { render } from 'react-dom';
import {Router, Route, browserHistory, IndexRoute} from "react-router";

//import newly created components
import {Root} from "./components/Root";
import {Home} from "./components/Home";
import {User} from "./components/User";

class App extends React.Component {


render() {
return (
<Router history={browserHistory}>
<Route path={"/"} component={Root}>
<IndexRoute component={Home}/>
<Route path={"user/:id"} component={User}/>
<Route path={"home"} component={Home}/>
</Route>
<Route path={"home"} component={Home}/>
</Router>
);
}
}

render(<App />, window.document.getElementById('app'));

我现在想要做的不是拥有 index.html,而是拥有一个内容与 index.html 完全相同的 index.pug,并从服务器文件 index.js 提供哈巴狗模板。你能告诉我该怎么做吗?我尝试了一些东西,但它把事情搞砸了太多,所以恢复到原来的状态。

最佳答案

根目录下:

$ npm install pug --save

服务器/index.js:

var app = require('express')();
app.set('view engine', 'pug');
app.get('/', function (req, res) {
res.render('index');
});

服务器/views/index.pug:

doctype html
html(lang='en')

head
meta(charset='UTF-8')
title React Basics
//- Latest compiled and minified CSS
link(rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' integrity='sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u' crossorigin='anonymous')

body
#app
script(src='/app/main.js')
//- Everything will be bundled in app/mainjs

关于node.js - 如何使用 React、Node 和 Webpack 渲染 pug/jade 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40962152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com