CSR - Client side render
SSR - Server side render
优点一: 性能好
优点二: 易于SEO搜索引擎优化
缺点: 开发成本高 (前端框架 + Node.js, 全栈)
应用场景:
1) 对性能要求高的系统,如移动端,弱网环境
2) 操作交互较简单的系统,否则复杂度会更高
如我的项目中的B端,不适合SSR,因为操作比较复杂
常见的SSR框架:
React - Next.js (Remix.js)
Vue - Nuxt.js
Next.js
安装:
npx create-next-app@latest
启动:
npm run dev
or
-------
npm run build
npm run start
-------
创建一个简单的网页并且访问:
可以在pages目录下面创建about.tsx,就可以用过localhost:xxx/about来访问了
API
在/api目录下
api的url为 localhost:3000/api/hello
静态资源
在/public目录下,可以创建一个/data,然后再创建一个info.json
就可以使用localhost:3000/data/info.json来访问静态资源
两种形式的pre-render
1) 静态生成(Static Generation)项目构建时,直接产出HTML文件
在静态页面中 请求数据
<p>{props.info}</p>
//只在build的时候执行
export async function getStaticProps() {
return {
props: {
info: "xxxx"
}
}
}
上面的代码仅会在构建的时候执行一次。每次请求的时候,都会返回一样的内容
2) Server-side rendering, 每次请求时动态生成HTML
一般需要动态获取数据并计算整合
与上面静态生成不同,使用以下函数
//每次请求的时候都会执行
export async function getServerSideProps() {
return {
props: {
info: "请求来的数据"
}
}
}
如何获取动态数据?
比如需要的api为localhost:3000/question/12345
可以在/src/pages/question/ 目录下面创建[id].tsx文件,在文件里面使用
即可获取id
同理, 如果要使用data数据
可以在/src/pages/stats/目录下面创建[data].tsx
然后在上面的函数中获取data即可
Comments
Post a Comment