Nuxt去掉window.__NUXT__ 的影响,拒绝走弯路

对于这个需求,我只能说鱼和熊掌不可兼得

不管怎么样都是有影响的,  希望各位少走弯路,看详解(在决定用不用)

第一种办法  修改渲染页面的源代码

修改文件路径: \node_modules\nuxt\node_modules@nuxt\core\node_modules@nuxt\vue-renderer\dist\vue-renderer.js

修改代码如下:

// 注释代码1, 禁止在页面初始化时添加window.__NUXT__代码
APP += ``;  

// 注释代码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,vue.js,es6,javascript,前端)