如何将 Vue-cli 改造成支持多页面的history模式
本文主要介绍了详解如何将 Vue-cli 改造成支持多页面的 history 模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。
标题可能描述不准确, 大概就是这么个需求:
用 Vue-cli 搭建一个多入口, 多页面的站点, 也就是通过html-webpack-plugin插件会生成多个 .html 文件, 在默认下, 是只有 index.html 这个入口可以用 history 模式, 如: http://www.xxx.com/xxx/xxx, 而其他的入口只能用 hash 模式, 如: http://www.xxx.com/admin.html#/xxx/xxx, 因为webpack-dev-middleware会将所有的路由都指向 index.html 文件, 假如线上的时候, 都需要 history 模式, 这样多少会造成麻烦.
真是太二了, 刚写完文章就发现connect-history-api-fallback这个插件就是做这个的...
方法更新如下:
修改 build/dev-server.js 文件
app.use(require('connect-history-api-fallback')())
改成
var history = require('connect-history-api-fallback') app.use(history({ rewrites: [ { from: 'index', to: '/index.html'}, // 默认入口 { from: /\/backend/, to: '/backend.html'}, // 其他入口 { from: /^\/backend\/.*$/, to: '/backend.html'}, ] }))
具体规则就参考: https://github.com/bripkens/connect-history-api-fallback
-------------- 以下代码请无视 --------------
下面我们就来改造下, 让所有入口都支持 history 模式:
1. 首先, 我们在 build 目录下建立个 setup-dev-server.js 文件, 里面代码如下:
const path = require('path') const webpack = require('webpack') const clientConfig = require('./webpack.dev.conf') // 引入开发环境下的 webpack 配置文件 module.exports = function setupDevServer(app, opts) { const clientCompiler = webpack(clientConfig) // 加载 webpack-dev-middleware 插件 const devMiddleware = require('webpack-dev-middleware')(clientCompiler, { publicPath: clientConfig.output.publicPath, stats: { colors: true, chunks: false } }) app.use(devMiddleware) // 关键代码开始 // 因为开发环境下, 所有的文件都在内存里, 包括由 html-webpack-plugin 生成的 .html 文件, 所以我们需要用 webpack-dev-middleware 提供的 api 从内存里读取 clientCompiler.plugin('done', () => { const fs = devMiddleware.fileSystem // 访问内存 const filePath = path.join(clientConfig.output.path, 'index.html') // 读取的文件, 文件名和 html-webpack-plugin 生成的文件名要求一致 if (fs.existsSync(filePath)) { // 判断下文件是否存在 const index = fs.readFileSync(filePath, 'utf-8') // 从内存里取出 opts.indexUpdated(index) // 将取出的文件通过 indexUpdated 函数返回, 这个函数怎么来的, 后面会说明 } const adminPath = path.join(clientConfig.output.path, 'backend.html') // 同上, 这是第二个入口生成的 .html 文件, 如果还有其他入口, 这个多复制几份 if (fs.existsSync(adminPath)) { const admin = fs.readFileSync(adminPath, 'utf-8') opts.adminUpdated(admin) } }) // 加载热重载模块 app.use(require('webpack-hot-middleware')(clientCompiler)) var hotMiddleware = require('webpack-hot-middleware')(clientCompiler) // 当修改 html-webpack-plugin 模版时, 自动刷新整个页面 clientCompiler.plugin('compilation', function(compilation) { compilation.plugin('html-webpack-plugin-after-emit', function(data, cb) { hotMiddleware.publish({ action: 'reload' }) cb() }) }) }
2. 修改 build/dev-server.js 文件
主要修改文件中var app = express()到module.exports = app.listen(port, function (err) {之间的代码
var app = express() var indexHTML var adminHTML // 引用前面创建的文件, 并将两个保存内容的函数传过去, 这里保存内容的变量写成对象或者数组也可以, 还可以少点代码 require('../config/setup-dev-server')(app, { indexUpdated: index => { indexHTML = index }, adminUpdated: index => { adminHTML = index }, }) // 加载反向代理 Object.keys(proxyTable).forEach(function(context) { var options = proxyTable[context] if (typeof options === 'string') { options = { target: options } } app.use(proxyMiddleware(context, options)) }) // 设置静态文件夹路由 var staticPath = path.posix.join(config.assetsPublicPath, config.assetsSubDirectory) app.use(staticPath, express.static('./static')) // 入口1路由 app.get(['/', '/category/:id'], (req, res) => { res.send(indexHTML) }) // 入口2路由 app.get(['/backend', '/backend/*'], (req, res) => { res.send(adminHTML) }) // 404 页面 app.get('*', (req, res) => { res.send('HTTP STATUS: 404') }) app.use(function(req, res, next) { var err = new Error('Not Found') err.status = 404 next(err) }) app.use(function(err, req, res) { res.status(err.status || 500) res.send(err.message) }) module.exports = app.listen(port, function(err) {
3. npm run dev 开始愉快的写代码吧
相关推荐:
Atas ialah kandungan terperinci 如何将 Vue-cli 改造成支持多页面的history模式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Apabila menggunakan Windows Shello, kamera yang disokong tidak dapat ditemui Sebab biasa ialah kamera yang digunakan tidak menyokong pengecaman muka dan pemacu kamera tidak dipasang dengan betul Jadi mari kita lihat cara untuk menyediakannya. Windowshello tidak dapat mencari tutorial kamera yang disokong: Sebab 1: Pemacu kamera tidak dipasang dengan betul 1. Secara umumnya, sistem Win10 boleh memasang pemacu secara automatik untuk kebanyakan kamera, seperti berikut, akan ada pemberitahuan selepas memasang kamera 2. Pada masa ini, kami membuka peranti Semak pengurus untuk melihat sama ada pemacu kamera dipasang Jika tidak, anda perlu melakukannya secara manual. WIN+X, kemudian pilih Pengurus Peranti 3. Dalam tetingkap Pengurus Peranti, kembangkan pilihan kamera dan model pemacu kamera akan dipaparkan.

ASUS tufz790plus menyokong frekuensi memori ASUS TUFZ790-PLUS motherboard berprestasi tinggi yang menyokong memori DDR4 dwi-saluran dan menyokong sehingga 64GB memori. Kekerapan memorinya sangat berkuasa, sehingga 4800MHz. Frekuensi memori yang disokong khusus termasuk 2133MHz, 2400MHz, 2666MHz, 2800MHz, 3000MHz, 3200MHz, 3600MHz, 3733MHz, 3866MHz, 4000MHz, 4133MHz, 4260MHz, 4440MHz, 4460MHz, 4440MHz, 4460MHz 4800MHz. Sama ada kegunaan harian atau keperluan prestasi tinggi

Kebaikan dan keburukan perisian sumber terbuka: Memahami kebaikan dan keburukan projek sumber terbuka memerlukan contoh kod khusus Dalam era digital hari ini, perisian sumber terbuka semakin mendapat perhatian dan penghormatan. Sebagai model pembangunan perisian berdasarkan semangat kerjasama dan perkongsian, perisian sumber terbuka digunakan secara meluas dalam pelbagai bidang. Walau bagaimanapun, walaupun terdapat banyak kelebihan perisian sumber terbuka, terdapat juga beberapa cabaran dan batasan. Artikel ini akan menyelidiki kebaikan dan keburukan perisian sumber terbuka dan menunjukkan kebaikan dan keburukan projek sumber terbuka melalui contoh kod tertentu. 1. Kelebihan perisian sumber terbuka 1.1 Keterbukaan dan ketelusan Perisian sumber terbuka

Adakah PyCharm Community Edition menyokong pemalam yang mencukupi? Perlukan contoh kod khusus Memandangkan bahasa Python semakin digunakan secara meluas dalam bidang pembangunan perisian, PyCharm, sebagai persekitaran pembangunan bersepadu (IDE) Python profesional, digemari oleh pembangun. PyCharm dibahagikan kepada dua versi: versi profesional dan versi komuniti Versi komuniti disediakan secara percuma, tetapi sokongan pemalamnya terhad berbanding versi profesional. Jadi persoalannya, adakah PyCharm Community Edition menyokong pemalam yang mencukupi? Artikel ini akan menggunakan contoh kod khusus untuk

Sesetengah pengguna menggunakan sistem XP dan ingin meningkatkan kad grafik mereka kepada gtx960, tetapi tidak pasti sama ada gtx960 menyokong sistem xp. Malah, gtx960 menyokong sistem xp. Kami hanya perlu memuat turun pemacu yang sesuai untuk sistem xp dari laman web rasmi, dan kemudian kami boleh menggunakan gtx960. Mari kita lihat langkah-langkah khusus di bawah. Adakah gtx960 menyokong sistem XP: GTX960 serasi dengan sistem XP. Hanya muat turun dan pasang pemacu dan anda boleh pergi. Pertama, kita perlu membuka laman web rasmi NVIDIA dan navigasi ke halaman utama. Kemudian kita perlu mencari label atau butang di atas halaman, ia mungkin akan dilabelkan "Pemandu". Sebaik sahaja kami menemui pilihan ini, kami perlu mengklik

Cara menggunakan Flask-Babel untuk melaksanakan sokongan berbilang bahasa Pengenalan: Dengan pembangunan berterusan Internet, sokongan berbilang bahasa telah menjadi ciri yang diperlukan untuk kebanyakan tapak web dan aplikasi. Flask-Babel ialah sambungan Flask yang mudah dan mudah digunakan yang menyediakan sokongan berbilang bahasa berdasarkan perpustakaan Babel. Artikel ini akan memperkenalkan cara menggunakan Flask-Babel untuk mencapai sokongan berbilang bahasa dan melampirkan contoh kod. 1. Pasang Flask-Babel Sebelum bermula, kita perlu memasang Flask-Bab terlebih dahulu.

Cara menggunakan rangka kerja Hyperf untuk sokongan antarabangsa Dengan perkembangan globalisasi yang pesat, banyak aplikasi perlu mempunyai fungsi sokongan berbilang bahasa untuk memenuhi keperluan pengguna di negara dan wilayah yang berbeza. Sebagai rangka kerja yang ringan dan berprestasi tinggi, rangka kerja Hyperf menyediakan fungsi sokongan antarabangsa dan boleh membantu pembangun membangunkan aplikasi berbilang bahasa dengan cepat. Artikel ini akan memperkenalkan cara menggunakan fungsi pengantarabangsaan dalam rangka kerja Hyperf dan memberikan contoh kod yang sepadan. 1. Konfigurasikan sokongan berbilang bahasa Pertama, anda perlu mengkonfigurasi fail konfigurasi Hyperf.

Bagaimanakah perisian C++ melaksanakan sokongan bahasa Cina? Dengan proses globalisasi, semakin banyak perisian perlu menyokong berbilang bahasa, termasuk bahasa Cina. Dalam pembangunan C++, melaksanakan sokongan bahasa Cina tidak rumit dan boleh diselesaikan dengan mudah hanya dengan beberapa kemahiran dan alatan asas. Artikel ini akan memperkenalkan cara untuk melaksanakan sokongan bahasa Cina dalam perisian C++ dan menyediakan contoh kod khusus. 1. Gunakan pengekodan Unikod Untuk menyokong bahasa Cina, anda mesti terlebih dahulu memastikan perisian menggunakan pengekodan Unikod secara dalaman. Unicode adalah standard
