小编Mad*_*inX的帖子

“Nuxtjs SPA 模式”和“没有 Nuxtjs 的 Vuejs”的区别

我写了一个简单的 Nuxtjs 项目。根据我从 Nuxtjs 文档中学到的知识以及我在测试时的经验,我无法理解“Nuxtjs SPA 模式”和“没有 Nuxtjs 的 Vuejs”之间的区别

例如在以下页面中:

// pages/index.vue

<template>
    <div class="userip">{{userip}}</div>
</template>

<script>
    export default {
        data() {
           return {
               userip: 'in process ...'
           }
        },

        async asyncData() {
            let res = await fetch("https://api6.ipify.org?format=json")
            .then(response => response.json());

            return {userip: res.ip}
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

如果我运行以下命令:

cmd: nuxt generate
Run Code Online (Sandbox Code Playgroud)

虽然 Nuxtjs 配置为通用模式,但它为我提供了在用户浏览器上也具有 SPA 功能的预渲染文件。比如build之后的文件如下:

// dist/index.html

<body>
  ...
    <div class="userip">14.182.108.22</div>
  ...
</body>
Run Code Online (Sandbox Code Playgroud)

当我跑步时

cmd: nuxt start
Run Code Online (Sandbox Code Playgroud)

或者

cmd: nuxt dev
Run Code Online (Sandbox Code Playgroud)

不生成预渲染文件,然后它会生成一个真正的 SSR,它会在每个请求上都被渲染。现在,如果我运行以下命令:

cmd: nuxt generate 
Run Code Online (Sandbox Code Playgroud)

而在 Nuxtjs …

prerender vue.js server-side-rendering nuxt.js

7
推荐指数
1
解决办法
2000
查看次数

直接定义方法和属性或在js中使用getter

我正在开发一些 JS 代码并且有一个性能问题。考虑到我有一个包含许多方法和属性的大对象:

const obj = {
  prop1: 'some value',
  ...
  prop1000: 'some value',
  method1: someMethod,
  ...
  method1000: someMethod,
}
Run Code Online (Sandbox Code Playgroud)

第一个解决方案
我想如果我使用 getter 来获取每个字段(prop 或方法),它将帮助运行时引擎在不需要时在内存中加载更少的字段。例如:

const obj1 = {
  get prop1() { return 'some value'; },
  ...
  get prop1000() { return 'some value'; },
  get method1() { return someMethod; },
  ...
  get method1000() { return someMethod; },
}
Run Code Online (Sandbox Code Playgroud)

第二种解决方案
请注意,在这种情况下,我不需要任何二传手。
因此,当我在获取 obj 时使用第二种解决方案时,在我直接调用 getter 之前,不会自动获取任何字段。
现在的问题是,第二种解决方案是否真的提高了内存使用率和运行时性能,或者至少是一个好的做法?

javascript getter performance

6
推荐指数
0
解决办法
48
查看次数