2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
我認(rèn)為您正在尋找一種自動(dòng)合并兩個(gè)輸出的方法,其中一個(gè)是現(xiàn)有的 HTML,其中包含從現(xiàn)有構(gòu)建過程生成并通過數(shù)據(jù)庫觸發(fā)的頁眉和頁腳。
第二個(gè)是您的 React 應(yīng)用程序,它是來自您的 create-react-app 構(gòu)建基礎(chǔ)架構(gòu)的完美最終輸出。
在這種情況下,我建議使用這個(gè)非常流行的工具,稱為 gulp-inject。gulp-inject 獲取源文件流,將每個(gè)文件轉(zhuǎn)換為字符串,并將每個(gè)轉(zhuǎn)換后的字符串注入目標(biāo)流文件中的占位符中。
下面給出一個(gè)例子:
假設(shè)您的目標(biāo)文件名為index.html,如下所示
<!DOCTYPE html>
<html>
<head>
<title>My index</title>
<!-- inject:css -->
<!-- endinject -->
</head>
<body>
<!-- inject:js -->
<!-- endinject -->
</body>
</html>
您的gulpfile.js腳本將如下所示,以根據(jù)此腳本自動(dòng)實(shí)現(xiàn)帶有新插入的新 index.html。
var gulp = require('gulp');
var inject = require('gulp-inject');
gulp.task('index', function () {
var target = gulp.src('./src/index.html');
// It's not necessary to read the files (will speed up things), we're only after their paths:
var sources = gulp.src(['./src/**/*.js', './src/**/*.css'], {read: false});
return target.pipe(inject(sources))
.pipe(gulp.dest('./src'));
});
運(yùn)行 gulp index 后, index.html的最終輸出將如下所示:
<!DOCTYPE html>
<html>
<head>
<title>My index</title>
<!-- inject:css -->
<link rel="stylesheet" href="/src/style1.css">
<link rel="stylesheet" href="/src/style2.css">
<!-- endinject -->
</head>
<body>
<!-- inject:js -->
<script src="/src/lib1.js"></script>
<script src="/src/lib2.js"></script>
<!-- endinject -->
</body>
</html>
下面給出了轉(zhuǎn)換現(xiàn)有 HTML 文件并使用 ReactJS 代碼插入它的基礎(chǔ)知識(shí)。我認(rèn)為如果您應(yīng)用這些原則并使用 gulp-inject 工具,您可以實(shí)現(xiàn)奇跡。
https://reactjs.org/docs/add-react-to-a-website.html
您的確切構(gòu)建自動(dòng)化可能由您自己的工具驅(qū)動(dòng),例如 Jenkins 或類似的工具,您可以在其中將一個(gè)事件與另一個(gè)事件鏈接起來。例如,您可以在 AWS 上的數(shù)據(jù)庫觸發(fā)自動(dòng)生成新的 HTML 文件時(shí)進(jìn)行檢查,一旦收到該事件,您就可以觸發(fā) Gulp-Inject 腳本(如果您已經(jīng)準(zhǔn)備好 React 組件),或者觸發(fā)Create-React-App 來重新構(gòu)建 React 組件,然后應(yīng)用 Gulp-Inject 腳本將 React 組件或 React 代碼注入到 index.html 或 html 頁面的任何名稱中。
可以在此處找到 gulp-inject 的 npm 包。
https://www.npmjs.com/package/gulp-inject
希望這可以幫助。讓我知道。
如果您喜歡這個(gè)答案,可以采納。

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
為此,您需要將 React 構(gòu)建文件夾中的 js、css 和媒體文件托管在 S3 存儲(chǔ)桶中,并將以下內(nèi)容添加到代碼中。
<html>
? ? ..... your static html code?
? ? <div id="the id used to bootstrap your react app (from the index.html file in the public folder)"></div>
? ? ......
? ? links to all the files in your JS, CSS And media files from the react build folder
</html>
我建議盡可能使用托管圖像(您也可以將它們托管在 S3 上)和資產(chǎn),這樣您就不需要在 html 文件中逐一添加媒體文件鏈接。
- 2 回答
- 0 關(guān)注
- 236 瀏覽
添加回答
舉報(bào)