最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue使用pages構(gòu)建多頁(yè)應(yīng)用的實(shí)現(xiàn)步驟

 更新時(shí)間:2024年12月29日 11:31:30   作者:Nejosi_念舊  
在大部分實(shí)際場(chǎng)景中,我們都可以構(gòu)建單頁(yè)應(yīng)用來(lái)進(jìn)行項(xiàng)目的開(kāi)發(fā)和迭代,然而對(duì)于項(xiàng)目復(fù)雜度過(guò)高或者頁(yè)面模塊之間差異化較大的項(xiàng)目,我們可以選擇構(gòu)建多頁(yè)應(yīng)用來(lái)實(shí)現(xiàn),那么什么是多頁(yè)應(yīng)用,本文就給大家介紹了Vue使用pages構(gòu)建多頁(yè)應(yīng)用的實(shí)現(xiàn)步驟

概念

首先我們可以把多頁(yè)應(yīng)用理解為由多個(gè)單頁(yè)構(gòu)成的應(yīng)用,而何謂多個(gè)單頁(yè)呢?其實(shí)你可以把一個(gè)單頁(yè)看成是一個(gè) html 文件,那么多個(gè)單頁(yè)便是多個(gè) html 文件,多頁(yè)應(yīng)用便是由多個(gè) html 組成的應(yīng)用,如下圖所示:

既然多頁(yè)應(yīng)用擁有多個(gè) html,那么同樣其應(yīng)該擁有多個(gè)獨(dú)立的入口文件、組件、路由、vuex 等。沒(méi)錯(cuò),說(shuō)簡(jiǎn)單一點(diǎn)就是多頁(yè)應(yīng)用的每個(gè)單頁(yè)都可以擁有單頁(yè)應(yīng)用 src 目錄下的文件及功能,我們來(lái)看一下一個(gè)基礎(chǔ)多頁(yè)應(yīng)用的目錄結(jié)構(gòu):

├── node_modules               # 項(xiàng)目依賴(lài)包目錄
├── build                      # 項(xiàng)目 webpack 功能目錄
├── config                     # 項(xiàng)目配置項(xiàng)文件夾
├── src                        # 前端資源目錄
│   ├── images                 # 圖片目錄
│   ├── components             # 公共組件目錄
│   ├── pages                  # 頁(yè)面目錄
│   │   ├── page1              # page1 目錄
│   │   │   ├── components     # page1 組件目錄
│   │   │   ├── router         # page1 路由目錄
│   │   │   ├── views          # page1 頁(yè)面目錄
│   │   │   ├── page1.html     # page1 html 模板
│   │   │   ├── page1.vue      # page1 vue 配置文件
│   │   │   └── page1.js       # page1 入口文件
│   │   ├── page2              # page2 目錄
│   │   └── index              # index 目錄
│   ├── common                 # 公共方法目錄
│   └── store                  # 狀態(tài)管理 store 目錄
├── .gitignore                 # git 忽略文件
├── .env                       # 全局環(huán)境配置文件
├── .env.dev                   # 開(kāi)發(fā)環(huán)境配置文件
├── .postcssrc.js              # postcss 配置文件
├── babel.config.js            # babel 配置文件
├── package.json               # 包管理文件
├── vue.config.js              # CLI 配置文件
└── yarn.lock                  # yarn 依賴(lài)信息文件

根據(jù)上方目錄結(jié)構(gòu)我們可以看出其實(shí) pages 下的一個(gè)目錄就是一個(gè)單頁(yè)包含的功能,這里我們包含了 3 個(gè)目錄就構(gòu)成了多頁(yè)應(yīng)用。

除了目錄結(jié)構(gòu)的不同外,其實(shí)區(qū)別單頁(yè)應(yīng)用,多頁(yè)應(yīng)用在很多配置上都需要進(jìn)行修改,比如單入口變?yōu)槎嗳肟凇文0遄優(yōu)槎嗄0宓?,那么下面我們就?lái)了解一下多頁(yè)應(yīng)用的具體實(shí)現(xiàn)。

多入口

在單頁(yè)應(yīng)用中,我們的入口文件只有一個(gè),Vue CLI 默認(rèn)配置的是 main.js,但是到了多頁(yè)應(yīng)用,我們的入口文件便包含了 page1.js、page2.js、index.js等,數(shù)量取決于 pages 文件夾下目錄的個(gè)數(shù),這時(shí)候?yàn)榱隧?xiàng)目的可拓展性,我們需要自動(dòng)計(jì)算入口文件的數(shù)量并解析路徑配置到 webpack 中的 entry 屬性上,如:

module.exports = {
    ...
    
    entry: {
        page1: '/xxx/pages/page1/page1.js',
        page2: '/xxx/pages/page2/page2.js',
        index: '/xxx/pages/index/index.js',
    },
    
    ...
}

那么我們?nèi)绾巫x取并解析這樣的路徑呢,這里就需要使用工具和函數(shù)來(lái)解決了。我們可以在根目錄新建 build 文件夾存放 utils.js 這樣共用的 webpack 功能性文件,并加入多入口讀取解析方法:

/* utils.js */
const path = require('path');
 
// glob 是 webpack 安裝時(shí)依賴(lài)的一個(gè)第三方模塊,該模塊允許你使用 * 等符號(hào),
// 例如 lib/*.js 就是獲取 lib 文件夾下的所有 js 后綴名的文件
const glob = require('glob');
 
// 取得相應(yīng)的頁(yè)面路徑,因?yàn)橹暗呐渲茫允?src 文件夾下的 pages 文件夾
// PAGE_PATH 變量定義了存放頁(yè)面文件的路徑
const PAGE_PATH = path.resolve(__dirname, '../src/pages');
 
/* 
* 多入口配置
* 通過(guò) glob 模塊讀取 pages 文件夾下的所有對(duì)應(yīng)文件夾下的 js * 后綴文件,如果該文件存在
* 那么就作為入口處理
*/
exports.getEntries = () => {
    //glob.sync 方法同步讀取 PAGE_PATH 下的所有子目錄中的 .js 文件,將匹配到的文件路徑存儲(chǔ)在 entryFiles 數(shù)組中
    let entryFiles = glob.sync(PAGE_PATH + '/*/*.js') 
    let map = {}
    
    // 遍歷所有入口文件,和構(gòu)建入口對(duì)象
    entryFiles.forEach(filePath => {
        // 獲取文件名
        let filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
        
        // 通過(guò) forEach 遍歷每個(gè)文件路徑,提取文件名,并將文件名(不帶擴(kuò)展名)作為鍵,將文件路徑作為值,構(gòu)建成一個(gè)對(duì)象 map
        map[filename] = filePath 
    })
    
    return map
}

最終返回的 map 對(duì)象包含了所有入口文件的映射關(guān)系,形式如下

 {

        'page1': '/path/to/src/pages/page1/index.js',

         'page2': '/path/to/src/pages/page2/index.js',

        ...

}

在 Webpack 配置中使用 getEntries 獲取入口文件,并配置 entry 屬性:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { getEntries } = require('./utils');
 
module.exports = {
    entry: getEntries(), // 使用 getEntries 方法獲取入口
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].[contenthash].js', // 依據(jù)入口名稱(chēng)生成文件
    },
    plugins: Object.keys(getEntries()).map(entry => {
        return new HtmlWebpackPlugin({
            template: path.resolve(__dirname, `../src/pages/${entry}/index.html`), // 根據(jù)頁(yè)面生成 HTML
            filename: `${entry}.html`,
            chunks: [entry], // 只引入當(dāng)前入口的 chunk
        });
    }),
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: 'babel-loader'
                }
            }
        ]
    },
    optimization: {
        splitChunks: {
            chunks: 'all',
        },
    }
};

上方我們使用了 glob 這一第三方模塊讀取所有 pages 文件夾下的入口文件,其需要進(jìn)行安裝:

yarn add glob --dev

這樣我們多入口的設(shè)置便完成了,當(dāng)然這并不是 CLI 所希望的操作,后面我們會(huì)進(jìn)行改進(jìn)。

多模板

相對(duì)于多入口來(lái)說(shuō),多模板的配置也是大同小異,這里所說(shuō)的模板便是每個(gè) page 下的 html 模板文件,而模板文件的作用主要用于 webpack html-webpack-plugin 插件的配置,其會(huì)根據(jù)模板文件生產(chǎn)一個(gè)編譯后的 html 文件并自動(dòng)加入攜帶 hash 的腳本和樣式,基本配置如下:

/* webpack 配置文件 */
const HtmlWebpackPlugin = require('html-webpack-plugin') // 安裝并引用插件
 
module.exports = {
    ...
    
    plugins: [
        new HtmlWebpackPlugin({
            title: 'My Page', // 生成 html 中的 title
            filename: 'demo.html', // 生成 html 的文件名
            template: 'xxx/xxx/demo.html', // 模板路徑
            chunks: ['manifest', 'vendor', 'demo'], // 所要包含的模塊
            inject: true, // 是否注入資源
        })
    ]
    
    ...
}

以上是單模板的配置,那么如果是多模板只要繼續(xù)往 plugins 數(shù)組中添加 HtmlWebpackPlugin 即可,但是為了和多入口一樣能夠靈活的獲取 pages 目錄下所有模板文件并進(jìn)行配置,我們可以在 utils.js 中添加多模板的讀取解析方法:

/* utils.js */
 
// 多頁(yè)面輸出配置
// 與上面的多頁(yè)面入口配置相同,讀取 page 文件夾下的對(duì)應(yīng)的 html 后綴文件,然后放入數(shù)組中
exports.htmlPlugin = configs => {
    let entryHtml = glob.sync(PAGE_PATH + '/*/*.html')
    let arr = []
    
    entryHtml.forEach(filePath => {
        let filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
        let conf = {
            template: filePath, // 模板路徑
            filename: filename + '.html', // 生成 html 的文件名
            chunks: ['manifest', 'vendor',  filename],
            inject: true,
        }
        
        // 如果有自定義配置可以進(jìn)行 merge
        if (configs) {
            conf = merge(conf, configs)
        }
        
        // 針對(duì)生產(chǎn)環(huán)境配置
        if (process.env.NODE_ENV === 'production') {
            conf = merge(conf, {
                minify: {
                    removeComments: true, // 刪除 html 中的注釋代碼
                    collapseWhitespace: true, // 刪除 html 中的空白符
                    // removeAttributeQuotes: true // 刪除 html 元素中屬性的引號(hào)
                },
                chunksSortMode: 'manual' // 按 manual 的順序引入
            })
        }
        
        arr.push(new HtmlWebpackPlugin(conf))
    })
    
    return arr
}

這里解讀一下代碼: 

導(dǎo)出 htmlPlugin 函數(shù):

exports.htmlPlugin = configs => {
    let entryHtml = glob.sync(PAGE_PATH + '/*/*.html');
    let arr = [];
  • htmlPlugin 函數(shù)接收一個(gè)可選的 configs 參數(shù),用于自定義配置。
  • 使用 glob.sync 方法讀取 PAGE_PATH 下的所有 HTML 文件,并將路徑存儲(chǔ)在 entryHtml 數(shù)組中。

遍歷 HTML 文件:

entryHtml.forEach(filePath => {
    let filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
  • 對(duì)每個(gè)找到的 HTML 文件進(jìn)行遍歷,提取文件名(去掉路徑和擴(kuò)展名)。

創(chuàng)建配置對(duì)象:

    let conf = {
        template: filePath, // 模板路徑
        filename: filename + '.html', // 生成 HTML 的文件名
        chunks: ['manifest', 'vendor', filename],
        inject: true,
    };
  • conf 對(duì)象包含了 HtmlWebpackPlugin 所需的配置信息:
    • template: 指定當(dāng)前 HTML 文件作為模板。
    • filename: 生成的 HTML 文件的名稱(chēng)。
    • chunks: 指定需要引入的 JS 文件。
    • inject: 設(shè)置為 true,自動(dòng)注入 JS 文件。

合并自定義配置:

    if (configs) {
        conf = merge(conf, configs);
    }

如果提供了自定義配置 configs,使用 merge 函數(shù)合并配置。

生產(chǎn)環(huán)境配置:

 if (process.env.NODE_ENV === 'production') {
        conf = merge(conf, {
            minify: {
                removeComments: true, // 刪除 HTML 中的注釋代碼
                collapseWhitespace: true, // 刪除 HTML 中的空白符
            },
            chunksSortMode: 'manual' // 按 manual 的順序引入
        });
    }
  • 如果當(dāng)前環(huán)境是生產(chǎn)環(huán)境,合并額外的配置以?xún)?yōu)化輸出的 HTML 文件,例如:
    • minify: 提供 HTML 最小化的選項(xiàng)。
    • chunksSortMode: 指定引入 JS 文件的順序。

推送 HtmlWebpackPlugin 實(shí)例到數(shù)組:

arr.push(new HtmlWebpackPlugin(conf));

將每個(gè) HtmlWebpackPlugin 實(shí)例推入 arr 數(shù)組中。

以上我們?nèi)匀皇鞘褂?glob 讀取所有模板文件,然后將其遍歷并設(shè)置每個(gè)模板的 config,同時(shí)針對(duì)一些自定義配置和生產(chǎn)環(huán)境的配置進(jìn)行了 merge 處理,其中自定義配置的功能我會(huì)在下節(jié)進(jìn)行介紹,這里介紹一下生產(chǎn)環(huán)境下 minify 配置的作用:將 html-minifier 的選項(xiàng)作為對(duì)象來(lái)縮小輸出

html-minifier 是一款用于縮小 html 文件大小的工具,其有很多配置項(xiàng)功能,包括上述所列舉的常用的刪除注釋、空白、引號(hào)等。

當(dāng)我們編寫(xiě)完了多模板的方法后,我們同樣可以在 vue.config.js 中進(jìn)行配置,與多入口不同的是我們?cè)?configureWebpack 中不能直接替換 plugins 的值,因?yàn)樗€包含了其他插件,使用 return 返回一個(gè)對(duì)象來(lái)進(jìn)行 merge 操作

/* vue.config.js */
 
const utils = require('./build/utils')
 
module.exports = {
    ...
    
    configureWebpack: config => {
        config.entry = utils.getEntries() // 直接覆蓋 entry 配置
        
        // 使用 return 一個(gè)對(duì)象會(huì)通過(guò) webpack-merge 進(jìn)行合并,plugins 不會(huì)置空
        return {
            plugins: [...utils.htmlPlugin()]
        }
    },
    
    ...
}

如此我們多頁(yè)應(yīng)用的多入口和多模板的配置就完成了,這時(shí)候我們運(yùn)行命令 yarn build 后你會(huì)發(fā)現(xiàn) dist 目錄下生成了 3 個(gè) html 文件,分別是 index.html、page1.html 和 page2.html。

使用 pages 配置

其實(shí),在 vue.config.js 中,我們還有一個(gè)配置沒(méi)有使用,便是 pages。pages 對(duì)象允許我們?yōu)閼?yīng)用配置多個(gè)入口及模板,這就為我們的多頁(yè)應(yīng)用提供了開(kāi)放的配置入口。官方示例代碼如下:

/* vue.config.js */
module.exports = {
pages: {
    index: {
        entry: 'src/index/main.js',
        template: 'public/index.html',
        filename: 'index.html',
        title: 'Index Page',
        chunks: ['chunk-vendors', 'chunk-common', 'index']
    },
    subpage: 'src/subpage/main.js'
}
}
  • 首頁(yè) index 的配置:

    • entry: 指定頁(yè)面的入口文件,這里是 src/index/main.js。
    • template: 指定模板文件的路徑,這里是 public/index.html。該模板用于生成最終的 HTML 文件。
    • filename: 指定生成的 HTML 文件的名稱(chēng),在構(gòu)建后會(huì)輸出到 dist/index.html
    • title: 設(shè)置頁(yè)面的標(biāo)題。在模板文件中,應(yīng)該使用 <title><%= htmlWebpackPlugin.options.title %></title> 來(lái)動(dòng)態(tài)設(shè)置標(biāo)題。
    • chunks: 指定在此頁(yè)面中包含的塊,默認(rèn)為提取出來(lái)的通用 chunk 和 vendor chunk。這里包括了 chunk-vendorschunk-common 和 index。
  • 子頁(yè)面 subpage 的配置:

    • subpage 使用字符串格式,只指定了入口文件 src/subpage/main.js。在這種情況下,模板文件會(huì)默認(rèn)為 public/subpage.html,如果不存在,則回退到 public/index.html。輸出的文件名會(huì)被推導(dǎo)為 subpage.html。

我們不難發(fā)現(xiàn),pages 對(duì)象中的 key 就是入口的別名,而其 value 對(duì)象其實(shí)是入口 entry 和模板屬性的合并,這樣我們上述介紹的獲取多入口和多模板的方法就可以合并成一個(gè)函數(shù)來(lái)進(jìn)行多頁(yè)的處理,合并后的 setPages 方法如下:

// pages 多入口配置
exports.setPages = configs => {
    let entryFiles = glob.sync(PAGE_PATH + '/*/*.js')
    let map = {}
 
    entryFiles.forEach(filePath => {
        let filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
        let tmp = filePath.substring(0, filePath.lastIndexOf('\/'))
 
        let conf = {
            // page 的入口
            entry: filePath, 
            // 模板來(lái)源,這里假設(shè)每個(gè) JS 文件對(duì)應(yīng)一個(gè)同名的 HTML 文件
            template: tmp + '.html', 
            // 在 dist/index.html 的輸出HTML 文件
            filename: filename + '.html', 
            // 頁(yè)面模板需要加對(duì)應(yīng)的js腳本,如果不加這行則每個(gè)頁(yè)面都會(huì)引入所有的js腳本
            chunks: ['manifest', 'vendor', filename], 
            inject: true,
        };
 
        if (configs) {
            conf = merge(conf, configs)
        }
 
        if (process.env.NODE_ENV === 'production') {
            conf = merge(conf, {
                minify: {
                    removeComments: true, // 刪除 html 中的注釋代碼
                    collapseWhitespace: true, // 刪除 html 中的空白符
                    // removeAttributeQuotes: true // 刪除 html 元素中屬性的引號(hào)
                },
                chunksSortMode: 'manual'// 按 manual 的順序引入
            })
        }
 
        map[filename] = conf
    })
 
    return map
}

上述代碼我們 return 出的 map 對(duì)象就是 pages 所需要的配置項(xiàng)結(jié)構(gòu),我們只需在 vue.config.js 中引用即可:

/* vue.config.js */
 
const utils = require('./build/utils')
 
module.exports = {
    ...
    
    pages: utils.setPages(),
    
    ...
}

這樣我們多頁(yè)應(yīng)用基于 pages 配置的改進(jìn)就大功告成了,當(dāng)你運(yùn)行打包命令來(lái)查看輸出結(jié)果的時(shí)候,你會(huì)發(fā)現(xiàn)和之前的方式相比并沒(méi)有什么變化,這就說(shuō)明這兩種方式都適用于多頁(yè)的構(gòu)建,但是這里還是推薦大家使用更便捷的 pages 配置。

拓展

1.多頁(yè)應(yīng)用相比單頁(yè)應(yīng)用有哪些優(yōu)點(diǎn)和缺點(diǎn)? 多頁(yè)面應(yīng)用(MPA) 優(yōu)點(diǎn)

SEO友好:

MPA的每個(gè)頁(yè)面都有獨(dú)立的URL,容易被搜索引擎索引,對(duì)于需要良好SEO表現(xiàn)的應(yīng)用(如電商網(wǎng)站、博客等)尤為重要。

初次加載速度快:

每個(gè)頁(yè)面都是獨(dú)立的HTML文檔,初始請(qǐng)求時(shí)只加載當(dāng)前頁(yè)面的資源,因而加載速度通常較快。

簡(jiǎn)單的框架:

代碼結(jié)構(gòu)清晰,各頁(yè)面相對(duì)獨(dú)立,適合于大中型團(tuán)隊(duì)的分工開(kāi)發(fā)。每個(gè)頁(yè)面可以使用不同的框架或技術(shù)棧。

更好的瀏覽器兼容性:

MPA通常與傳統(tǒng)的網(wǎng)頁(yè)架構(gòu)相似,可能對(duì)老舊瀏覽器有更好的支持。

易于管理狀態(tài):

由于每個(gè)頁(yè)面是獨(dú)立加載的,不需要管理復(fù)雜的狀態(tài)(如 SPA 中的全局狀態(tài)管理),開(kāi)發(fā)相對(duì)簡(jiǎn)單。 缺點(diǎn)

用戶(hù)體驗(yàn)較差:

每次頁(yè)面切換都需要重新加載整個(gè)頁(yè)面,造成明顯的閃爍和延遲,用戶(hù)體驗(yàn)相對(duì)較差。

資源加載冗余:

各個(gè)頁(yè)面可能會(huì)重復(fù)加載相同的資源(如 CSS、JS),造成網(wǎng)絡(luò)資源浪費(fèi)。

復(fù)雜的路由管理:

隨著頁(yè)面數(shù)量的增加,管理路由和導(dǎo)航可能會(huì)變得復(fù)雜。

開(kāi)發(fā)效率低:

需要為每個(gè)頁(yè)面單獨(dú)進(jìn)行開(kāi)發(fā)和維護(hù),可能會(huì)影響整體開(kāi)發(fā)效率。 單頁(yè)面應(yīng)用(SPA) 優(yōu)點(diǎn)

更快的用戶(hù)體驗(yàn):

通過(guò) AJAX 和動(dòng)態(tài)更新頁(yè)面內(nèi)容,用戶(hù)在不同頁(yè)面間切換時(shí)不需要重新加載整個(gè)頁(yè)面,提供更流暢的體驗(yàn)。

資源共享:

所有頁(yè)面共享相同的資源(如 JS、CSS),減少了加載時(shí)間和服務(wù)器請(qǐng)求次數(shù)。

動(dòng)態(tài)內(nèi)容更新:

SPA可以通過(guò) API 動(dòng)態(tài)加載數(shù)據(jù),實(shí)現(xiàn)更豐富的用戶(hù)交互,而無(wú)需刷新頁(yè)面。

更好的狀態(tài)管理:

使用狀態(tài)管理庫(kù)(如 Vuex、Redux)可以集中管理應(yīng)用狀態(tài),適合復(fù)雜的用戶(hù)交互。

開(kāi)發(fā)效率:

可以在同一個(gè)頁(yè)面中不斷更新內(nèi)容,減少重新加載的需要,提高開(kāi)發(fā)效率。 缺點(diǎn)

SEO挑戰(zhàn):

SPA的內(nèi)容通常是通過(guò) JavaScript 動(dòng)態(tài)加載,傳統(tǒng)搜索引擎對(duì)這種內(nèi)容的索引能力較弱,可能影響SEO。

首次加載速度慢:

首次訪(fǎng)問(wèn)時(shí)需要加載所有的 JavaScript 和 CSS 資源,可能造成加載時(shí)間較長(zhǎng)。

復(fù)雜的路由和狀態(tài)管理:

SPA需要處理復(fù)雜的路由和狀態(tài)管理,開(kāi)發(fā)者需要花費(fèi)更多時(shí)間來(lái)設(shè)計(jì)和實(shí)現(xiàn)。

瀏覽器兼容性:

對(duì)于某些老舊的瀏覽器,SPA可能存在兼容性問(wèn)題,尤其是與新特性相關(guān)的功能。chunksSortMode 除了文中介紹的 manual 手動(dòng)排序外,還有哪些排序方式? 2.chunksSortMode 除了文中介紹的 manual 手動(dòng)排序外,還有哪些排序方式?

常見(jiàn)的排序方式

none:

不對(duì) chunks 進(jìn)行排序,保持 Webpack 生成 chunk 的原始順序。

auto:

自動(dòng)排序,這通常是基于 chunk 的名稱(chēng)和文件大小進(jìn)行排序。Webpack 會(huì)嘗試根據(jù)某種邏輯來(lái)決定 chunks 的順序,通常是將較小的 chunk 放在前面。

dependency:

根據(jù) chunks 之間的依賴(lài)關(guān)系進(jìn)行排序,確保在某個(gè) chunk 被使用之前,所有它依賴(lài)的 chunk 都已經(jīng)加載。

size:

根據(jù) chunk 的大小進(jìn)行排序,較大的 chunk 會(huì)被放在后面,較小的 chunk 會(huì)被放在前面。

name:

根據(jù) chunk 的名稱(chēng)進(jìn)行字母排序。通常在構(gòu)建大型應(yīng)用時(shí),使用名稱(chēng)排序可以更好地控制輸出的順序。manual: 開(kāi)發(fā)者需要自己維護(hù) chunks 的順序 3.glob 中 *** 的區(qū)別是什么 *(星號(hào)) 匹配文件或目錄的任意名稱(chēng)* 可以匹配零個(gè)或多個(gè)字符,但不包括路徑分隔符(如 / 或 \)。使用場(chǎng)景: 匹配當(dāng)前目錄下的所有文件和目錄。匹配特定類(lèi)型的文件,如 *.js 匹配所有 JavaScript 文件。

示例:

*.js 匹配當(dāng)前目錄下所有以 .js 結(jié)尾的文件。dir/* 匹配 dir 目錄下的所有文件和目錄,但不匹配 dir/subdir 中的內(nèi)容。 **(雙星號(hào)) 匹配任意深度的目錄** 可以匹配零個(gè)或多個(gè)目錄,并且可以跨越多個(gè)路徑分隔符。使用場(chǎng)景: 當(dāng)你想要匹配某個(gè)目錄及其所有子目錄中的文件時(shí),使用 ** 是非常方便的。

示例:

**/*.js 匹配當(dāng)前目錄及所有子目錄下的所有 JavaScript 文件。dir/** 匹配 dir 目錄及其所有子目錄下的所有文件和目錄。 舉個(gè)例子

假設(shè)有以下目錄結(jié)構(gòu):

project/
├── file1.js
├── file2.txt
├── dir/
│   ├── file3.js
│   └── subdir/
│       └── file4.js

使用 *.js:

匹配結(jié)果: file1.js

使用 dir/*:

匹配結(jié)果: dir/file3.js

使用 **/*.js:

匹配結(jié)果: file1.jsdir/file3.jsdir/subdir/file4.js

使用 dir/**:

匹配結(jié)果: dir/file3.jsdir/subdirdir/subdir/file4.js

總結(jié)

* 用于匹配當(dāng)前目錄下的文件或目錄的名稱(chēng),不跨越目錄。** 用于匹配任意深度的目錄和子目錄,適合需要遍歷整個(gè)目錄樹(shù)的場(chǎng)景。

以上就是Vue使用pages構(gòu)建多頁(yè)應(yīng)用的實(shí)現(xiàn)步驟的詳細(xì)內(nèi)容,更多關(guān)于Vue pages多頁(yè)應(yīng)用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue實(shí)現(xiàn)鼠標(biāo)滑動(dòng)預(yù)覽視頻封面組件示例詳解

    vue實(shí)現(xiàn)鼠標(biāo)滑動(dòng)預(yù)覽視頻封面組件示例詳解

    這篇文章主要為大家介紹了vue實(shí)現(xiàn)鼠標(biāo)滑動(dòng)預(yù)覽視頻封面組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue自定義指令詳解

    Vue自定義指令詳解

    這篇文章主要為大家介紹了Vue自定義指令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • vue.config.js配置proxy代理產(chǎn)生404錯(cuò)誤的原因及解決

    vue.config.js配置proxy代理產(chǎn)生404錯(cuò)誤的原因及解決

    這篇文章主要介紹了vue.config.js配置proxy代理產(chǎn)生404錯(cuò)誤的原因及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 快速了解vue-cli 3.0 新特性

    快速了解vue-cli 3.0 新特性

    vue-cli 是 vue 官方團(tuán)隊(duì)推出的一款快速開(kāi)發(fā) vue 項(xiàng)目的構(gòu)建工具,具有開(kāi)箱即用并且提供簡(jiǎn)潔的自定義配置等功能。這篇文章主要介紹了快速了解vue-cli 3.0 新特性,需要的朋友可以參考下
    2018-02-02
  • VUE入門(mén)學(xué)習(xí)之事件處理

    VUE入門(mén)學(xué)習(xí)之事件處理

    這篇文章主要介紹了vue事件處理原理及過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 基于vue+axios+lrz.js微信端圖片壓縮上傳方法

    基于vue+axios+lrz.js微信端圖片壓縮上傳方法

    這篇文章主要介紹了基于vue+axios+lrz.js微信端圖片壓縮上傳方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 關(guān)于怎么在vue項(xiàng)目里寫(xiě)react詳情

    關(guān)于怎么在vue項(xiàng)目里寫(xiě)react詳情

    本篇文章是在vue項(xiàng)目里寫(xiě)tsx的一篇介紹。其實(shí)vue里面寫(xiě)jsx也挺有意思的,接下來(lái)小編九給大家詳細(xì)介紹吧,感興趣的小伙伴請(qǐng)參考下面的文章內(nèi)容
    2021-09-09
  • 詳解vue中router-view組件的生成原理

    詳解vue中router-view組件的生成原理

    在vue的使用過(guò)程中,有一個(gè)組件,幾乎是必用的,那就是router-view,它是所有組件的入口,是單頁(yè)面系統(tǒng)的一把利劍,如果你的系統(tǒng)是火箭,那么router-view無(wú)疑將是這艘火箭的北斗衛(wèi)星,本文將給大家介紹vue中的router-view組件是如何生成的,感興趣的朋友可以參考下
    2024-01-01
  • Vue組件間通信 Vuex的用法解析

    Vue組件間通信 Vuex的用法解析

    這篇文章主要介紹了Vue組件間通信-Vuex,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • vue實(shí)現(xiàn)移動(dòng)端input上傳視頻、音頻

    vue實(shí)現(xiàn)移動(dòng)端input上傳視頻、音頻

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端input上傳視頻、音頻,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評(píng)論

荆门市| 新闻| 丹寨县| 渝中区| 阳城县| 都安| 永川市| 长岛县| 卢湾区| 丹东市| 元朗区| 临湘市| 龙南县| 德格县| 峨眉山市| 澄城县| 会同县| 和顺县| 乐亭县| 绩溪县| 安塞县| 达尔| 手游| 伊宁市| 教育| 寿阳县| 朝阳市| 肇州县| 厦门市| 隆化县| 樟树市| 诸暨市| 惠东县| 宣化县| 阿巴嘎旗| 安庆市| 乳山市| 沙洋县| 宁远县| 永新县| 清涧县|