当前播放: 34 | webpack实现SSR打包(上)
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:webpack与构建发展简史 (9讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 为什么需要构建工具
免费
04 | 前端构建演变之路
05 | 为什么选择webpack
06 | 初识webpack
07 | 环境搭建:安装webpack
免费
08 | webpack初体验:一个最简单的例子
09 | 通过npm script运行webpack
第二章:webpack基础用法 (12讲)
10 | webpack核心概念之entry
免费
11 | webpack核心概念之output
免费
12 | webpack核心概念之loaders
13 | webpack核心概念之plugins
14 | webpack核心概念之mode
15 | 解析ECMASCript 6和React JSX
16 | 解析CSS、Less和Sass
17 | 解析图片和字体
18 | webpack中的文件监听
19 | webpack中的热更新及原理分析
20 | 文件指纹策略:chunkhash、contenthash和hash
21 | HTML 、CSS和JavaScript代码压缩
第三章:webpack进阶用法 (16讲)
22 | 自动清理构建目录产物
23 | PostCSS插件autoprefixer自动补齐CSS3前缀
24 | 移动端CSS px自动转换成rem
25 | 静态资源内联
26 | 多页面应用打包通用方案
27 | 使用sourcemap
28 | 提取页面公共资源
29 | Tree Shaking的使用和原理分析
30 | Scope Hoisting使用和原理分析
31 | 代码分割和动态import
32 | 在webpack中使用ESLint
33 | webpack打包组件和基础库
34 | webpack实现SSR打包(上)
35 | webpack实现SSR打包(下)
36 | 优化构建时命令行的显示日志
37 | 构建异常和中断处理
第四章:编写可维护的webpack构建配置 (9讲)
38 | 构建配置包设计
39 | 功能模块设计和目录结构
40 | 使用ESLint规范构建脚本
41 | 冒烟测试介绍和实际运用
42 | 单元测试和测试覆盖率
43 | 持续集成和Travis CI
44 | 发布构建包到npm社区
45 | Git Commit规范和changelog生成
46 | 语义化版本(Semantic Versioning)规范格式
第五章:webpack构建速度和体积优化策略 (12讲)
47 | 初级分析:使用webpack内置的stats
48 | 速度分析:使用speed-measure-webpack-plugin
49 | 体积分析:使用webpack-bundle-analyzer
50 | 使用高版本的webpack和Node.js
51 | 多进程/多实例构建
52 | 多进程并行压缩代码
53 | 进一步分包:预编译资源模块
54 | 充分利用缓存提升二次构建速度
55 | 缩小构建目标
56 | 使用Tree Shaking擦除无用的JavaScript和CSS
57 | 使用webpack进行图片压缩
58 | 使用动态Polyfill服务
第六章:通过源代码掌握webpack打包原理 (9讲)
59 | webpack启动过程分析
60 | webpack-cli源码阅读
61 | Tapable插件架构与Hooks设计
62 | Tapable是如何和webpack进行关联起来的?
63 | webpack流程篇:准备阶段
64 | webpack流程篇:模块构建和chunk生成阶段
65 | webpack流程篇:文件生成
66 | 动手编写一个简易的webpack(上)
67 | 动手编写一个简易的webpack(下)
第七章:编写loader和插件 (7讲)
68 | loader的链式调用与执行顺序
69 | 使用loader-runner高效进行loader的调试
70 | 更复杂的loader的开发场
71 | 实战开发一个自动合成雪碧图的loader
72 | 插件基本结构介绍
73 | 更复杂的插件开发场景
74 | 实战开发一个压缩构建资源为zip包的插件
第八章:React全家桶和webpack开发商城项目 (10讲)
75 | 商城技术栈选型和整体架构
76 | 商城界面UI设计与模块拆分
77 | React全家桶环境搭建
78 | 数据库实体和表结构设计
79 | 登录注册模块开发
80 | 商品模块开发
81 | 订单模块开发
82 | 谈谈web商城的性能优化策略
83 | 功能开发总结
84 | 结束语
34 | webpack实现SSR打包(上)

34 | webpack实现SSR打包(上)

程柳锋
腾讯高级工程师,IVWEB团队社区和工程化负责人
84讲 84课时,约900分钟5474
单独订阅¥99
2人成团¥79
2
本节摘要
登录 后留言

精选留言(20)

  • der果
    老师,讲的超级棒!
    突然想问个问题,大厂是怎么个工作流程。比如码农们提交了自己的代码,之后都发生了什么,代码就被发布到了服务器。我们现在都是最原始的流程,一个人本地打包,然后FTP到服务器,我想大厂不会这么low的,老师说一下大概流程吧,多谢(o^^o)

    作者回复: 大厂是有一套比较完善的CI/CD工作流程,比如:Gitlab CI或者Jenkins CI等等。每次代码push都会经过CI阶段,会开一个Docker镜像跑任务。进行代码打包构建、单元测试和代码ESLint检查。

    如果没问题,则会进行测试环境或者生产环境的代码部署,这个阶段会经历Code Review,打出版本包,包升级下发到指定机器。然后完成部署流程。

    2019-07-03
    8
  • 小石头若海
    有一个问题想请教下老师,SSR的本意是在server端拿到数据后渲染成html,一次性发到客户端,可以免去客户端的请求。

    但是假如这个请求就是比较耗时,server端处理的时间不是变长了吗?这是不是会导致服务响应的时长变长?从而导致客户端的白屏时长变长?
    2019-08-15
    4
  • 金樽明月
    越来越有意思了,哈哈

    作者回复: 后面干货多多,哈哈😄

    2019-06-28
    4
  • 北至
    老师我在写代码的时候发现了个小坑,但是搞不懂为什么

    node index 和 node server/index
    前者开启的页面无法显示图片,后者可以;或者说前者无法找到图片,后者可以找到图片(路径没错)

    可否解答下,或者其他同学懂得的也可以回答下
    2019-09-26
    1
    1
  • Geek_295b96
    老师,为什么之前的事件,ssr打包以后,没有了响应呢?
    2019-08-17
    2
    1
  • 刘小宅
    为什么我们在做ssr服务器端渲染的时候, 没有在webpack.ssr.js文件的output设置libraryTarget: 'umd',
    则会报错,这个配置在webpack服务器端ssr渲染当中,起的作用是什么, 我们每次进行服务器端渲染的时候,都是需要加上这个配置的吗

    作者回复: 这个是因为做SSR的时候Node.js 需要去 require 我们生成的这个 js 文件,而 Node.js 的包管理遵从 commonjs 规范,因此构建生成的这个 js 文件需要兼容 commonjs,否则无法再 Node.js 里面进行 require。

    服务端渲染的构建都需要这样设置

    2019-08-13
    1
  • developer_hsl
    const SSR = require('../dist/search-server');
    console.log(SSR); // undefined
    不知道为什么
    2019-07-10
    6
    1
  • 大海
    打包已经生成umd格式了,为什么还需要前端源代码不能用es6的import
    2019-11-06
  • coder
    在处理`document`的问题时,有一些操作是多余的。

    在这一行中:

    ````
    const entryFiles = glob.sync(path.join(__dirname, 'src/pages/*/index-server.js'));
    ````
    已经将(并且只将)做SSR的入口文件路径摘取出来了(即包含且仅包含index-server.js文件的路径),其它不准备做SSR的`index.js`自然不会被调用到,所以也不会访问到`document`。这样,后面的操作,包括match入口文件夹名称,以及是否需要加入`htmlWebpackPlugins`的判断都可以不用做了。
    2019-10-28
  • coder
    客户端渲染和服务器端渲染的区别,在“可交互”这一条,没太理解彼此的区别,可以稍微展开说说吗?
    2019-10-28
  • 刘先森
    // webpack.ssr.js
    output: {
        path: path.resolve(__dirname, 'dist'), // set the dir path of output
        filename: '[name]-server.js', // set the name of the bundle filename
        libraryTarget: 'umd',
      },

    //src/search/search-server.js
    const React = require('react');
    const logo = require('./imgs/logo.png');
    require('./css/search.less')
    const a = require('./tree-shaking').a;

    class Search extends React.Component {
      constructor() {
        super(...arguments);
        this.state = {
          Text: null
        }
      }

      loadComponent() {
        import('./text.js').then((Text)=>{
          this.setState({
            Text: Text.default
          })
        })
      }

      render () {
        const {Text} = this.state;
        const funcA = a()
        return <div className="search-text">
          search text test watch { funcA }
          { Text ? <Text /> : null }
          <div>
            dev server
          </div>
          <img onClick={ this.loadComponent.bind(this) } src={ logo }></img>
          </div>
      }
    }
    console.log(Search)

    module.exports = <Search/>;


    打包后的search-server.js 好像没有抛出任何东西?
    // server/index.js

    const SSR = require('../dist/search-server');
    console.log(SSR)

    ssr 是undefined
    2019-10-27
  • 刘先森
    const SSR = require('../dist/search-server');
    console.log(SSR)

    ssr怎么是undefined?
    2019-10-27
  • D-DRAGON
    npm run build:ssr 是生成 dist 文件
    node server/index.js 是走 webpack.prod.js 启动服务器是吗?
    2019-10-09
  • 刘彪
    有个问题:服务端渲染是不是需要node搭建服务器,用其他语言行吗?

    作者回复: 是的,需要服务器支持。其它语言也是可以的,不过前端开发最好还是使用Node.js作为中间层更加合理点。

    2019-09-17
  • 西府海棠
    老师为什么加了
      optimization:{
            runtimeChunk: {
                name: 'runtime'
            }
    }
    这个代码打包出来的 search-server就没有东西了
    2019-07-03
  • 西府海棠
    讲的东西是真实用,真希望快点😆

    作者回复: 嗯嗯,努力更新中

    2019-07-03
  • 菜鸟
    老师讲的好棒👍👍期待下一期

    作者回复: 感谢夸奖

    2019-07-02
  • KI
    老师,您好,根据您的视频来操作,运行node server/index.js后,报错Error: Cannot find module '../dist/serch-server'是怎么回事?

    作者回复: 你需要检查下 dist 目录是否生成了这个 search-server.js 文件。

    可以对比下:https://github.com/geektime-geekbang/geektime-webpack-course/tree/master/src/chapter03

    2019-07-02
    1
  • 陈森
    老师好棒

    作者回复: 哈哈,感谢夸奖

    2019-06-30
  • 蜗牛
    喜欢老师讲课 挺实用的

    作者回复: 谢谢夸奖

    2019-06-29
收起评论
看过的人还看
TypeScript开发实战

梁宵  搜狗营销事业部高级架构师

47讲 | 3037 人已学习

拼团 ¥99 原价 ¥129
浏览器工作原理与实践

李兵  前盛大创新院高级研究员

43讲 | 6269 人已学习

拼团 ¥79 原价 ¥99
Node.js开发实战

杨浩  腾讯高级工程师

57讲 | 3865 人已学习

拼团 ¥99 原价 ¥129
重学前端

程劭非(winter)  前手机淘宝前端负责人

58讲 | 33105 人已学习

拼团 ¥69 原价 ¥99