Nuxt去掉window."/>
Nuxt去掉window.
对于这个需求,我只能说鱼和熊掌不可兼得
不管怎么样都是有影响的, 希望各位少走弯路,看详解(在决定用不用)
第一种办法 修改渲染页面的源代码
修改文件路径: \node_modules\nuxt\node_modules@nuxt\core\node_modules@nuxt\vue-renderer\dist\vue-renderer.js
修改代码如下:
// 注释代码1, 禁止在页面初始化时添加window.__NUXT__代码
APP += `<script>${serializedSession}</script>`; // 注释代码2 禁止在页面路由改变时更新window.__NUXT__代码
hash.update(serializedSession);
cspScriptSrcHashes.push(`'${csp.hashAlgorithm}-${hash.digest('base64')}'`);
去掉之后呢,你会发现,源代码里不在渲染了,随之也带了影响
影响
一: 服务端,获取store的值出现问题
二:
nuxtServerInit
函数中存储在store中的数据,在客户端会出现获取不到值的问题
三:去掉后你会发现,接口竟然暴露在了network里
第二种办法 直接去掉script
下载一个工具包cheerio,这个工具包就像jquery一样,可以很方便的操作dom(我是这样理解的(~ ̄▽ ̄)~ ),关键就是在于如何通过这个工具找到window.__nuxt__然后移除它。
步骤一:安装cheerio
npm install cheerio
步骤二:修改nuxt.config.js
const cherrio = const cheerio = require('cheerio');
export default {
hooks: {'render:route': (url, result) => {this.$ = cheerio.load(result.html,{decodeEntities: false});this.$(`body script`).eq(0).remove();result.html = this.$.html()}}
}
额外影响(包含上边所有影响):
1. 在初始化页面的时候,会连续请求两次接口(第一次:服务端,第二次:客户端)
2. 在以打开新窗口的时候,会直接白屏(需要多点)
此文章不可用(遇到类似文章可以跳过,需要别的解决办法)
nuxt如何干掉window.__NUXT__这个script?
我们最后还是保留了这个,实在是没办法
如果有朋友解决这个问题,还请大佬指教一下
更多推荐
Nuxt去掉window.
发布评论