首页新闻动态正文

prerender-spa-plugin配置,vue脚手架配置预渲染【黑马web前端】

更新时间:2019年07月26日 11时17分37秒 来源:黑马程序员论坛



        预渲染: 便于seo优化; 既查看源码 是 html格式
        用到插件: cnpm install prerender - spa - plugin--save
        脚手架2 .0:(自己的是2 .0)

        1.build / webpack.prod.conf.js 配置

        const PrerenderSPAPlugin = require('prerender-spa-plugin')
        const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
        const webpackConfig = merge(baseWebpackConfig, {
            plugins: [
                // vue-cli生成的配置就有了
                new HtmlWebpackPlugin({
                    filename: config.build.index,
                    template: 'index.html',
                    inject: true,
                    minify: {
                        removeComments: true,
                        collapseWhitespace: true,
                        removeAttributeQuotes: true
                    },
                    chunksSortMode: 'dependency'
                }),
                // 配置PrerenderSPAPlugin
                new PrerenderSPAPlugin({
                    // 生成文件的路径,也可以与webpakc打包的一致。
                    staticDir: path.join(__dirname, '../dist'),

                    // 对应自己的所有路由文件,比如index有参数,就需要写成 /index/param1。这个其实不需要;千万不                         要加'/'这个     嵌套路由得commonquestion直接写即可
                    routes: ['index', '...', '/commonQuestion', '/commonQuestion/questionList',                                          '/commonQuestion/questionDetailInfo'],
                    //  ;
                    renderer: new Renderer({
                        inject: { // 可选;最好还是用
                            foo: 'bar'
                        },
                        headless: false, // 可选;最好用
                        renderAfterTime: 5000, // 通过实践是必选  官网说可选有误    一定要必选
                        renderAfterDocumentEvent: 'render-event' // 可选;最好用
                    })
                }),
            ]
        })

        2. 路由得index.js添加属性:

        ​   mode: 'history',

        3. 修改config / index.js 中的build的 assetsPublicPath: ‘/’ ;不然会导致刷新页面路径错乱导致样式或者js丢             失;

        4. 修改main.js

        new Vue({
            el: '#app',
            router,
            store, // 如果需要了切记引入啊   切记需要挂载的全部挂载上去
            render: h => h(App),
            mounted() {
                document.dispatchEvent(new Event('render-event'))
            }
        })

        脚手架3 .0( 未验证, 应该行)
        1. build / webpack.prod.conf.js 配置

        const PrerenderSPAPlugin = require('prerender-spa-plugin');
        const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
        const path = require('path');
        module.exports = {
            configureWebpack: config => {
                if (process.env.NODE_ENV !== 'production') return;
                return {
                    plugins: [
                        new PrerenderSPAPlugin({
                            // 生成文件的路径,也可以与webpakc打包的一致。
                            // 下面这句话非常重要!!!
                            // 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的                              时候只会卡着不动。
                            staticDir: path.join(__dirname, 'dist'),
                            // 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。
                            routes: ['/', '/product', '/about'],
                            // 这个很重要,如果没有配置这段,也不会进行预编译
                            renderer: new Renderer({
                                inject: {
                                    foo: 'bar'
                                },
                                headless: false,
                                renderAfterTime: 5000, //   必选哈
                                // 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事                                  件名称要对应上。
                                renderAfterDocumentEvent: 'render-event'
                            })
                        }),
                    ],
                };
            }
        }

        2. main.js配置

        new Vue({
            router,
            store,
            render: h => h(App),
            mounted() {
                document.dispatchEvent(new Event('render-event'))
            }
        }).$mount('#app')


        //其他修改同2.0;




推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!