闽公网安备 35020302035485号
服务端渲染(Server-Side Rendering,简称 SSR)是一种将网页内容在服务器端动态生成并发送给客户端的技术。传统的客户端渲染(Client-Side Rendering,简称 CSR)是在客户端浏览器中使用 JavaScript 动态生成页面内容。
在传统的客户端渲染中,浏览器首先下载一个空的 HTML 页面,然后通过 JavaScript 请求数据并生成页面内容。这种方式的优点是可以提供更丰富的交互和动态效果,但也存在一些缺点。例如,搜索引擎爬虫可能无法正确解析和索引页面内容,导致 SEO(搜索引擎优化)问题。同时,初始加载时用户可能会看到空白的页面或者出现闪烁的内容。
相比之下,服务端渲染通过在服务器上预先生成完整的 HTML 页面,将其发送给客户端浏览器。这样,浏览器在接收到页面时就能够立即显示完整的内容,而不需要等待 JavaScript 的下载和执行。这样可以提高页面的加载速度和首次渲染速度,并且对于搜索引擎爬虫来说更容易解析和索引页面内容,有利于 SEO。
需要注意的是,服务端渲染不是完全取代客户端渲染,而是根据需求和场景选择合适的渲染方式。一些页面或组件可能更适合使用客户端渲染,以提供更好的交互和动态效果。而对于需要更好的首次加载速度和 SEO 的页面,服务端渲染则是一个有价值的选择。
npx nuxi@latest init <project-name> cd project-name npm i npm run dev

另外,Nuxt.js 使用 Webpack 和 vue-loader 、 babel-loader 来处理代码的自动化构建工作(如打包、代码分层、压缩等等)。
基于 Vue.js 自动代码分层 服务端渲染 强大的路由功能,支持异步数据 静态文件服务 ES2015+ 语法支持 打包和压缩 JS 和 CSS HTML 头部标签管理 本地开发支持热加载 集成 ESLint 支持各种样式预处理器: SASS、LESS、 Stylus 等等 支持 HTTP/2 推送工作流程

├── README.md ├── components ├── dist ├── jest.config.js ├── node_modules ├── nuxt.config.js ├── package.json ├── pages ├── plugins ├── static ├── store ├── test ├── tree.txt └── yarn.locknuxt的配置文件在nuxt.config.js文件中
export default {
// Global page headers: https://go.nuxtjs.dev/config-head
head: {
title: 'nuxt-demo',
htmlAttrs: {
lang: 'en'
},
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: '' },
{ name: 'format-detection', content: 'telephone=no' }
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
},
// Global CSS: https://go.nuxtjs.dev/config-css
css: [
'ant-design-vue/dist/antd.css'
],
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: [
'@/plugins/antd-ui'
],
// Auto import components: https://go.nuxtjs.dev/config-components
components: true,
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
buildModules: [
],
// Modules: https://go.nuxtjs.dev/config-modules
modules: [
],
// Build Configuration: https://go.nuxtjs.dev/config-build
build: {
}
}
这里主要讲一下nuxt的路由,Nuxt.js 依据 pages 目录结构自动生成 vue-router 模块的路由配置。要在页面之间使用路由,我们建议使用<nuxt-link> 标签。pages/ --| user/ -----| index.vue -----| one.vue --| index.vue那么,Nuxt.js 自动生成的路由配置如下:
router: {
routes: [
{
name: 'index',
path: '/',
component: 'pages/index.vue'
},
{
name: 'user',
path: '/user',
component: 'pages/user/index.vue'
},
{
name: 'user-one',
path: '/user/one',
component: 'pages/user/one.vue'
}
]
}
还有其他的路由方式,比如动态路由,路由参数校验,嵌套路由和动态嵌套路由等等,可以查看nuxt的路由文档
Next.js 是一个开源的 React 框架,用于构建服务器渲染(SSR)和静态生成(SSG)的应用程序。它结合了 React 的声明性和灵活性以及服务器端渲染的性能优势,使得构建高性能的应用变得更加简单。
npx create-next-app my-app2.定义页面:在 pages 目录下创建您的页面文件,每个文件将映射到一个路由。
// 堆代码 duidaima.com
// pages/index.js
function HomePage() {
return <h1>Hello, Next.js!</h1>;
}
export default HomePage;
3.编写组件:在页面文件中编写 React 组件,可以使用 JSX 语法和任何其他 React 功能。npm run dev
5.构建和部署:当您准备好部署应用程序时,使用构建命令生成优化的生产版本,并将其部署到您选择的托管平台上。
Next.js 是一个强大而灵活的框架,为 React 开发者提供了构建高性能应用程序的便利性。它的服务器渲染和静态生成功能、热模块替换和自动代码拆分等特性使得开发过程更加高效和愉快。如果您正在寻找一种简单而强大的方式来构建 React 应用程序,不妨试试 Next.js!
在现代 Web 开发中,构建高性能的应用程序是至关重要的。Nest.js 是一个基于 TypeScript 的框架,它提供了一种简单而强大的方式来构建可扩展和模块化的应用程序。本文将介绍 Nest.js 的基本概念和特性,并提供代码示例,帮助您快速入门。
Nest.js 是一个基于 TypeScript 的框架,用于构建可扩展和模块化的服务器端应用程序。它结合了 Angular 的依赖注入和模块化、Express 的灵活性和 Node.js 的性能优势,使得构建高性能的应用变得更加简单。
$ npm i -g @nestjs/cli $ nest new project-name2.定义控制器:在 src 目录下创建您的控制器文件,每个文件将映射到一个路由。
import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
}
3.定义模块:在 src 目录下创建您的模块文件,用于组织和管理应用程序中的组件。import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
@Module({
controllers: [CatsController],
})
export class AppModule {}
4.启动应用程序:运行启动命令,启动 Nest.js 应用程序,并访问 http://localhost:3000/cats 查看您的应用程序。$ npm run start
$ nest generate controller cats上述命令将在 src 目录下生成一个名为 cats.controller.ts 的控制器文件。
import { Controller, Get, Post, Put, Delete, Body, Param } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
@Get(':id')
findOne(@Param('id') id: string): string {
return `This action returns cat ${id}`;
}
@Post()
create(@Body() catData: any): string {
return `This action creates a new cat with the following data: ${JSON.stringify(catData)}`;
}
@Put(':id')
update(@Param('id') id: string, @Body() catData: any): string {
return `This action updates cat ${id} with the following data: ${JSON.stringify(catData)}`;
}
@Delete(':id')
remove(@Param('id') id: string): string {
return `This action removes cat ${id}`;
}
}
上述代码创建了以下路由和请求处理程序:import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
@Module({
controllers: [CatsController],
})
export class AppModule {}
上述代码将 CatsController 注册到 AppModule 模块中。$ npm run start现在,您可以通过发送不同的 HTTP 请求(GET、POST、PUT、DELETE)到相应的路由来测试增删改查接口。
这只是一个简单的示例,您可以根据需要扩展和定制接口的功能。Nest.js 还提供了更多的装饰器和功能,如请求体验证、异常处理、数据库集成等,以满足不同场景下的需求。
Nest.js 是一个强大而灵活的框架,为 TypeScript 开发者提供了构建可扩展和模块化应用程序的便利性。它的依赖注入、模块化和路由系统等特性使得开发过程更加高效和愉快。如果你正在寻找一种简单而强大的方式来构建服务器端应用程序,不妨试试 Nest.js!