[フレーム]
BT

InfoQ Software Architects' Newsletter

A monthly overview of things you need to know as an architect or aspiring architect.

View an example

We protect your privacy.

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Unlock the full InfoQ experience

Unlock the full InfoQ experience by logging in! Stay updated with your favorite authors and topics, engage with content, and download exclusive resources.

Log In
or

Don't have an InfoQ account?

Register
  • Stay updated on topics and peers that matter to youReceive instant alerts on the latest insights and trends.
  • Quickly access free resources for continuous learningMinibooks, videos with transcripts, and training materials.
  • Save articles and read at anytimeBookmark articles to read whenever youre ready.

Topics

Choose your language

InfoQ Homepage News Nuxt 2.11.0 Released

Nuxt 2.11.0 Released

Jan 22, 2020 2 min read

Write for InfoQ

Feed your curiosity. Help 550k+ global
senior developers
each month stay ahead.
Get in touch

Nuxt.js, a Vue.js framework, recently released version 2.11.0 to provide better control over the removal of non-client or non-server code in third-party dependencies. Nuxt 2.11 also adds flexibility with conditional statements supporting the run-time evaluation of application templates.

Prior to Nuxt 2.11, developers could not use conditions within a Nuxt application template. Nuxt would load app.html with the Webpack HTML plugin, to internally evaluate templates. With this approach Nuxt could not evaluate templates like <% if (something) { %> ... <% } %> at run time. Instead, this code was code evaluated at build time.

Nuxt 2.11.0 removes this limitation through its new support for evaluating application templates at run-time, giving more flexibility to application developers, through a new block for run-time evaluation:

<html>
 <head>
 {{ HEAD }}
 {% if (ENV.NODE_ENV === 'dev') { %}
 <!-- debug scripts -->
 {% } else if (ENV.NODE_ENV === 'production') { %}
 <!-- production scripts -->
 {% } %}
 </head>
 <body>
 {{ APP }}
 </body>
</html>

Nuxt provides process.client and process.server configuration options that take care of separating client-side and server-side code. However, prior to Nuxt 2.11, developers could not easily manage client vs. server control within third-party dependencies. Now, with the optional removal of non-client or non-server code, the Webpack DefinePlugin will set the typeof window check to object on the client and undefined on the server, allowing source code to get removed by Webpack where appropriate.


In Nuxt 2.11.0, to improve performance, contenthash is now a preferred choice over chunkhash for better long-term caching. Chunkhash is the hash of the complete chunk while contenthash is the hash of the content of the file, which is different for each asset and this makes it a better way of identifying a file if the contents do not change. Using contenthash means that assets (like images or fonts) that are unlikely to change between deploys can be cached more efficiently.

In recent versions of Nuxt.js, on the client-side Nuxt would create a synthetic route initially, before VueRouter has initialized, so that plugins and middleware have something to work with at that early rendering stage. However, the initial route was created without taking the router's mode into consideration, creating a route with a normal path rather than a hash-based path. This confused nuxt-i18n's logic for redirecting users to the correct locale on initial navigation.
This bug gets fixed by passing the router mode to the getLocation function which now gets the correct path value as shown below.

Before Nuxt 2.11.0:

const path = getLocation(router.options.base)

Nuxt 2.11.0:

const path = getLocation(router.options.base, router.options.mode)

In previous versions of Nuxt, specifically in Nuxt 2.10.2, nested child routes were getting duplicated forward slash characters at the end of the path.

/about//contact/

In Nuxt 2.11.0, setting the trailingslash property of nested routes to true will no longer get double forward slash paths. Nested routes have the correct path structure as intended.

/about/contact

Also, the @nuxtjs/eslint-config dependency was updated to version 2.0.

To learn more about Nuxt.js version 2.11.0, refer to the Nuxt.js 2.11.0 release notes. Nuxt is a progressive framework based on Vue.js to create modern web applications. It is based on Vue.js official libraries (vue, vue-router and vuex) and powerful development tools (webpack, Babel and PostCSS).

Nuxt.js is available as open source software under the MIT license. Contributions are welcome via the Nuxt.js GitHub repository. Contributors should follow the Nuxt.js contribution guidelines.

Rate this Article

Adoption
Style

Related Content

The InfoQ Newsletter

A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. View an example

We protect your privacy.

BT

AltStyle によって変換されたページ (->オリジナル) /