-
2.3 安装依赖并启动
-
2.4 浏览器查看效果
-
2.5 查看源代码
-
3 - 客户端渲染vs服务端渲染
-
- 3.1 运行架构对比
-
3.2 开发模式对比
-
3.3 特点优势总结
-
4 - vue框架中的服务端渲染
-
- 4.1 新建vue-ssr文件夹
-
4.2 把server文件夹中的文件拷贝进来
-
4.3 安装必要依赖
-
4.4 vue服务端渲染最小demo
-
4.5 浏览器访问
-
4.6 查看源代码
-
4.7 遗留问题
-
5 - 理解同构理念
-
6 - Nuxt.js框架使用
-
- 1. 使用nuxt.js创建一个ssr项目
-
2. 启动项目
-
3. 查看源代码
-
4. 搭建首页
-
5. 异步数据获取
-
- 1. 认识asyncData方法
-
2. 获取文章列表(移动端项目)
-
3. 渲染接口数据
-
4. 预览效果并查看源代码
-
7- 总结
-
- 7.1 服务端渲染和客户端渲染各自指什么?有什么特点?
-
7.2 同构的本质是什么?
-
7.3 Nuxt.js中如何实现异步数据获取(asyncData方法)?
server side render 前端页面的产生是由服务器端生成的,我们就称之为服务端渲染
1.1 新建server文件夹
server
1.2 生成一个node项目
npm init -y
1.3 安装express
express 官方文档
npm install express --save
1.4 服务端渲染小案例
app.js
const express = require(‘express’)
const app = express()
const port = 3000
// 当路径为跟路径,返回完整的html片段
app.get(‘/’, (req, res) => res.send(`
hi,hello
`))
app.listen(port, () => console.log(Example app listening on port ${port}!
))
1.5 运行查看效果
node app.js
1.6 打开浏览器
http://localhost:3000
1.7 右键查看源代码
总结:所谓的服务端渲染值得是页面的内容完全是由服务端侧决定到底要展示出什么内容
client side render 服务端只提供json格式的数据,渲染成什么样子由客户端通过js控制
通过vite快速创建一个基于vue框架的客户端渲染样例
2.1 新建client文件夹
client
2.2 生成一个vue项目
我们使用vite工具快速生成一个vue项目,https://vitejs.dev/
npm init @vitejs/app client-vue-app --template vue
2.3 安装依赖并启动
cd vue-app
npm install (or yarn
)
npm run dev (or yarn dev
)
2.4 浏览器查看效果
http://localhost:8080
2.5 查看源代码
结论:通过查看源代码我们发现,源代码并没有显示我们页面中实际渲染的内容,我们只看到一个main.js文件,和一个id为app的根元素,所以我们知道网页内容是通过js来动态的进行渲染的,js运行在浏览器,浏览器也就是客户端,这种由浏览器端的js做主导渲染网页内容的方式,我们就称之为客户端渲染
思考题:如何得知一个网站是哪种方式的渲染?
客户端渲染我们叫做CSR渲染方式,服务端渲染我们叫做SSR渲染
3.1 运行架构对比
说明
CSR执行流程:浏览器加载html文件 -> 浏览器下载js文件 -> 浏览器运行vue代码 -> 渲染页面
SSR执行流程:浏览器加载html文件 -> 服务端装填好内容 -> 返回浏览器渲染
3.2 开发模式对比
CSR:前后端通过接口JSON数据进行通信,各自开发互不影响
SSR:前后端分工搭配复杂,前端需要写好html模板交给后端,后端装填模板内容返给浏览器
3.3 特点优势总结
| | 客户端渲染(CSR) | 服务端渲染(SSR) |
| — | — | — |
| 首次渲染时间 | 长 | 很短 |
| seo支持 | 差 | 良好 |
| 前后端分工开发效率 | 快 | 慢 |
思考:如果我们的项目既想要使用vue高效率的开发项目,同时还想要首屏渲染时间很短,那该怎么办?
为了解决第3章节提出的问题,目前我们的vue组件都是在浏览器侧通过js渲染出来的,所以首次加载时间很慢,那么我们把vue组件交给服务端负责渲染,渲染为完整内容之后直接返给客户端,是不是就可以可以解决既想渲染快,还想继续使用vue进行开发的问题了?
4.1 新建vue-ssr文件夹
vue-ssr
4.2 把server文件夹中的文件拷贝进来
4.3 安装必要依赖
npm install vue vue-server-renderer --save
4.4 vue服务端渲染最小demo
app.js
const Vue = require(‘vue’)
const server = require(‘express’)()
const renderer = require(‘vue-server-renderer’).createRenderer()
server.get(‘*’, (req, res) => {
const app = new Vue({
data: {
url: req.url
},
template: <div>访问的 URL 是:{{ url }}</div>
,
})
renderer.renderToString(app, (err, html) => {
if (err) throw err
res.send(html)
})
})
server.listen(8888,() => console.log(Example app listening on port 8888!
))
4.5 浏览器访问
http://localhost:8888
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
Vue 面试题
1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?
…
算法
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
- 冒泡排序
- 选择排序
- 快速排序
- 二叉树查找: 最大值、最小值、固定值
- 二叉树遍历
- 二叉树的最大深度
- 给予链表中的任一节点,把它删除掉
- 链表倒叙
- 如何判断一个单链表有环
- 给定一个有序数组,找出两个数相加为一个目标数
…
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666
么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?
…
[外链图片转存中…(img-dbhfcBhw-1711021107467)]
算法
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
- 冒泡排序
- 选择排序
- 快速排序
- 二叉树查找: 最大值、最小值、固定值
- 二叉树遍历
- 二叉树的最大深度
- 给予链表中的任一节点,把它删除掉
- 链表倒叙
- 如何判断一个单链表有环
- 给定一个有序数组,找出两个数相加为一个目标数
…
[外链图片转存中…(img-2FrZB82t-1711021107468)]
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666