First, make sure you have installed Node.js and yarn or npm. Then, create a new Nuxt.js project through the command line:
yarn create nuxt-app my-nuxt-project cd my-nuxt-project
During the creation process, you can choose whether you need options such as UI framework, preprocessor, etc., and configure them as needed.
Nuxt.js follows a specific directory structure, some of the key directories are as follows:
├── .nuxt/ # Automatically generated files, including compiled code and configuration ├── assets/ # Used to store uncompiled static resources, such as CSS, images, fonts ├── components/ # Custom Vue components ├── layouts/ # Application layout files, defining the general structure of the page │ └── default.vue # Default layout ├── middleware/ # Middleware files ├── pages/ # Application routes and views, each file corresponds to a route │ ├── index.vue # Default homepage │ └── [slug].vue # Dynamic routing example ├── plugins/ # Custom Vue.js plugins ├── static/ # Static resources, will be copied to the output directory as is ├── store/ # Vuex state management file │ ├── actions.js # Vuex actions │ ├── mutations.js # Vuex mutations │ ├── getters.js # Vuex getters │ └── index.js # Vuex store entry file ├── nuxt.config.js # Nuxt.js configuration file ├── package.json # Project dependencies and scripts └── yarn.lock # Or npm.lock, record dependency versions
Create an index.vue file in the pages/ directory. This is the homepage of the application:
<!-- pages/index.vue --> <template> <div> <h1>Hello from Nuxt.js SSR</h1> <p>{{ message }}</p> </div> </template> <script> export default { data() { return { message: 'This content is server-rendered!' }; }, asyncData() { // Here you can get data on the server side // The returned data will be used as the default value of data return { message: 'Data fetched on server' }; } }; </script>
The process of Nuxt.js page rendering is divided into two main stages: server-side rendering (SSR) and client-side rendering (CSR). Here are the detailed steps of Nuxt.js page rendering:
The user enters the URL in the browser and sends a request to the server.
After the server receives the request, it starts processing.
Nuxt.js uses the routes configuration in nuxt.config.js (if it exists) or automatically generates routes from the pages/ directory.
The corresponding page file is identified, such as pages/index.vue or pages/about.vue.
Nuxt.js looks for asyncData or fetch methods in the page component (if they exist).
These methods will run on the server side to get data from APIs or other data sources.
After the data is obtained, it will be serialized and injected into the page template.
Nuxt.js uses Vue.js's rendering engine to convert components and pre-fetched data into an HTML string.
The HTML string contains all the initial data required by the client, inlined in the