Rumah hujung hadapan web uni-app Adakah uniapp menyokong pembungkusan berbilang halaman?

Adakah uniapp menyokong pembungkusan berbilang halaman?

Apr 27, 2023 am 09:07 AM

UniApp ialah rangka kerja pembangunan aplikasi merentas platform berdasarkan Vue.js, yang boleh membina aplikasi berbilang terminal dengan cepat dan membungkusnya untuk dikeluarkan pada masa yang sama. Walau bagaimanapun, adakah uniapp menyokong pembungkusan berbilang halaman? Artikel ini akan menjawabnya untuk anda.

Salah satu ciri rangka kerja UniApp ialah ia boleh menjana aplikasi pada hujung yang berbeza melalui set kod yang sama. Ia menggunakan satu set konfigurasi penghalaan mudah untuk menguruskan lompatan antara halaman yang berbeza. Semasa proses lompat halaman, UniApp juga menyokong parameter lulus dan konfigurasi penghalaan dinamik Ciri-ciri ini meningkatkan kecekapan dan fleksibiliti pembangunan.

Untuk aplikasi berbilang halaman, UniApp juga menyokong pelbagai kaedah pelaksanaan Kami boleh bertukar antara berbilang halaman dengan mengkonfigurasi penghalaan dan komponen. Semasa mengkonfigurasi penghalaan, kami boleh menentukan nama, laluan, ikon dan atribut lain bagi setiap halaman Kami juga boleh mengkonfigurasi komponen halaman yang berbeza dan fungsi kitaran hayat untuk platform yang berbeza.

Walau bagaimanapun, dalam pembangunan sebenar, kami selalunya perlu membungkus berbilang halaman ke dalam satu aplikasi, atau membungkus berbilang aplikasi pada satu platform Pada masa ini, kami perlu menggunakan konfigurasi pembungkusan dan alat pemadanan UniApp untuk melengkapkan .

Berikut memperkenalkan beberapa cara untuk melaksanakan pembungkusan berbilang halaman:

  1. Konfigurasi melalui pages.json

Apabila membungkus UniApp, anda boleh mengkonfigurasinya melalui pages.json Fail konfigurasi untuk menentukan halaman yang perlu dibungkus. Fail pages.json ialah fail konfigurasi global yang menentukan semua halaman dalam aplikasi. Kami boleh memperuntukkan halaman yang berbeza kepada folder yang berbeza mengikut keperluan, dan kemudian mengkonfigurasi maklumat laluan yang sepadan dalam pages.json.

Contohnya:

{
    "pages": [
        {
            "path": "pages/home/home",
            "style": {
                "navigationBarTitleText": "首页"
            }
        },
        {
            "path": "pages/list/list",
            "style": {
                "navigationBarTitleText": "列表"
            }
        }
    ]
}
Salin selepas log masuk

di mana setiap item tatasusunan halaman mewakili halaman. Laluan mewakili laluan halaman, yang boleh menjadi laluan relatif atau laluan mutlak.

  1. Dicapai dengan menetapkan Halaman secara dinamik

Selain menggunakan fail konfigurasi untuk pembungkusan berbilang halaman, UniApp juga menyokong penjanaan berbilang halaman secara dinamik dengan menetapkan Halaman secara dinamik. Kami boleh menetapkan Halaman secara dinamik melalui API apabila aplikasi bermula, dan melompat apabila kami perlu membuka halaman ini.

Contohnya:

// index.vue

export default {
    methods: {
        onTap() {
            uni.navigateTo({
                url: 'pages/dynamic-page/dynamic-page'
            });
        }
    }
}

// dynamic-page.vue

export default {
    onLoad(options) {
        console.log(options.title);
    }
}

// app.vue

export default {
    onLaunch() {
        // 动态添加页面
        uni.addPage({
            route: 'pages/dynamic-page/dynamic-page',
            config: {
                "navigationBarTitleText": "动态生成页面"
            }
        });
    }
}
Salin selepas log masuk

Tambah Halaman secara dinamik dengan memanggil kaedah uni.addPage, dan kemudian lompat ke tempat yang anda perlukan untuk menggunakan halaman dinamik.

  1. Dicapai melalui pemalam dan kod asli

Dalam senario di mana pembungkusan berbilang halaman perlu disokong, kita boleh mencapai ini dengan menulis pemalam dan kod asli . Pemalam boleh bekerjasama dengan kod asli untuk mencapai sokongan berbilang halaman yang lengkap, dan juga boleh digunakan untuk mengendalikan fungsi yang tidak disokong oleh rangka kerja itu sendiri.

Contohnya:

// uniapp.config.js

"use strict";

const path = require("path");

module.exports = {
    chainWebpack(config, env, context) {
        // 注册 native 模块
        config.plugin("define").tap(definitions => [
            Object.assign({}, definitions[0], {
                "process.env.NATIVE_MODULE": JSON.stringify(true)
            })
        ]);
        // 添加插件
        config.plugin("extra-pages").use(require("./plugins/extra-pages"));
        // 将插件资源目录添加到代码搜索路径中
        config.resolve.alias.set("extra-pages", path.resolve(__dirname, "./plugins/extra-pages"));
    }
};

// plugins/extra-pages.js

const webpack = require("webpack");
const path = require("path");

class ExtraPagesPlugin {
    constructor(options) {
        this.options = options;
    }

    apply(compiler) {
        compiler.hooks.watchRun.tapAsync("ExtraPagesPlugin", (watching, callback) => {
            this.run(callback);
        });
    }

    getFiles(src) {
        return new Promise((resolve, reject) => {
            // read directory
            const files = fs.readdirSync(src);
            return resolve(files);
        });
    }

    run(callback) {
        console.log("增量更新多页面...");
        // 处理页面文件
        this.getFiles("./src/pages").then(files => {
            files.forEach(item => {
                const name = item.split(".")[0];
                const content = `
                import Vue from 'vue';
                import App from '../${name}.vue';

                const app = new Vue({
                    ...App
                });

                app.$mount();
                `;
                fs.writeFileSync(`./src/pages/${name}.js`, content);
            });
            console.log(`增量更新多页面成功!`);
            callback();
        });
    }
}

module.exports = ExtraPagesPlugin;

// extra-pages/dynamic-page.vue

<template>
    <view>
        <text>{{ title }}</text>
    </view>
</template>

<script>
    const app = getApp();

    export default {
        data() {
            return {
                title: "动态页面"
            };
        },
        onLoad(options) {
            console.log(options);
            Object.assign(this, options);
            // 添加原生页面
            app.addNativePage({
                route: "dynamic-page",
                title: this.title,
                url: `pages/${this.$route.path}`
            });
        }
    };
</script>
Salin selepas log masuk

Dalam kod di atas, kami mengkonfigurasi fail uniapp.config.js untuk menambah pemalam, yang terutamanya merangkumi dua langkah: tentukan ExtraPagesPlugin dan tambahkannya pada pemalam, dan tambah Direktori sumber pemalam ditambahkan pada laluan carian kod. Kemudian proses halaman dalam extra-pages.js, jana halaman secara dinamik yang memerlukan pembungkusan tambahan dan tambahkan halaman Asli pada tindanan halaman dengan memanggil kaedah app.addNativePage dalam extra-pages/dynamic-page.vue.

Ringkasnya, rangka kerja UniApp menyokong pelbagai cara untuk melaksanakan pembungkusan berbilang halaman, dan pembangun boleh memilih kaedah yang sesuai dengan mereka mengikut keperluan mereka sendiri. Pada masa yang sama, dalam pembangunan sebenar, ia juga perlu untuk mengkonfigurasi dan menyesuaikan secara fleksibel mengikut senario yang berbeza supaya apabila masalah dihadapi, ia boleh dibaiki dan dioptimumkan dengan cepat.

Atas ialah kandungan terperinci Adakah uniapp menyokong pembungkusan berbilang halaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah saya menggunakan preprocessors (sass, kurang) dengan uni-app? Bagaimanakah saya menggunakan preprocessors (sass, kurang) dengan uni-app? Mar 18, 2025 pm 12:20 PM

Artikel membincangkan menggunakan SASS dan kurang preprocessors dalam UNI-APP, memperincikan persediaan, faedah, dan penggunaan dwi. Fokus utama adalah pada konfigurasi dan kelebihan. [159 aksara]

Apakah jenis ujian yang boleh anda lakukan dalam aplikasi UNIAPP? Apakah jenis ujian yang boleh anda lakukan dalam aplikasi UNIAPP? Mar 27, 2025 pm 04:59 PM

Artikel ini membincangkan pelbagai jenis ujian untuk aplikasi UNIAPP, termasuk unit, integrasi, fungsional, UI/UX, prestasi, silang platform, dan ujian keselamatan. Ia juga meliputi memastikan keserasian silang platform dan mengesyorkan alat seperti JES

Bagaimana saya menggunakan API Animasi Uni-App? Bagaimana saya menggunakan API Animasi Uni-App? Mar 18, 2025 pm 12:21 PM

Artikel ini menerangkan cara menggunakan API Animasi Uni-App, memperincikan langkah-langkah untuk membuat dan menggunakan animasi, fungsi utama, dan kaedah untuk menggabungkan dan mengawal masa animasi.

Bagaimanakah anda dapat mengurangkan saiz pakej aplikasi UNIAPP anda? Bagaimanakah anda dapat mengurangkan saiz pakej aplikasi UNIAPP anda? Mar 27, 2025 pm 04:45 PM

Artikel ini membincangkan strategi untuk mengurangkan saiz pakej UNIAPP, memberi tumpuan kepada pengoptimuman kod, pengurusan sumber, dan teknik seperti pemisahan kod dan pemuatan malas.

Apakah alat penyahpepijatan yang tersedia untuk pembangunan Uniapp? Apakah alat penyahpepijatan yang tersedia untuk pembangunan Uniapp? Mar 27, 2025 pm 05:05 PM

Artikel ini membincangkan alat penyahpepijatan dan amalan terbaik untuk pembangunan UNIPP, yang memberi tumpuan kepada alat seperti HBuildex, WeChat Developer Tools, dan Chrome Devtools.

Bagaimana saya menggunakan API Penyimpanan Uni-App (uni.setstorage, uni.getstorage)? Bagaimana saya menggunakan API Penyimpanan Uni-App (uni.setstorage, uni.getstorage)? Mar 18, 2025 pm 12:22 PM

Artikel ini menerangkan cara menggunakan API penyimpanan Uni-App (uni.setstorage, uni.getstorage) untuk pengurusan data tempatan, membincangkan amalan terbaik, penyelesaian masalah, dan menyoroti batasan dan pertimbangan untuk kegunaan yang berkesan.

Bagaimanakah saya menggunakan API Uni-App untuk mengakses ciri peranti (kamera, geolokasi, dll)? Bagaimanakah saya menggunakan API Uni-App untuk mengakses ciri peranti (kamera, geolokasi, dll)? Mar 18, 2025 pm 12:06 PM

Artikel ini membincangkan menggunakan API UNI-APP untuk mengakses ciri peranti seperti kamera dan geolokasi, termasuk tetapan kebenaran dan pengendalian ralat.

Bagaimanakah anda boleh mengoptimumkan imej untuk prestasi web di Uniapp? Bagaimanakah anda boleh mengoptimumkan imej untuk prestasi web di Uniapp? Mar 27, 2025 pm 04:50 PM

Artikel ini membincangkan mengoptimumkan imej dalam UNIPP untuk prestasi web yang lebih baik melalui mampatan, reka bentuk responsif, pemuatan malas, caching, dan menggunakan format WEBP.

See all articles